AWS serverless architecture rests on two (2) key offerings by Amazon: 1) Amazon API Gateway and 2) AWS Lambda. Although there are other offerings such as Amazon RDS, DynamoDB, Amazon S3, that invariably become integral part of a complete solution, it is these two that any AWS based serverless computing solution cannot be developed without.
- AWS Lambda: AWS Lambda is an environment that supports code (business logic) written in one of many languages as part of web service that are triggered in response to an event. These are basically functions (micro-services), also called handlers, which are triggered by events, which in turn are triggered by an API call from a client that flows through the Amazon API Gateway. AWS Lambda provisions computing resources and scales them according to the usage of these Lambda functions.
- Other AWS Offerings: As previously mentioned, other AWS offerings may be integrated with these two to make a complete standalone solution depending on the needs and requirements. For example, AWS Lambda and the data tier (RDS, S3, DynamoDB, etc.) can be deployed in an Amazon VPC (Virtual Private Cloud) or integrate IAM (Identity Access Management) to make the application and data more secure.
2) Microsoft Azure:
Azure Functions is a cloud service, similar to AWS Lambda, offered by Microsoft, that offers machine resources on demand to process requests without having a server deployed on permanent basis. Azure Functions extends existing Azure application platform with capabilities to implement code triggered by events in Azure, or 3rd party services. it provides an intuitive, browser-based user interface allowing one to create scheduled or triggered pieces of code implemented in a variety of programming languages. A wide range or triggers and connectors allows for the code to react to events in Azure services. Just like AWS, Azure offers data services (Azure Storage, Azure SQL DB, etc.) for functions to persist data on these servers. Data passed from one function to another or from a data source to a function rely on bindings which make it transparent to the developer who then just needs to focus on its usage rather than worrying about how it is flowing from one system to another. A set of pre-configured operating system image, that don’t require patching, obviate the need for any server maintenance in addition to separating OS layer from the code.
Comparison Between the Two:
While this is a topic that requires an email on its own just for a high-level coverage, we will just touch upon a few important differences. AWS serverless model is very tightly integrated with the programming model making the code developed and deployed uniquely targeted towards the AWS serverless paradigm. On the other hand, Microsoft’s approach allows for more flexibility in that code developed for Azure Functions can also be deployed and executed in the hosting models offered by Microsoft. Lambda provides a wider choice in maximum memory allocation (128MB – 3GB), whereas Azure functions comes standard with a 1.5GB memory, unless of course one opts for the premium plan, which is more expensive. They both support a variety of programming languages. Lambda reserves separate instance for each execution which makes performance predictable and stable, but not necessarily efficient. Azure on the other hand, spawns off multiple concurrent executions sharing the same resources like memory and CPU cycles, which makes it efficient for normal executions, but may slow down the performance during high-resource usage. On the face of it, unit pricing of both offerings seem to be comparable, but the devil is always in the detail. Only a detailed analysis for a specific computing scenario can reveal which offering is more cost-effective in the long run.