Serverless has emerged as a growing trend, providing technology enthusiasts with a new way of building applications. The term 'serverless' is misleading though and does not mean that servers are not required. Serverless is an abstraction of servers that enables teams to focus on addressing actual business problems rather than carrying out repetitive infrastructure management tasks.
Serverless computing is event-driven and reacts to real-time requirements to match any workloads instantly and flexibly scales from zero to thousands of simultaneously running functions in seconds.
The makings of a serverless application
NoOps server management and capacity planning are no longer the concerns of developers. This allows them to focus on core tasks, instead of worrying about server provisioning, operation, and maintenance.
‘True’ pay as you go (or pay-per-execution) – As compared to a cloud computing model where you need to pay even for the idle resources, serverless computing restricts charges to actual usage of services while the code is being run rather than pre-provisioned capacity.
Auto-scaling – Serverless computing automatically scales capacity to handle any surges in traffic.
Production speed – Shorten the innovation cycle of having an idea and deploying it to production. As serverless computing enables developers to focus only on codes, smaller teams can ship more features at a faster pace.
How to get started?
To start with, one needs to understand the options available to an enterprise looking forward to building applications with serverless architecture. Broadly, there are a couple of approaches that can be followed depending upon the needs of the organization.
- Leverage services provided by a cloud service provider. Enterprises can opt for serverless computing platforms provided by vendors such as AWS, Azure, Google, and IBM. For someone looking at on-premise deployment options, AWS (via Lambda Greengrass), Microsoft (via Azure Functions runtime), and IBM (via OpenWhisk) provide on-premises/dedicated software versions of their serverless technology that integrates with each respective provider’s services. According to the Cloud Native Technologies Foundation (CNTF), 70% of organizations currently using serverless technologies are on Amazon's Lambda platform, 13% are on Google's Cloud Function, and 12% each on Apache OpenWhisk and Microsoft's Azure Functions. But this approach has a major drawback of data lock in on a single vendor.
- Utilize serverless frameworks that can be deployed to a VM on public or private cloud. Offerings like Red Hat’s fabric8, serverless framework, and Platform9 Systems’ Fission provide an open source framework that builds and deploy applications to any cloud provider with a consistent experience. Such frameworks automatically configure the cloud vendor settings, based on the language and the provider used.
The only challenge with this approach is loss of fidelity – Suppose a vendor launches a new feature, one has to wait for the same to be available on these serverless frameworks, and in case someone wants to migrate to another provider, the equivalent feature must be available with that provider.
Serverless vs containers – Building the case for serverless
Containers package software into standardized units to make it easier to manage application dependencies and deliver environmental consistency, operational efficiency, developer productivity, and version control. It is a serverful architecture where you run a cluster of VM instances, with a likewise serverful cost model that requires developer’s time to manage the VM and its containers.
Serverless compute services are essentially ephemeral containers, which start or stop automatically as per the requirement. As compared to containers, the applications deployed on serverless computing platforms require zero-administration and scale automatically with demand, completely eliminating the need to manage server instances. Serverless applications are also code-centric and leverage benefits like pay per execution pricing model.
Serverless is revolutionizing the way we develop, build, and operate applications in the cloud. It forms strong use cases in analytics, artificial intelligence (AI) and IoT that involve cleansing, processing, and analysis of data.
Some simple and direct applications of serverless architecture are building modular websites and REST APIs. These can be built quickly and within a short time frame through serverless functions or frameworks. Serverless backend scales automatically with demand and hence, plays a pivotal role in cases, such as e-commerce sites experiencing a surge in traffic due to a new product launch, or a media website being subjected to enormous hits courtesy a content that has gone viral.
Event processing and streaming are other popular use cases that leverage serverless platforms.
A word of caution
It is vital to understand the economics of serverless technology. According to a report by 451 Research on direct expenditure on cloud services, serverless can be cheaper than VMs at lower levels of consumption, typically for less than 500,000 code executions. When compared to higher levels of code executions (greater than 500,000) or to VMs hosted on containers, serverless architecture is likely to be a cheaper option in terms of TCO, if there is considerable time involved in managing the VM.
Serverless computing is being embraced at a rapid pace because of its simplicity, ease of use, productivity enhancement, and cost efficiency. However, it becomes immensely important to continuously monitor serverless applications for health problems, invocations time, and errors. Otherwise, it may result in a drastic surge in costs or service interruptions. Enterprises should work out the costs across different deployment scenarios and asses how expenditure will be affected, depending on the application growth or shrinkage.
More and more developers are moving to serverless revolution due to the flexibilities it offers. With increasing support for various languages, maturing frameworks, and pricing competition among vendors, serverless technology is on its course to gain more traction for a wider adoption by organizations.