Serverless Computing
Serverless computing (also sometimes referred to as ‘Function as a Service’) is a new paradigm in computing architecture. Serverless computing is a computing model in which a client submits a request for executing a task. The server lifecycle and the resources are managed by a cloud provider and the client is charged based on certain abstract parameters like memory consumed, CPU cycles or time consumed at sub second level.
Note that serverless doesn’t really mean there is no server. It just means that from a client perspective, the server is a black box, which it need not worry about.
Why do we need Serverless Computing?
Serverless computing eliminates the need for clients to build and manage servers, and also eliminates the need to scale them up or down based on the traffic. Even when there is less traffic, still there is a certain minimum cost involved in keeping the servers running. Thus, Serverless computing provides cost advantage over traditional model.
Limitations of Serverless Computing:
1. Performance Issues:
Serverless Computing might lead to latency issues when the service being provided is not used frequently, since the cloud provider might spawn the server, only when requests are made. Depending on the time required to spawn the server, this might cause undesirable latency issues.
2. Limits on Resources:
Certain cloud providers might apply limit on the resources consumed by the clients and this might impact resource consuming tasks. The cloud provider’s specification needs to be carefully examined before choosing this model.
3. Troubleshooting:
Troubleshooting and debugging could be tedious with serverless computing, since it depends on the diagnostic tools provided by the cloud provider and there may not be a lot of flexibility on troubleshooting options.
Usecases:
Typical use cases of using Serverless Computing include, running image processing tasks, running social media data analytics etc.
Reference Implementation:
Amazon WebServices offers 'AWS Lambda' which is a serverless computing service.