Who will win the Serverless Wars? Azure Functions is the latecomer but has much to like. AWS is the original trailblazer but appears to be slacking off in terms of innovation. I’m not sure there needs to be a winner. There will certainly be those who prefer AWS and those who prefer Azure for a variety of reasons. In this post, I’ll attempt to catalog the differences I’ve been able to find.
Incidentally, if you have not been introduced to the topic of Serverless Architectures, I suggest Martin Fowler. I have watched with fascination Martin Fowler’s posts on Serverless architectures. There are many other sources you will find through the magic of Google, but give Martin a read before you resort to the others.
Warning! The comparison below is by no means comprehensive and should not be considered conclusive. These are my initial impressions based on research only.
|Node.js, Python, Java
|Node.js, Python, PHP, F#, C#
|excellent (VS Online included)
|Physical Logical Container
|single container deployed from zip (Linux)
|App Service contains multiple functions (Windows)
|CLI (some 3rd party tools)
|GitHub, BitBucket, Dropbox, VS Team Services, VS Online editor
|HTTP endpoint per function/lamda
|requires API Gateway configuration (greater flexibility at cost of simplicity)
|automatic (one per)
|Facebook, Google, Twitter, Microsoft
|Cross-Origin Resource Sharing (CORS)
|Maximum execution time per request
|unlimited (potential unlimited cost)
|Persistence of instance and environment variable
If you don’t speak the language, you won’t be much good at communicating, so for me the choice is easy. Azure Functions supports C#, my language of choice. All the rest is just gravy. I’m sure your choice and mileage will vary.
Also check out Google’s Cloud Functions as well. Though I doubt they will succeed like Azure and AWS, anything is possible.