The AWS Serverless services.
Serverless on AWS.
Thinking of going Serverless? Read this primer first.
I work with Amazon Web Services daily, and over the years, I have gotten intimately familiar with the many services the company has to offer. Still, not all of them are part of their Serverless stack. These last years I am very much focused on getting more in-depth on the Serverless topic. I’ll go and break down the various services that AWS labels as part of their Serverless Services.
In future posts, I’ll go in-depth into each of them to create a library of reference materials to fall back on in my daily work when designing and running applications in the AWS cloud.
So, in all honesty, the main objective is a purely selfish one, but by posting them publicly, I hope that you — the reader that landed here on your quest for knowledge — will also get use out of this curation.
Before we dive into the actual breakdown of the services, let’s talk about what makes a service or application serverless in the first place? And why would I go and want to use Serverless?
Since the focus here is on AWS — I’ll go and use their definitions. I am sure, though, that there are many other good ones out there.
So, according to AWS, the fundamentals of a serverless service are no server/infra management, pay-for-use services, continuous scaling, and built-in fault tolerance.
Now, why would you or I want to adopt a serverless strategy? The two main reasons are that less time is spent on undifferentiated work — like managing servers/OS and infrastructure. Next to limiting overhead — It potentially allows for higher delivery velocity — all of this while using a pay-for-use cost model.
After this brief introduction to serverless in general, let’s dive into the matter at hand. When we look at the Serverless Services available, AWS divided them into the following three collections.
- Compute — we always need a place to run things.
- Integration — since nothing stands on its own anymore.
- Datastores — make it stick.
I’ll start with the first collection on the list — compute. Compute exists of two services, AWS Lambda and Amazon Fargate.
Lambda enables you to run code without providing or managing physical/virtual servers and has the significant benefit of only paying for the resources you consume. Billing these days is done on a millisecond level. Used for Functions as a Service (Faas).
Fargate allows you to run containers the serverless way. Same as with Lambda, no servers to manage, and billing is done on the second level.
Next up are the Application Integration serverless services. This suite of services enables the communication between decoupled components. A lot of this communication is done by using messages (JSON objects containing event details). It consists of the following services, Amazon EventBridge, AWS Step Functions, Amazon SQS, Amazon SNS, Amazon API Gateway, and AWS AppSync.
EventBridge enables us to build event-driven architectures, connecting application data from our apps, Saas, and AWS services.
Step Functions allows us to coordinate several AWS services into serverless workflows to speed up the building and update our serverless applications.
SQS enables us to decouple and scale microservices utilizing message queues that send, store and receive messages at large volumes.
SNS allows us to reliably send notifications on pub/sub, SMS, email, and mobile push.
API Gateway enables us to create, publish, maintain, monitor, and secure APIs at scale for serverless workloads.
AppSync allows us to create flexible APIs to securely access, manipulate and combine data from one or more data sources.
The last collection of Serverless services are the various data stores. Currently, there are four available on AWS. These are Amazon S3 (the OG), Amazon DynamoDB, Amazon RDS Proxy, and Amazon Aurora Serverless.
In S3, we can store any amount of objects. It scales, is highly available, performing, and secure.
DynamoDB is the high-performing key-value/document database that scales and delivers single-digit millisecond performance.
Aurora Serverless gives us a relational database that automatically scales.
RDS Proxy is not a data store but used to ensure that your RDS database can handle the scale, resiliency, and security required for our serverless solutions.
So that sums up all AWS Serverless services available at this point. If there are changes, I will update this post, so the information is always up-to-date.
My next step will be to add posts going into detail for each of the Serverless services and building a helpful spec sheet that I can use for quick reference.
I will add the links to the detailed posts when I finish them.