The usual taxonomy of cloud computing has two main sections: infrastructure as a service (IaaS) and software as a service (SaaS). With IaaS, you get the virtual equivalent of a computer that you control much as you would a real computer over the network. With SaaS, you get an application, like Salesforce.com or Microsoft Office 365. There is also platform as a service (PaaS), which provides a cloud-based set of features, generally for developers to build cloud applications. PaaS, I would argue, is just a specialized form of SaaS.
But another model, called serverless computing, is different from and more virtual than all the others. A serverless application is just code running on a cloud, accessible through a URL. Supported by all the major cloud platforms, “serverless” has two meanings in the market today: functions as a service (FaaS) and back end as a service (BaaS).
FaaS is an event-triggered, stateless function. Importantly, the function runs in a container managed entirely by the cloud provider. BaaS refers to client-side applications, typically complex web pages, that make extensive use of third-party, cloud-hosted applications and services, such as authentication and database, to manage state and data. I mostly discuss FaaS in this article.
So what is available?
Here are the serverless offerings from the major cloud providers:
Serverless architecture can be more cost-effective than renting whole servers, which inevitably have some idle time that you pay for. The price model for serverless computing is pay as you go, but it’s metered much more precisely than whole servers and usually includes a large number of free transactions. On AWS Lambda, the oldest of these services and therefore the trendsetter, the first 1 million requests per month are free. Azure has a similar model with the same free, monthly grant.
Plus, since the cloud provider is responsible for scaling capacity to demand, the developer or systems architect does not need to build autoscaling groups or instrument servers based on demand. If your application needs to grow quickly from 10 requests to 1,000 requests per second, the provider does the scaling without any configuration or other work on your end. The provider also handles all resource provisioning and management, including CPU, memory, storage, and network capacity. You no longer need be concerned with whether you have enough memory or CPU to handle capacity.
Cloud development usually combines developers with architecture and operations staff, and serverless computing should diminish the need for the latter. You may get better developer productivity as a result, as developers will probably be freer to build and experiment with new serverless functions.