Serverless — A quick look at Serverless offerings by AWS beyond Lambda

Nadir Saghar
Towards AWS
Published in
4 min readMay 30, 2021

--

credits Taylor Vick unsplash

You might have heard about Serverless computing services such as AWS Lambda, Azure Functions, Google Cloud Functions, and so on. They allow you to package your code as a function and run it without having to worry about provisioning, scaling, and managing the underlying infrastructure. Collectively, they belong to the class of services called Function as a Service or FAAS.

While FAAS may be the most popular one, it is definitely not the only game in town when it comes to Serverless. In this post, I will explore some of the other Serverless services offered by AWS.

But, before we get to that, we need to understand what Serverless actually means. There is a lot to unpack here.

One could say — computing that doesn’t require any servers is Serverless. But, that would be an oversimplification. In fact, that’s not true at all. After all, your code cannot run in a vacuum. It requires infrastructure to run on and that hasn’t changed with Serverless. What has changed though, is the fact that you as a developer/DevOps do not need to concern yourself with provisioning and managing the infrastructure.

You don’t need to manage servers or keep up with security patches for the operating system. You are no longer concerned with under/over-provisioning resources since Serverless services scale on-demand. Additionally, there is no upfront cost. You only pay for what you use.

With that out of our way, let’s take a look at some of the other AWS Serverless offerings besides AWS Lambda.

Amazon S3

Launched in 2006, Amazon Simple Storage Service(S3) is one of the oldest services offered by AWS. It is an object storage service that boasts of industry-leading scalability, availability, security, and performance.

- Provides a Web-based interface for storage and retrieval of objects.

- Has flexible storage tiers to choose from based on your access patterns.

- Lifecycle policies to automatically move objects across tiers.

- Fine-grain access control using ACL and Bucket Policies

  • Deep integrations with other AWS Services.

DynamoDB

DynamoDB is a highly scalable, fault-tolerant, and extremely low latency(we are talking about single-digit millisecond performance at scale) key-value (NoSql) database service.

- It is fully managed — patching, maintenance, and recovery happen behind the scenes without affecting the service.

- You can enable Streams to track modification to the database.

- By enabling DAX(caching), the read performance can be improved even further, from milliseconds to microseconds.

- You can fine-tune performance by provisioning IOPS or if the load is unpredictable you can go with on-demand scaling.

Aurora Serverless:

Amazon Aurora is a proprietary database purpose-built for the cloud. Aurora Serverless is an on-demand, auto-scaling configuration for Amazon Aurora.

- It automatically starts up when a request is received and shuts down during the idle period.

- Version 2(in preview as of writing) scales instantly from hundreds to hundreds of thousands of transactions in less than a second.

- Scales automatically based on the load so you don’t have to worry about overwhelming the service. Although, it is better to be cognizant of your peak load scenarios and fine-tune your app accordingly.

- Since you don’t have to manage dedicated database capacity, you can realize a cost savings of as much as 90%

Fargate

Everybody loves containers. But, containers need to be orchestrated and managed. Amazon offers a couple of options for orchestrating your containers: Elastic Container Service(ECS) and Elastic Kubernetes Service(EKS).

Before Fargate, it used to be that you had to manage the underlying EC2 instances where the containers would run. Not anymore, unless you really want to. Fargate removes the need to provision and manage servers, lets you specify and pay for resources per application, and improves security through application isolation by design.

- Works with both ECS and EKS

- You allocate CPU and Memory for running your tasks/pod and get charged accordingly.

- Each task/pod grabs an IP available in the subnet. Thus, you must ensure enough IPs are available for it to be able to scale.

- There is a high degree of isolation between each task that runs on Fargate, thereby improving security.

SQS and SNS

Amazon Simple Messaging Service is a fully managed message queuing service that enables you to build decoupled applications. As the name indicates, it is really simple, especially when you compare it to the traditional JMS and/or AMQP compliant message brokers.

- Supports standard as well as FIFO(ordering preserved) queues.

- There is no administrative overhead nor there is any upfront cost.

- It is highly fault-tolerant. Multiple copies of every message are stored redundantly across multiple availability zones so that they are available whenever needed.

Step Functions

This one is one of my favorites. AWS Step Function is a service that orchestrates your Lambda lambda function and other supported AWS services to build powerful applications. You build a workflow composed of several services, where the output of one service is fed as input to the next.

- Outsource handling of common error conditions, retry logic, rollbacks, delays, etc to Step Function and focus on application logic

- Improve resiliency by providing checkpoints to resume processing if a failure occurs.

- Step Functions can be triggered by an event or can be invoked using its API.

Final Thoughts

This field is evolving rapidly. With the flexibility and cost-saving offered by Serverless, I wouldn’t be surprised if, in the near future, the majority of services offered by public cloud are Serverless.

--

--

Software Engineer/Solutions Architect. AWS Migration Expert. Distributed Systems. Cost Optimized Architectures.