Skip to content

Serverless Computing, What is it and Why Should You Use it

What is Serverless Computing?

In the most general sense, serverless computing is an execution model where the cloud provider manages and maintains the servers for you. Technically, it isn’t serverless computing, but to you the user, you don’t have to worry about or deal with any servers. Since you don’t have to manage the servers, there are no infrastructure management tasks, operating system maintenance, application upgrades, or capacity provisioning.

Why use Serverless Computing?

Server Rack

As I mentioned above, operations are handled for you when you use a serverless computing model. This means that you can focus on what matters most, developing applications. The model lends itself to more agility when developing and operating a serverless application. Developers can focus on the application rather than the management of the application servers. The cost for running a serverless application is generally lower as well, certainly when you factor in the cost of operations.

An overview of Serverless Computing on AWS

When most people think of serverless, they think of AWS Lambda and Amazon API Gateway first. This was the genesis of the serverless moniker. AWS has a full suite of applications and infrastructure for which AWS manages the server for you.

Compute

Lambda, Lambda@Edge, and AWS Fargate are managed by AWS. Lambda lets you run code as a unit in response to an event. Lambda@Edge does the same in response to CloudFront events at AWS Edge locations. Fargate lets you run containers and scales, and manages the container infrastructure for you.

Storage

We are all familiar with Amazon Simple Storage Service, S3, which provides highly durable, scalable, and available cloud storage. AWS also offers Amazon Elastic File System, which provides scalable, elastic, network block storage for linux.

Database

Amazon DynamoDB provides NoSQL functionality and Amazon Aurora Serverless is an on demand, auto-scaling version of Amazon Aurora, Amazon’s custom built highly available relational DB engine, supporting multiple database flavors.

API Proxy

Amazon API Gateway is the magic service that makes it all possible, or at least easy. API Gateway is a fully managed service to create, publish, and maintain APIs at scale. This is the API front end to services like Lambda allowing easy access to your compute resources.

State Machine

AWS Step Functions make it possible to chain together and coordinate the components of distributed applications. They allow you to build discrete functions that can be coordinated together to form business logic. This makes it easier to write discrete, easily testable functionality and combine them at a higher level later.

Integration

AWS SNS is a pub/sub messaging services Amazon SQS is a messaging queue services. Both allow decoupling of microservices.

Analytics

Amazon Kinesis is a streaming data service providing similar functionality to Kafka, allowing you to load and analyze streaming data. Amazon Athena is a SQL interface to query Amazon S3.

Why Serverless computing will change the way you develop and manage applications

Serverless computing has obvious benefits, like low operational overhead and fast deployment. The not so obvious benefits are cost, flexibility, and a scalable microservice architecture. Many AWS managed services are far lower in cost than their managed counterparts. For example, a serverless application running on Lambda cost an order or magnitude less than a comparable application on EC2. The model itself forces you to build discrete logical code functions that are independently scalable. Your logical functions are connected by scalable integration components like SNS and SQS. The discrete logical functions that you build your application from allow you flexibility with development. Different developers can concentrate on different functions without dependencies as long as API contracts are maintained. These functions can also be developed at independent times, allowing you to fix bugs, add features, or change logic independently.

Advantages of Serverless over Containers

Serverless Computing

Containers are very popular. If you are building applications in your own data center, they are probably a good option to speed up application development and add flexibility to your deployments. At the end of the day, you still have to manage and maintain underlying servers. You also have to manage and maintain the containers. Managing containers is also part of some services that you can access in the cloud, like Fargate. Others, like Lambda do not have the overhead of managing servers or managing containers.

APIGateway and Step Functions make Serverless Viable

API Gateway and Step Functions are the services that make Lambda a viable application platform. Without them, Lambda are just logical functions, which are not really HTTP accessible. You could use the Lambda API to tie functions together on your own, but AWS has a better solution. API Gateway provides an API proxy front end to each individual Lambda function. It also provides a way to access different versions of your functions via URL. Step Functions are a service that allows you to build state machines so that you can write logic to determine which function should be called next.

Whether or not you decide to use serverless is a strategic question. We can help if you to decide if you are unsure if serverless is right for you.

Michael McCarthy

Michael is veteran software engineer and cloud computing aficionado. After starting his career as a Java software engineer, he evolved into a consultant, focusing first on enterprise content management and later on AWS. He is currently an AWS Cloud Practitioner and AWS Solutions Architect Associate, although he has held many more certifications in the past.

//