What is serverless computing?
In one word serverless is the ultimate abstraction of IT infrastructure for compute function which takes away a lot of pain of developers to go straight in to developing applications. They don’t need to worry about what’s going at infra level at all. They can simply upload their code and functions will be executed at the trigger of an event. See the below image to see how we have advanced to serverless :
This started changing when AWS introduced IaaS. Suddenly you were able to provision servers using APIs, you no longer need to worry about your hardware, you can now spin up servers in a matter of minutes
But you still need to worry about Infrastructure and something can still go wrong, what if it gets crashed, what if it gets hacked. That’s when Microsoft came up with PaaS offering. You just need to push your codes, VMs and run time environment could be set up automatically. You were no longer responsible for servers But then you still had to worry about servers.
Then came containers which are light weight alternatives to full blown virtualization and isolated but still need to be deployed in servers. Plus they have their own house keeping challenges. You still need to worry about keeping your containers, running your stuffs to worry about scaling, response to load etc.
Then came Lambda and server less computing was born. You are able to take your code without being concerned about managing the server.
There are quite a few service providers offering FaaS. Some of them are :
Google Cloud Functions
IBM Cloud Functions
Apache Open Whisk
What are some of the Top Use cases of Serverless ?
The technology looks amazing but what are it’s applications. Practically every monolithic application can be broken down to micro services and all microservices can be further broken down to 100 different serverless functions. Presently not all the applications are cloud native and there still is a hesitation from the customers to adopt this architectuer. Some of the key use cases for serverless are shown in the below figure.
Serverless requires a new architecture of developing applications. Start small, start with less critical applications, perhaps few automation tasks or event driven use cases. According to a research done by The New Stack, Web services are the top planned use case for Faa
Serverless computing comes with a compromise too. Some of the shortcomings which you should know before you choose serverless are :
1. Portability of application is an issue. You may end up locked in with a particular vendor. In case you are not happy with your vendor there is a lot which you will need to change and migrate to another vendor
2. You will have limited to no control over the infrastructure on which your application runs
3. Flexibility of architecture also gets compromised