Where do you start on AWS? Which are the core services you really need to know? Let's look at an example application and EC2, RDS & S3.
Amazon Web Services (AWS), is one of the most popular cloud services out there. Having knowledge in AWS is a highly sought-after skill and it seems very likely that demand will only rise in the future.
For those with experience in software development, but no experience with AWS, the platform and the huge number of services it provides, can seem daunting at first.
However, there is just a handful of core services you really need to know about to get started. We will look at those and how a typical stack maps onto the AWS infrastructure.
Imagine we have a typical application. It runs some code, writes to and reads from a database, and stores and serves (multimedia) files.
I am sure that you have encountered multiple web applications that were quite similar. On a typical infrastructure, this type of application runs on a server with an attached (network) drive to store its files and interacts with a database running on a separate server.
To understand the core AWS services, let's see how we would host our sample application and which cloud services are involved.
We can think of Amazon Elastic Compute Cloud (EC2) as virtual machines. Their main purpose is to run and host your application. When it comes to code execution the main resources we need are CPU and memory (RAM). Therefore, EC2 instances come in several types with different CPU and RAM configurations.
Depending on the workload executed by your application you might choose between balanced general-purpose, compute-optimized, memory-optimized or some of the other images.
Once your EC2 instance is up and running, it's really no different a Virtual Private Server (VPS) on any other platform and you typically interact with it via SSH.
Yes, you can host your database on EC2 instances, but then you would have to deal with scaling, availability, and replication on your own. Those are things you probably don't want to do on your own.
Meet: RDS & DyanamoDB
Relational Database Service (RDS) and DynamoDB are two of the database solutions we can use on AWS.
RDS offers relational databases by several providers, while DynamoDB is a NoSQL solution offered by Amazon.
These two solutions have a major difference in their pricing. RDS instances are primarily priced by the size of the instance, making them somewhat similar to the EC2 model. Whereas DynamoDB is fully managed and the cost is purely based on your usage (storage size, writes, and reads).
The third, and final essential service is Amazon Simple Storage Service (S3). Many applications need to store files (uploaded by users) somewhere. In the on-premise case, this is often done by mounting a filesystem.
On AWS, we can use the fully managed file storage system S3 to save and delete files like images and videos. The best part about this service is, that those files on S3 already come with their own URL and can be made directly accessible without passing through our application. Therefore, S3 also acts as a server providing our static assets. Just like DyanmoDB, S3 is a fully managed service and we don't have to worry about provisioning, but will just pay depending on our actual usage of the service.
The three core services we need for almost any web application are
EC2 - a VPS solution to host and run our code
RDS or DynamoDB - (Fully) managed database systems
S3 - File hosting and serving of static assets