Serverless has gained traction over the past few years as more and more businesses realize the potential benefits that come with letting the cloud vendor handle the managing and provisioning of servers.
As it stands, AWS, Azure, and Google Cloud Platform (GCP) are leading the way in the serverless category — with services like AWS Lambda and Azure Functions setting the new standard for building and deploying applications to the cloud.
As per the State of Serverless report by Datadog, more than 70% of the organizations using AWS are now leveraging serverless. As for Google Cloud, around 55% of organizations are doing so. Azure’s serverless usage is almost on similar lines to Google, with just over 50% of enterprises using serverless on the cloud.
But do these three vendors offer the same capabilities? Which one is a better choice for your organization? How do their serverless capabilities match up? Let’s discuss.
For the purpose of this article, we are going to look at the most prominent serverless offerings from each cloud vendor – AWS Lambda, Azure Functions, and Google Cloud Functions.
Programming Language Support
One of the special advantages of using serverless is that development teams can choose their preferred programming languages based on their skill set, functionality requirements, convenience, etc. But is this polyglot advantage facilitated by different cloud vendors? Let’s find out.
AWS Lambda allows teams to use common languages like Python, Java, Node.js, C#, Go, PowerShell, and Ruby code. However, developers can leverage the Runtime API to author functions in languages other than these.
Google Cloud Functions
Google Cloud Functions primarily supports these languages – Java, Python, Ruby, .Net, Node.js, and Go.
Altogether, the language support is quite comprehensive, with minor differences like Azure not supporting Go, which is supported by both GCP and AWS.
Scalability – Concurrency Potential
Scalability is the ultimate need today, with cloud-native applications having to adapt to changing demands and handle a massive number of concurrent requests. Let’s find out what the leading cloud vendors have to offer in this department.
Lambda provides the capability to instantly scale the application to handle the required load. A single request can quickly scale to thousands of requests. In fact, AWS defines how to consider the scalability potential in terms of two key metrics – concurrency and transactions or requests per second.
Concurrency is the measure of concurrent requests for Lambda functions. Lambda, by default, puts the concurrency limit at 1000. However, this can be modified based on custom requests.
Azure doesn’t explicitly outline the concurrency limit. However, it does provide information on the “maximum instances.” A single function app can support up to 200 instances. But each of these instances can support multiple requests.
Google Cloud Functions
Google’s definition of concurrency is a bit similar to Azure. Concurrency is representative of the concurrent requests being handled by a single function. By default, concurrency is set at 1. It can be increased as per demand – up to a value of 1000.
In sum, all three vendors facilitate the utmost scalability. However, businesses must consult experts before choosing the vendor because the costs can vary, as the definitions of scalable requests and instances vary across each vendor.
Security is an important aspect when building applications on the cloud — especially for enterprises that handle sensitive data. Although serverless is essentially secure by design, a few measures can be taken to further protect the data.
Lambda works on a shared responsibility model – segregating the security into two:
- Security of the cloud
- Security in the cloud
Security of the cloud is handled by AWS in accordance with AWS compliance programs. Security in the cloud revolves around the best practices that businesses must adopt to:
- Facilitate data protection
- Ensure robust identity and access management
- Perform configuration and vulnerability analysis
- Carry out compliance validation
Azure, on the contrary, tasks the Azure App Service to ensure the security of function apps. This practice involves the usage of App Service to run continuous compliance checks and:
- Ensure the security of all the app resources
- Ensure that no communication between Azure resources crosses the network boundaries
- Facilitate 24-hour threat management
- Ensure encryption of connections with tools like REST APIs, Azure CLI, etc.
Google Cloud Functions
Security of Cloud Functions can be defined in terms of:
- Identity-based access control: This involves authenticating and authorizing the identity of the requesting entity.
- Network-based access control: Cloud Functions provide the capability to fine-tune the control over the traffic entering or exiting a network boundary.
All the vendors adopt a seemingly different approach to security, and it’s wise to consult with the technology partners about what’s viable based on the specific business requirements.
The costs accrued across each of these vendors’ serverless offerings are dependent on the memory provisioned and the number of requests. For reference, here’s how the costs compare when talking in terms of executions or requests:
- AWS Lambda – $0.20 per 1 million requests
- Azure Functions – $0.20 per 1 million requests
- Google Cloud Functions – $0.40 per 1 million requests
While Cloud Functions costs more, it gives 2 million monthly free requests compared to AWS and Azure’s 1 million.
What to Choose?
All these serverless offerings are extremely promising. The choice should be predicated on the budget, strategy, and project context. For instance, GCP might accrue more costs down the line, whereas Azure would not support a particular language like Go. Each vendor, however, promises high scalability, so the choice is not that cut-and-dry. It’s best to partner with a technology expert who can help you choose the right vendor and deploy the ideal serverless solution. That’s precisely where Sagacity can help. Reach out to us today!