“Build and run applications without thinking about servers” - that is a mantra that AWS would like you to follow. To support this mantra, AWS is offering you a comprehensive set of compute, storage, data, orchestration, API, analytics, identity, management and other services to help you build a serverless infrastructure to run your company on.

The benefits of going serverless: no server management to worry about, flexible scaling of resources, you only pay for what you use, and automated high availability.

Here are the major AWS Tools and Services for setting up and managing serverless systems.

AWS Lambda

AWS Lambda is the fundamental building block of serverless architecture on AWS. Lambda lets you deploy applications written using Javascript, Python, Java, C#, Ruby, Go or PowerShell without provisioning servers. You only pay for the time that your code is executing, to the sub-second metering. Lambda automatically scales your application and provides high availability with no scheduled down-time. Applications deployed on Lambda can replace traditional server applications deployed to serve APIs or to provide application back-end support on application servers such as Weblogic, Tomcat or IIS.

Lambda applications can also be configured to respond to events in other AWS resources such as a change in a S3 bucket, or a DynamoDB table, or a HTTP request that comes in through the API Gateway or data in a Kinesis stream or a CloudWatch event trigger. This opens up a whole set of possibilities to better architect your infrastucture and connect your applications together.

Amazon API Gateway

Amazon API Gateway lets you create REST APIs and WebSocket APIs that expose your business processes running on EC2 instances or on Lambda or other server systems, as APIs for internal or external application clients to consume. API Gateway provides the framework for controlling access, metering, throttling, caching, monitoring, logging and versioning of APIs.

AWS Fargate

Amazon ECS (Elastic Container Service) provides the insfrastructure to run your Docker containers on a managed cluster of EC2 instances on AWS. With AWS Fargate mode of deployment of containers on ECS, you don’t have to deal with server provisoning, cluster management and orchestration. You define the networking, storage and scaling requirements and Fargate takes care of the management.

Amazon S3

Amazon S3 (Simple Storage Service), one of the oldest AWS services, can be deemed the workhorse of AWS. In addition to being able to throw anything into S3 buckets, in the serverless context, a S3 bucket can be configured to serve a website without provisioning anything. A great example of using this feature: A typical one-page Javascript web application written in Angular could be deployed in a S3 bucket configured as a website and all the API calls from Javascript could go to an API Gateway that directs the calls to Lambda functions that encapsulate business logic and use DynamoDB tables for data storage - all these are serverless processes!

Source: AWS documentation

Amazon EFS

Amazon EFS (Elastic File System) is a fully managed NFS (Network File System) compatible file system using NFSv4.1 protocol. It can be mounted on one or more EC2 Linux instances simultaneously and can scale upto petabytes, growing and shrinking automatically as you add or remove files. Here is a scenario where EFS works really well: if you dynamically spin up a lot of EC2 Linux instances as part of a cluster, and these instances need access to configuration and data files and data storage - just mount the same pre-configured EFS file system on these instances.

Amazon DynamoDB

DynamoDB is a fully managed noSQL (non-relational) database that can scale to the extent that there is no practical limit to a table size! AWS takes care of hardware provisioning, setup, configuration, auto-scaling, replication across multiple availability zones for high availability, software patching and all other management tasks. You only have to worry about designing your tables and indexes in an optimized fashion and managing read and write throughput capacity units.

In November 2018, AWS announced an on-demand read/write capacity mode, which has simplified the configuration even further. Compared to the earlier provisioned read/write capacity mode, with the on-demand mode you don’t have to guess the read/write capacity any more, DynamoDB adapts rapidly to changing workloads automatically.

Amazon Aurora Serverless

Aurora Serverless is an on-demand, autoscaling version of the popular Aurora MySQL DB. Compared to the provisioned version of Aurora, with the serverless version, you specify the minimum and maximum resources for a DB cluster and Aurora will start up, scale up or down based on load and shut down the cluster automatically.

Amazon SNS

Amazon SNS (Simple Notification Service) is a highly scalable pub-sub messaging service that works really well with decoupled serverless applications, microservices and distributed systems. SNS works primarily in the “push” mode, where messages are pushed to the clients. Here are some scenarios where SNS works well: relay events among distributed applications, move data between data stores, send updates to a mobile application.

Amazon SQS

Amazon SQS (Simple Queue Service) is a fully managed queuing system that works really well with decoupled serverless applications, microservices and dsitributed systems. SQS works in the “pull” mode where clients pull messages from SQS queues. SQS queues can be configured to operate in FIFO (first in, first out) mode if necessary.

AWS Step Functions

AWS Step Functions lets you create visual workflows to stitch together components of distributed applications such as Lambda functions. With state machines, activity tasks and service tasks, Step Functions has a framework that facilitates the building of workflows that can connect multiple distributed applications and even steps involving human intervention such as a supervisor approving a request based on a email.

Amazon Kinesis

Amazon Kinesis lets you collect and process streaming data efficiently without provisioning any servers. You can ingest audio, video, application logs, website clickstreams and IoT telemetry data into Kinesis streams and configure applications to access the data for machine learning, analytics or other business processes.

Amazon Athena

Amazon Athena is a serverless system to query your data residing in S3 buckets using standard SQL. Athena does in-place querying of data, so no ETL (Extract, Transform, Load) processes are required. Athena works with data in CSV, JSON, Parquet, ORC and Avro data formats and can handle complex analysis, large joins, window functions and arrays.