Top 5 AWS Services Every Developer Should know
AWS is a beast in cloud services and has more than 200+ services. It is not easy for a novice user to select the services that fit his need. Even after selecting the right service, you need to make sure you use it the right way because each service has many different variants. In this article, we will guide you about the top 5 most frequently used AWS services which every developer must know.
Morgan PerryMay 16, 2022 · 8 min read
CRO and co-founder of Qovery. Morgan is a Tech entrepreneur with 7+ years of experience in the SaaS industry.See all articles
What is an EC2 instance?
EC2 is the name of the virtual machines offered by AWS. It is one of the most frequently used services in the “Compute” category.
Where is it used?
You can use EC2 in any scenario where you need to come to compute capabilities. Note that you can use S3 buckets for static website hosting, which means EC2 is not the best choice for static website hosting. Here are some of the top use cases for EC2:
- Host any kind of software and website, whether it is a CRM, CMS, or even an enterprise-level SaaS-based application
- For development and testing environments. Remember you can purchase a tiny on-demand instance that will not cost you much. And you can scale your solution through an Elastic Load Balancer on EC2 instances.
- You can use EC2 instances for backup and recovery.
- High-performance computing. Compute intensive tasks need specialized chipsets and high-end GPU, and this hardware can cost you a lot, especially if you have a short-term need. For compute-intensive operations like graphics processing or machine learning, you can use those EC2 instances which are specialized for accelerated computing.
Which EC2 instance is best for you?
Find below a summary of common EC2 instance types and their usage:
- Use storage-optimized instances for data-intensive tasks like OLTP, databases, etc.
- Use memory-optimized instances for memory-intensive operations like OLAP, etc.
- Use compute-optimized instances for gaming, high-performance computing, machine learning, etc.
- Use accelerated computing instances if you have a need for graphics and pattern modeling, etc.
How to make the best use of your EC2 instance
- Use the right purchasing option for your need. E.g., Use a reserved instance if you have a long-term need, use a spot instance for non-mission-critical temporary needs, etc.
- Use the right EC2 instance based on your needs. There are more than 275 instance configurations, and selecting the right one is not easy. Here is a quick guide by AWS, which is helpful.
- Use standard IAM-based security measures to secure access to your EC2 instance.
- Use EBS volume for data persistence if you want your data to be persisted.
- Use elastic IP for your public-facing servers. Elastic IP is static public IP assigned by AWS to your EC2 instance.
What is S3?
S3 stands for simple storage service. It is used to store and retrieve images, video, and text, etc.
Where is it used?
Some of the top use cases for S3 buckets are the following:
- Static website hosting
- Storing backups and archiving
- Storing images, videos, text files, etc.
Which S3 type is best for you?
- Use S3 standard for static website hosting, log files, configuration files, and active multimedia content for your web application.
- Use S3 Infrequent access for backups. This is for data that cannot be reproduced.
- Use S3 one zone infrequent access for backups that can be reproduced. It is also good for cross-region replication.
- Use S3 glacier for cold backups and archives. Best for compliance-related data
- Use S3 glacier deep archive for cold archives, which need to be stored for a long duration e.g. 7 years. Best for financial or healthcare data for regulatory needs
How to make the best use of your S3 buckets
- Launch S3 bucket in your region to reduce latency
- Use CloudFront with S3 to deliver cached content of S3 to users.
- Use infrequent access or glacier for backups instead of standard tier. That will save a lot of money.
- Use the intelligent tier of S3 if you are not sure which bucket type is suitable for you. It will automatically place your objects in the relevant bucket based on the usage pattern.
- Keep your buckets secure through bucket policies.
Amazon Elastic Container Service (Amazon ECS)
What is Amazon ECS?
ECS is a managed service from Amazon which helps you deploy your containerized application effortlessly.
Where is it used?
You can use it to set up, run and manage containers on your ECS cluster. It provides built-in container orchestration, CI/CD, and supports serverless Fargate and EC2 instances for the ECS cluster. As it is a fully managed service, so you do not need to manage the execution environment (control planes, nodes, etc.)
Should you use serverless ECS or EC2 ECS?
If you are looking to move faster, do not have much DevOps expertise, and do not want to manage the ECS infrastructure yourself, then AWS Fargate is a better option. Fargate is also a good option if your workload is unpredictable and you do not need to have much control over the infrastructure.
EC2 is a better option if you want control over the infrastructure and have a tight budget (Fargate is slightly more expensive than EC2). You might also want to go for EC2 if you have a regulatory or compliance need where you need to have access and full control of the infrastructure, and you can manage the security of the infrastructure yourself.
How to make the best use of ECS in your project?
- Keep your containers stateless, i.e. use portable external storage like EBS or database.
- Keep an eye on the security of the container, infrastructure security, and the access to the container as well
- External libraries, dependencies, etc. should be part of the container image through static files
- Keep environment related configuration in environment variables or AWS SSM secrets manager
- Run only a single application process per container image
To improve deployment speed on ECS, check out one of our articles here.
What is SQS?
SQS is a managed service by AWS which provides a message queue to decouple the modern distributed systems.
Where is it used?
- Decouple different components of microservices and/or distributed systems so that they are not coupled to each other
- Buffer and batch operations. E.g., If you want your webserver to receive millions of messages per second, you can use a queue to receive those messages so the webserver can retrieve them.
- Combine SQS with SNS to send multiple copies of the same message to different queues for concurrent processing
Which SQS should I use? (Fifo vs. standard)
If the order of operations and events is critical, then you should use FIFO instead of the standard queue. E.g., To make sure that the user entered commands are executed in the same order.
Standard queues are used for the majority of the common use cases where you can ignore message duplication and order in which the messages are processed, e.g., processing a large number of credit card validation requests.
How to make the best use of SQS in your project?
- Try to have at least one queue per environment. E.g., do not use the same queue for staging and production. The queue itself is free, the message storage and data transfer are not.
- Ensure your queues are not public and setup proper IAM roles for them
- Set the visibility time out based on how much time your application takes to process a message. E.g., if your application can process a message in 10 seconds, then setting visibility time out to 15 minutes is too long, and setting 3 seconds is too small.
- Use the retry mechanism supported by AWS SDK.
- Use a dead letter queue for messages that cannot be consumed successfully.
What is RDS?
RDS is a managed service from AWS through which you can set up, manage and scale a relational database in the cloud. It is actually a database as a service from amazon.
Why prefer RDS over EC2-based databases?
If you do not want to manage the tasks like database provisioning, updating versions, and database security, then RDS is a better choice. The EC2-based database will give you more control over the security and administration, but you will have to manage the tasks mentioned above yourself. Also, with RDS, you will get many built-in features like disaster recovery, fault tolerance, read replicas, etc.
Where is it used?
If you want to set up a relational database for your application on the cloud, then RDS is the way to go. Note that for NoSQL, you will have to choose other solutions like Amazon DynamoDB, etc.
When should you use Aurora instead of RDS?
If you are a startup and want to use MySQL or PostgreSQL for a small to medium-scale application, then RDS is a better choice for you. Aurora is best if you want enterprise-level features in your database like high volume workload, built-in fault tolerance, etc., and you can afford more money.
How to make the best use of RDS in your project?
- Keep your database on the private subnet and do not allow public access. Only the webserver should be allowed to access it on specific ports.
- Enable automatic backups
- Use enhanced monitoring and performance insights to diagnose and troubleshoot any issues.
- Use multi-az failover if you want fault tolerance and high availability.
- Use read replicas if you want not only fault tolerance but also want to offload read-only workload to another database instance.
In this article, we walked through the top 5 AWS services that developers use very frequently. We discussed what a startup should know about EC2, S3 buckets, RDS, SQS, and ECS. As you might have noticed, it needs some level of skills and expertise to make the most out of these AWS services. This is where you can take advantage of Qovery, which will make sure that you take advantage of all the features of these services without going into the complexity posed by these services. In other words, Qovery is the best of both worlds, getting the most out of AWS but without the hassle of typical AWS complexity.
Deploy your apps in production on AWS in minutes
Qovery combines the power of Kubernetes, the reliability of AWS, and the simplicity of Heroku to deploy your apps on AWS.Deploy my apps