There are huge changes taking place in IT infrastructure and software development. Terms like DevOps, Microservices, Docker, etc are in the talks in IT organizations. With these new technologies, methodologies and movements, companies are trying to
- simplify IT related jobs(development, administration)
- automating software development and delivery work,
- cutting cost of IT operations by making better use of available IT infrastructure for hosting multiple applications
- Breaking and hosting services to multiple locations and call and scale them when needed.
The core of all is to cut cost for application development and its hosting over cloud. Serverless computing is new methodology which extend all these trends. Developing applications in serverless computing revolutionize the way software was developed in the past.
Traditional Application Structure Vs Application Structure in Serverless Computing
Traditionally, developers needed to prepare server environment for application to work and perform in agile way. Server resources needed to occupy at once. But there were cases where developers need to allocate un-necessary resources on cloud or server. Cost of hosting used to get higher for major amount of functions. Also developers and administrators had to take care of sudden spikes of calls made to applications so that additional resources can be activated.
With serverless computing, application is broken into discrete functions. Developers need to upload those functions on service provider portal and connect to event trigger which is further connected to base application. That function gets call from application when it comes in application execution flow or get called for specific task. For e.g. functions like login, registration, payment processing can be handled in serverless computing. Function written for that kind of tasks are uploaded on serverless computing provider. When user clicks for those tasks a request made to portal where serverless function is hosted. In this way base application code becomes small and also take very small amount resources to execute.
Main advantage of serverless computing is for applications hosted on public cloud where companies pay for resources allocated to host one application. That scale of resources not much needed. But by keep in mind fluctuating workload, more resources should be necessary. Even it is automatically scaled as per request but price get higher. For addressing that concern by many administrators, serverless computing introduced by AWS with its AWS lambda offering. In serverless computing, there is no charge to host functions, cost model for functions are different for Azure Functions, AWS Lanbada & Google Functions.
But there is disadvantage as well. And for administrators. They have to monitor performance of multiple functions, track usage of calls made to functions, costs for every functions. Also administrators has to take care of availability of functions uploaded on serverless computing server provider portal.
Major Players in Serverless Computing
Serverless computing is initiated by AWS with its offering called AWS lambda. Microsoft Azure Functions and Google Cloud Functions are other major cloud services providers apart from AWS. All service provider offers almost similar kind services which differs in programming languages supported and pricing.
Pricing Model for Serverless Computing: Azure Functions and AWS lambda
- AWS lambda: You are charged for usage in AWS lambda. Charges based on number of requests made to functions and time taken to execute code. Charges for first 1 million request are free. After that, charges for next 1 million requests are $0.20 which is $0.0000002 per request. See below image for pricing example
You can learn more about AWS lambda pricing here https://aws.amazon.com/lambda/pricing/
- Azure Functions: Charges for functions are based on how much resources consumed and number of executions. Like AWS lambda initial 1 million request and 400,000 GB-s resources consumption are free. Here is example for Azure functions pricing
Comparison of AWS Lambda, Microsoft Azure Functions and Google Cloud Functions
|AWS Lambda||Azure Functions||Google Cloud Functions|
|Pricing||$0.20 per million executions||$0.20 per million executions||$0.40 per million invocations|
|Maximum execution time per request||300 seconds (5 minutes)||300 seconds (5 minutes)||540 sec|
|Log Management||Cloud watch||Azure Storage||Cloud logging|
|Scalability & availability||Automatic scaling||Automatic scaling||Automatic scaling|
|HTTP End point||AWS API Gateway||HTTP Trigger||HTTP Trigger|
|Function Limit||Unlimited functions||Unlimited functions||Unknown|
|Concurrent executions||100 parallel executions per account per region but users can increase it||No limit||No limit|
In this article, we have gone through basics of serverless computing, compared with traditional model of software development, comparison of serverless computing service providers and pricing models of AWS lambda and Azure Functions. Like Containers, DevOps, Microservices, serverless computing is major revolution in software development industry. There is huge impact of serverless computing on the developers used to code and administrators used to manage and monitor IT resources. For most of cases, serverless architecture is much needed but there can be cases where use of it can be pain area for companies.