Of course, nothing works in the cyber world without servers and we can term ‘Serverless Computing’ a misnomer. Serverless Computing adds another layer of abstraction on top of the cloud infrastructure, where developers can work without worrying about the underlying infrastructure including the virtual servers.
Serverless Computing can be defined as a framework which will be able to generate code in response to predefined events and it works on cloud infrastructure. Code snippets are designed independently of each other, performing a single task at a time and are called in response to the events in the cloud development process. Codes can be easily run on the cloud without the traditional workflow. The Serverless Computing platform offers Function as a Service (FaaS) where a unit of deployment will be offered as an autonomous function.
Cloud computing giants like Microsoft Azure, Google Cloud, AWS, IBM Bluemix, etc. offers Serverless Computing solutions, among which AWS Lambda is the most popular one.
Let’s see an overview of AWS Lambda.
AWS (Amazon Web Services) Lambda is event-driven (means it runs code in response to an event or an action which can be recognized by software) and it allows developers to program functions on a pay-per-use basis.
Functions are small pieces of programming which can perform a particular task. In AWS Lambda, developers code and run functions in response to specific events in other Amazon cloud services. Each Lambda function runs in isolated computing environments with own resources as well as file system view.
In AWS Lambda, on calling a particular function, the storage and compute resources for that function will be automatically provisioned as a metered service. Developers can list, delete, update and monitor functions through Lambda dashboard, command line interface (CLI) or software development kit (SDK). Infrastructure activities like server and operating system maintenance, patch deployment and logging will be performed via AWS CloudWatch. Developers are provisioned to connect to third-party application programming interfaces (API) in Lambda via Amazon API Gateway Service.
By releasing AWS Lambda Edge, Amazon enabled Serverless Computing globally. It enables developers to run Lambda code at edge locations geographically closer to end users worldwide, reducing latency. Along with running code on triggering functions and scaling as per workload-size, AWS Lambda Edge enables developers to manage HTTP responses and cookies, make network calls and conduct A/B tests.
In Lambda, billing is as per the number of requests served and the compute time needed to run the code is metered in increments of 100milliseconds. It costs the developer nothing if a function is never called. Additional charges will be there for associated AWS products.
Benefits of using AWS Lambda can be written as,
- The server is abstracted from developers; it is completely managed by AWS.
- Supports a variety of programming languages – Node.js, Python, Java and C#.
- Enables running code on a trigger, without provisioning or managing servers.
- Availability of code compiler tools – like Maven, Gradle – and packages to build functions for developers.
- Attractive pricing and offers – charges only apply on executing code, no usage no charge. Per month free usage for 1million requests (with extra charging for each additional million requests) and 3million seconds of free computing time.
- Scalability – Developers only need to upload code and scalability will be completely managed by AWS. This is achieved by AWS Lambda functions which are stateless, meaning data cannot be stored in AWS Lambda functions for long.
From all this, we can generalise the advantages of Serverless Computing as,
- Reduced operational complexity – No need for server provisioning.
- Cost-effectiveness – Pay as per code execution, further price reduction due to lack of operating systems and load balancer maintenance charges.
- Immense, faster scalability.
- Availability to various programming languages.
- Increased efficiency of developers or operators – Serverless computing enables developers or operators to fully focus on programming or their core operations by making them not to worry about the underlying infrastructure (like server/storage/computing server provisioning as well as management).