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?
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.
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.
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.
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.
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.
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.
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
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.