10 AWS Services Every Developer Should Know About

I’ve been working more than 10 years with AWS. And every time I start creating a new application, I use most of the following services.

Some are easy to use. Some are harder. But all are must-known services when starting an application in AWS.

EC2

I can’t talk about AWS without starting by EC2.

With EC2, I can rent a server per paying only the minutes I use it.

With EC2, I can run a server and use it with whatever I want. I can run inside a web server, a batch operation, a database or more.

AWS allows me to configure it with many available OS, Linux, Windows or even an optimized version of Linux specifically designed for EC2.

And what about the size? Fully customizable. I can choose the memory I want, the CPU I want, and attach the hard drive I want. And if my requirements change in the middle of the process, I can upgrade it with a simple click.

S3

S3 is such a powerful service that allows me to store any file with high availability everywhere in the world.

It can have public or private access.

I can even store different versions of the file.

And the best part, is that I can serve an entire static website from S3.

RDS

On the other side, I have RDS. S3 is very useful for static data such as files, images or videos. But RDS is used for dynamic data. RDS is a relational database fully managed.

I can have the most used databases as MariaDB, Microsoft SQL Server, MySQL, Oracle or PostgreSQL.

The best advantage of RDS is that it’s fully managed. What does that mean? It handles minor upgrades of my database with no actions from my side.

Fully managed means also that the database can be distributed across several regions around the world to reduce latency without any action from my side.

Even if I want a master-slave configuration, no actions are required from me.

What about the storage or the CPU and memory capacities? As with EC2, I can choose an initial configuration, and if I need an upgrade, a simple click is enough.

Secret Manager

When using a database, I need to manage the password securely to access it. When using external web services, I also need to manage securely the credentials.

There are many reasons my architecture need at some point to manage passwords. The SSM or Secret Manager is an AWS service which allows me to store passwords securely across all the AWS services.

I can configure the visibility per services or roles.

Lambda

EC2 is fine to run a server if it will be available 24/7. Or If it has a stable load.

What if my application has a very fluctuating load?

AWS Lambda allows me to pay per request. When my application receives one request, the server starts, handle the request and shuts down until the next one.

This can reduce my costs significantly.

AWS Lambda already connects the web requests to a method of my project. I don’t need to configure a web server, it’s already managed by AWS Lambda.

And AWS starts as many Lambdas as incoming requests. This can also be risky, as the costs can increase if I don’t configure correctly the maximum accepted Lambdas.

SQS

SQS is a managed service for asynchronous events. It’s like Kafka or RabbitMQ, but managed by AWS.

I send messages to an SQS Queue, and have another service reading the messages when available.

With SQS I can have many applications which add messages to a queue, and many others which read messages from the queue.

SQS is a managed queue service. I don’t have to care about configuring servers to handle 10 messages per day or 10.000 messages per minute.

ECS

Nowadays, the microservices architecture is used everywhere. But by itself, the microservices architecture has already a lot of complexity.

ECS manages for me a microservices architecture. It handles the services running, manages their autoscaling rules, the resources consumption, the rollout strategies and more.

VPC

The VPC allows me to create a private network. A network where to place all the services I want.

I can then configure my VPC to have public or private access from the Internet.

All the services I place inside a VPC will be visible between them.

I can then create subnets to have a more grained configuration.

CloudWatch

Ok, I can deploy many services in AWS. Ok, I can configure the resources dynamically. But I need to monitor all of this.

CloudWatch is here to monitor every single resource in AWS. CPU, memory, burst, free space, IO…

No need to include any advanced monitoring system. CloudWatch is here by default!

SNS

And finally I can trigger notifications based on my CloudWatch metrics with SNS.

I can send emails when a metric goes wild. I can send SMS to all people in the team.

Conclusion

There are plenty of other services in AWS.

But most of the applications I’ve built in AWS use the 10 services described before.

My New ebook, How to Master Git With 20 Commands, is available now.

4 responses to “10 AWS Services Every Developer Should Know About”

  1. Route 53? I suppose you could say they could use any DNS provider

    Like

    1. I also thought about Route 53, but when making the list, I don’t know which one to remove to include Route 53.

      Liked by 1 person

      1. 11 AWS services every developer should know? 😂

        Like

Leave a comment

A WordPress.com Website.