Cost optimization, better flexibility and efficient resource management are some of the key factors fueling the growth of Cloud infrastructure. Serverless Computing is another step in this direction.
Serverless Computing, also knows as function as a service (FAAS), is a Cloud-computing model where the Cloud provider completely manages the container that processes the service request. The name “Serverless Computing” is kind of a misnomer. It does not mean that function calls are Serverless, rather it implies that the Cloud provider manages the container that runs the functions. In short, it adds another layer of abstraction to monolithic application development. I personally see this as another step in scaling down the atomic unit of computation. From virtual machines to containers and now a step further where even functions can be hosted on Cloud.
Serverless Computing at times gets confused with micro services architecture. So how does it stand out – micro service is a common interface that any consumer can call to perform a specific task. It internally has functions that may leverage Serverless architecture. Developers can grab these functions on the fly to assemble micro services without provisioning any dedicated resources.
Some commonly used Serverless Computing models are:
- AWS Lambda
- IBM’s OpenWhisk (Open Source)
- Microsoft’s Azure Functions
- Google’s Firebase
Common Use Cases
Both Startups and mature organizations should consider Serverless Computing architectures during application development or migration in Cloud. Monolithic applications are primary contenders for Serverless Computing. Batch processes that run frequently may not require independent virtual servers. As such they should always be evaluated for Serverless Computing.
Moreover, micro services that leverage common utility functions can also use Serverless Computing platforms. Video Encoders, Online Tutorials and Image Processors are some other use cases for Serverless Computing. “aCloud.guru”, a widely used online AWS training portal, is entirely built using AWS Lambda and S3(Simple Storage Service).
Serverless Computing could be highly cost effective. In most cases you only pay for the lines of codes executed. For Use Cases that qualify, significant savings are expected, as no dedicated virtual servers need to be provisioned.
It furthers resource optimization. Most Cloud platform supports Node.js, Swift, Java and Python. This lets developers focus more on building micro reusable functions. JSON helps with auto serialization and deserialization of function request and response parameters. As such, concerns regarding multi threading and HTTP request processing are alleviated.
While Serverless Computing is great for monolithic application development, not all use cases qualify. In some cases where a particular function sits idle for most of the time, such functions may see performance degradation. This happens because the Cloud provider may choose to shut down dormant processes. For example a Java function may experience JVM restart related latency if it is not being used intermittently. Also, Serverless Computing is not the best option for compute intensive applications as Cloud provider may limit the resources provisioned for Serverless Computing.
Serverless Computing is a step up towards developer’s efficiency. It brings forth developers point of view. Here, virtual infrastructure concerns melt away. Developers now can do what they are expected to do – build software from scratch. Serverless Computing is in its very nascent stages. Organizations are still grappling with efforts tied to Cloud migration. However, as Cloud adoption grows stronger, benefits of Serverless Computing will become more palpable and enticing.