Almost all the projects we work on are cloud based applications. A common question that crops up every time we start looking to use serverless components in any project is which one?? Azure Functions or AWS Lambda( there are ofcourse others but these two seem to be our favorites at the moment). Both frameworks come from Strong players in the cloud industry and overall provide the same functionality but there are some differences which you need to be aware of when you chose one over the other for your specific application.
Of-course server-less computing is new and eventually both these players will learn good things from each other and become almost equal to our delight
There are lots of blogs about what Azure and AWS offer as part of their Serverless computing frameworks so here we will just list out the key features Cennest keeps in mind while deciding…
- AWS Lambda functions can be versioned . This is missing in Azure function as a release (although there is a preview going on for this and also slots)
- You can have multiple triggers for a Lambda function. Azure functions have one and only one trigger defined
- You can chain Lambda functions using Step Functions. We haven’t tried this but it seems you MAY be able to achieve same using Logic Apps with some custom code. Of course both can chain functions using storage triggers(SNS, Queues etc)
- Although it is advisable to design your solutions to be completely stateless, Azure functions actually have persistence using the %HOME%directory per Function app
- Lambda functions have a cold start issue which depends based on the implementation technology chosen
However, Azure Functions are less subject to the cold/warm request effects. Azure still provisions resources as needed, but your files aren’t “frozen” somewhere in a zip file. They run on top of Azure’s WebJobs.
- Although there is discrepancy in documentation it seems both AWS and Azure functions have a 5 mins limit on execution of a function
- C# implementation of AWS Lambda will use .NET Core and NOT the full .NET stack so be aware if you decide to use it
- AWS Toolkit for VS does NOT have out of the box support for local debugging and testing vs Azure functions which have excellent support
- You can use third party frameworks to locally debug AWS lambda’s but not out of the box
- AWS Functions have a 1000 concurrent executions limit( this has improved all the way from 100 so check the limits again) and also how to calculate this. Similar limitations in Azure Functions are a bit hazy yet as they keep changing so please keep checking this issue and also their calculation as explained in this answer
- Unit of scale and deployment in Azure in the Azure function App vs Lambda function in AWS. This is a very important difference from an deployment as well as scalability point of view.
Please add to this list of you feel we have missed out something important! Also since these data points are changing all the time please recheck data points