Serverless Computing

What is Serverless Computing?

 
Serverless is an event-driven, auto-scaling, micro-billing cloud architecture that handles the infrastructure management for you and asks you to pay per resource execution and consumption time.
 
While building serverless applications you don’t need to invest time in infrastructure provisioning or management, for example - creating servers, installing updates, patches for OS, or managing how the application will scale. Instead, you use a set of fully managed, highly scalable cloud services that take care of this part for you.
 

The Evolution of Application Platforms

 
Back in the day, to host an application, organizations had to buy their own servers and do all the installations and patches by themselves which used to be time-consuming and expensive. This is what was know as on-premise hosting. This form of hosting had its own share of problems like dynamic upscaling and downscaling with respect to demand was not possible to address a predicted/suspected uptake in network traffic. It would require the installation of additional servers. But post that predicted period of higher network traffic, the newly installed servers would lie dormant, costing the organizations a lot of money.
 
To address such issues, a new way came into the market which was known as IaaS; i.e., Infrastructure as a Service. This was the first step for many organizations and enterprises going towards the cloud. IaaS handled a lot of things that an organization or enterprise would have to do on their own with an on-premise setup like virtualization, server installation, setting up storage devices, and handling the network setup. But still, some tasks were still lying on the organization's plate to be handled like, How often should I patch my servers? How often should I backup my server? Which OS should I use?, Who monitors my app? and a few such concerns.
 
So to address these questions, we went to yet another new approach called PaaS; i.e., Platform as a service. With PaaS, a lot of the things which used to lie on the plates of an organization were handled by cloud providers. By using PaaS, you only had to focus on your application and its data, without worrying about the infrastructure management. Yet there were still a few questions to address as in, How can I increase my server utilization? How many servers do I need? How can I scale my app?
 
Thus Serverless came into the picture. Serverless computing is a cloud execution model that primarily does the abstraction of infrastructure management. With Serverless computing, your cloud vendor manages the provisioning and maintenance of the infrastructure management, letting you focus on business requirement and bills you on a pay per resource execution and consumption basis. With serverless, you don’t need to be worried about provisioning VMs and middlewares to run your application or about adding up load balancers to route traffics or paying for idle resources. Serverless lets you focus on solving your business requirement instead of worrying about infrastructure management.
 

Real-World Analogy

 
Serverless computing is serverless in the same sense as Uber or OLA or Lyft is car-less or OYO is hotel-less. When you take an Uber, a car is technically involved but you don’t have to be worried about any of the hassles typically associated with a car like EMI payment, maintenance, payment of insurances, and any other things involved with ownership of the car. Same goes with OYO rooms, living space is typically involved but you don’t need to worried about any hassles normally associated with buying/leasing a space for your stay or regarding cleaning and maintenance of the living space or property.
 
Serverless, Uber, and Oyo have the same value proposition: Sit back and focus on your task while outsourcing the inconvenience, making your life easy.
 

Advantages of Serverless Computing

  • Infrastructure Management
  • Micro-billing
  • Auto Scaling
  • Event-Driven
  • Reduced DevOps
  • Rapid Development and Deployment
  • Write your business logic with the language of your choice
  • It Provides stateless logic function instances 

Areas of Improvement for Serverless Computing

  • Control of Infrastructure 
  • Long-running server application
  • Avoiding vendor lock-in
  • Cold Start
  • Shared Infrastructure
  • Limited number of development and testing tools available

Existing Serverless offerings

 
There a quite a few cloud vendors who offer serverless offerings in their suite. Amazon Web Services provides AWS Lambda to leverage the power of serverless computing. Similarly Microsoft Azure Provides Azure functions and Azure Logic Apps, Google Cloud Platform provides cloud functions and IBM has its own version of cloud functions and similarly, there’s one from Apache known as OpenWishk.
 

Conclusion

 
Serverless Computing is just another way of software development that helps you focus on the actual business requirement instead of worrying about the upfront cost associated with the setup or installation of security patches and post-production issues like upscaling and downscaling servers. But going serverless does not mean that there are no servers involved. Servers are still there but now you are the resources of a third-party vendor, in our case a cloud service provider, and in exchange for the resources, you pay him per execution time of the resource. This can be a cost-effective and less time-consuming approach but not in all cases. In case you need some background service that needs to run 24 x 7, then going for a PasS or IaaS would be a wiser choice. In the end, it all depends on the architecture of your application and the business requirement to decide, which cloud execution model you want to go ahead with.