AWS currently offers over 200 different fully-featured services, but not all of them are serverless. How can we tell whether a service is serverless or not?
AWS currently offers over 200 different fully-featured services, but not all of them are serverless. How can we tell whether a service is serverless or not?
The Serverless computing wikipedia article starts with the following paragraph.
Serverless computing is a cloud computing execution model in which the cloud provider allocates machine resources on demand, taking care of the servers on behalf of their customers. [...] However, developers of serverless applications are not concerned with capacity planning, configuration, management, maintenance, fault tolerance, or scaling of containers, VMs, or physical servers. [...] When an app is not in use, there are no computing resources allocated to the app. Pricing is based on the actual amount of resources consumed by an application. [...]
Let us use this as our definition of serverless. When summarized we can derive three main characteristics of a serverless service. Machines managed by the provider, no capacity planning and a "pay as you go" pricing model.
Machines are managed by the provider. The cloud provider allocates machines on demand and takes care of the allocated infrastructure. As a customer you do not have to buy or manage physical hardware in datacenters.
No capacity planning is required. With a truly serverless offering, you as a customer, don't need to plan for capacity. Instead, the required hardware for your application is scaled automatically by the cloud provider. This applies both to handling of fault tolerance, as well as scaling for capacity reasons.
The pricing model is "pay as you go". Whatever you pay depends on the actual amount of resources you use. This is in contrast to other models on the cloud such as a VPS, where you would pay for reserved resources instead of your actual use of them.
With this information, we are able to determine whether a given AWS service is truly serverless. Let us look at a few popular services and how we apply the three rules.
Let us look at five services from the Top 10 AWS Services:
When you use S3 for file storage, you do need to manage how and where your files are stored. S3 does this automatically and handles scaling and fault tolerance for you. There is no need to do capacity planning with S3 and the pricing is pay peruse. The cost of S3 depends on the size of the files we are currently storing in the cloud and the traffic caused by file transfers.
Therefore, S3 is serverless.
EC2 instances require you to manage the software on these VPCs. This service alone provides neither automatic scalability nor fault tolerance. Additionally, even if an EC2 instance is idling, you still need to pay for its full capacity.
EC2 is clearly not serverless.
Lambda is a core service for serverless architectures. The underlying system a function is executed on does not require managing and Lambda automatically scales out to massive concurrency. Its cost is based on the number of function calls and a combination of memory and time usage.
Lambda is clearly serverless.
With the popular messaging service SQS you only need to define a queue name and AWS will take care of everything else for you. The service scales automatically and has built-in fault tolerance. It uses a pay-per-use pricing model, which depends on the number of messages.
SQS is one of the cornerstones of serverless architectures and is serverless.
Kinesis is a fully managed service. In the past, we needed to define shards beforehand. The number of provisioned shards determined both the maximal throughput, as well as the cost of using the service. However, nowadays Kinesis offers also an on-demand scaling mode.
With this Kinesis is now to a certain degree, serverless. However, due to the way Kinesis works, there are still limits to its auto-scaling approach.
With serverless services, you do not need to manage infrastructure, scalability and fault tolerance. At the same time, you only pay for the resources you really use.
As a result, you often save both time and money when using serverless. Therefore it comes to little surprise that many companies are moving to serverless architectures and AWS is heavily invested in this ecosystem.