Serverless computing has been gaining popularity. According to the report, it is the fastest growing extended cloud service, at 75% rate year over year. And so led to more curiosity and the use of serverless architecture. The days of storing information over an in-house database are far gone. Serverless is one of the trending technologies today. There are some serverless platforms to store data, some of these are, AWS Lambda, Google Cloud Functions and Microsoft azure. Selecting the best platform depends on factors like performance, functionality, pricing etc. Because of the availability of lots of platforms, you should know the clear difference between those so let us compare AWS Lambda vs Azure Functions vs Google Cloud Functions.
Azure Functions–
Azure provides 2 levels of language support- Generally Available (GA) level and Preview level. It supports C#, JavaScript, Python, Powershell, F#, Java version 8 and 11, and Typescript based on the runtime versions 1.x, 2.x and 3.x. Azure also supports direct deployment from .zip file packages. It promotes deployment through FTP, Cloud sync, Local Git, JSON templates and Continuous deployment.
AWS Lambda–
AWS Lambda provides native support for Golang, Java, PowerShell, Node.js, C#, Python and Ruby. It’s runtime API allows the use of any programming language to develop customized functions. Simple, lambda supports various languages by creating container images through the said Runtime APIs. Simply creating .zip file archives of functional code and dependencies, eases the deployment of Lambda package. Integrating Amazon Storage Services, you can deploy libraries other than AWS SDK with Lambda.
Google Cloud Functions–
Google Cloud Functions eases writing in Node.js, Golang, Java, Python, and .NET frameworks like C#, F#, and Visual Basic. In cloud functions, runtime plays an important role as it does in AWS Lambda. The main difference is that the environment executions of Cloud Functions vary based on the runtime model chosen. Packages from cloud functions are deployed from Cloud Source Repos, Local machine, source control and APIs.
With advanced programming, handling storage gets a little overwhelming with Azure, but it has upgraded the storage services. One can get about 40 TB to 500 TB of offline data storage transfer through its cloud solution Data Box.
AWS Lambda sets limits for computing and persistent storage resources. This method is applied to all functional layers, deployment packages, container images, execution processes, test events among others. By default, it provides 1k concurrency executions, 75 GB storage for functions and layer storage. In spite of the limit, the storage quota is expanded to a few terabytes upon submitting a manual request to AWS Console support for functional scaling. Lambda provides storage options as Amazon’s S3, EFS, and DynamoDB.
Google cloud functions provides simple control over the storage through their in-house Cloud Storage while it also offers the possibility to use Firebase.
Azure employs an extensible application performance management service to measure, control and manage dependencies. The SDK of APM services permits azure to automatically track dependency calls for Http/Https, WCF, SQL, Cosmos DB etc.
Lambda’s execution environment has various libraries like AWS SDK that includes new packages and functions. Code organization and use of Dependency injections methods and Inversion of Control(IoC) frameworks like Dagger, Guice, Spring reduces the complexity of dependencies.
Monitoring, handling and accessing dependencies in Google Cloud functions depends on the language chosen and the runtime module integrated. Whereas, with cloud functions, you could request and include any system package to handle the dependency via Go modules’ execution environment conveniently.
Identity & Access Management system enables authorization layer to exercise fine-grained access management for functions. With Aws Lambda you can create your own custom IAM policies and assigns specific roles as per the user behavior. IAM of lambda has 3 policies: Role, Read-Only Access, Full-Access. Whereas, for IAM computing services, Lambda allows only partial access to service-linkedin roles and doesn’t give authorization-based tags. One can control your function policies through Resource Based Access Control. Now it provides three essential services, IAM for cloud and hybrid-based environment, Consumer Cloud IAM, and Virtual Machines for effective IAM.
GCF provides enterprise-grade level access control and it uses Google’s cloud resources to create security policy according to your requirement and compliance processes. Also, it offers a granular level of IAM via context-aware access, protecting attributes in each resource and IP address with continuous update on security status.
Azure function is available with two different plans- Consumption plan and App service plan. Consumption plan scales your function automatically when a function execution times out after a configurable interval. App service plan runs functions on a dedicated VMs allotted to each function app, that implies the host of functions are always up and running.
AWS Lambda supports dynamic scalability according to the increased traffic. To effectively manage traffic increase, AWS Lambda predetermines the number of functions to be carried out according to the region on which it is executed. Near about 500 to 3K functions executed per region.
With Google Functions, the background functions scale gradually, and it relies upon the function duration. Likewise, most extreme adaptability depends on as far as possible. Maximum scalability is based on the traffic limits.
6. Concurrency And Execution Time-
Concurrent execution count varies according to the type of event source you have used. Based on the incoming request rate, functions scale automatically, but not all resources in your application’s architecture work the similar way. So concurrency depends on downstream resources.
Azure supports various functions simultaneously provided operations take place simultaneously within a single data partition. The number of simultaneous activity and executions is covered at 10X depending on the number of cores in the VM level. The execution time limit is 600 seconds or 10 minutes.
AWS Lambda limits the total concurrent executions across the functions to 1000. One can limits the concurrency in two ways: account level or individual functional level. Functional execution timeout is 900 seconds or 15 min.
Google cloud function receives only upto 80 concurrency executions and the execution time between 60seconds and 540 seconds.
Azure has in-built Azure Application insights which monitors functions. It is generally replaced by built-in lagging system.
AWS lambda monitors functions by reporting metrics through Amazon CloudWatch which includes various requests, latency per request and number of requests resulting in an error. It integrates with Amazon CloudWatch Logs and pushes them from code to a CloudWatch group with Lambda function. One can make use of AWS X-Ray to provide end-to-end monitoring for functions.
Google Stackdriver is a suite of monitoring tools which helps you to understand what’s happening in the Cloud Functions. It has in-built tools for logging, reporting errors and monitoring. One can see execution counts, execution times and memory usage in GCP Console also.