What is Serverless Computing
There is lots of buzz about Serverless computing. A brief introduction on what is Serverless computing is all about.
Serverless computing can be classified into following categories:
1. Applications that depend on third party services in the cloud to manage the server side logic and state (aka BaaS — Backend as Service).
2. Applications where some amount of server-side logic is written by the application developer but unlike traditional architectures is run in stateless compute instances that are event triggered, transient and fully managed by the cloud provider (aka FaaS — Function as Service).
Note: The name “Serverless Computing” is confusing since there is still server running the code, but only that it is managed by the cloud provider and not the application developer.
Backend As Service:
In the Backend As Service approach, it is about integrating the third party remote application services directly into front end of your App. Example of BaaS are Firebase (for storage) or AWS Cognito (for authentication).
In the BaaS approach the entire application components are commoditized. Very good example is the authentication where instead of the application understanding the different authentication mechanisms, password management, signup etc applications can integrate with the authentication BaaS providers.
Function as Service:
AWS Lambda is an example of Function as Service.
Fundamentally FaaS is about running back end code without managing own servers or own server applications. Since we have no server applications to run deployment is about uploading your code to the FaaS provider and it does everything else. Obviously it also meant that you do need to write code to a specific framework or library.
Scaling is provided by the provider and it is automatic, elastic. The compute containers are provisioned at runtime by the FaaS provider purely on demand. The FaaS functions are triggered by events types defined by the provider OR explicitly triggered in response to any http requests.
FaaS functions has no access to the local machine state. The inprocess state would not be available in the subsequent invocation. So the FaaS functions are stateless.
FaaS functions being stateless can either provide some kind of transformation of the input data or make use of the external storage or database for storing the state.