AWS Architecture and Azure Architecture sites provide a variety of resources for architects including reference architectures. With AWS you get a brief one page PDF diagram for each scenario. With Azure you get a more in-depth documentation style following the infographic. Here are two examples. The first is an AWS financial services grid computing architecture.
The second here is an Azure machine learning architecture.
The reference architectures and additional architectural helps provided by your cloud provider can be very valuable.
And here's the BUT.
But you should not simply copy and paste. Use these guidelines to provide you with ideas and help you to think of things that you are missing in your own cloud architecture solutions. Take the good ideas and use a skeptical eye to pick and choose what works best for your organization's use cases.
Think of it as if you're building a car. Do you look at how other cars are built? Or do you put on blinders and make the same mistakes as everyone else had to make before you came along?
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.
|Serverless Features ||AWS Lamda ||Azure Functions|
|Supported Languages ||Node.js, Python, Java ||Node.js, Python, PHP, F#, C#|
|Web Dashboard ||adequate ||excellent (VS Online included) |
|Physical Logical Container ||single container deployed from zip (Linux) ||App Service contains multiple functions (Windows)|
|Continuous Deployment ||CLI (some 3rd party tools) ||GitHub, BitBucket, Dropbox, VS Team Services, VS Online editor|
|Source Code ||closed ||open|
|HTTP endpoint per function/lamda ||requires API Gateway configuration (greater flexibility at cost of simplicity) ||automatic (one per)|
|Authentication ||unknown ||Facebook, Google, Twitter, Microsoft|
|Cross-Origin Resource Sharing (CORS) ||unknown ||supported|
|Maximum execution time per request ||5 minutes ||unlimited (potential unlimited cost)|
|Persistence of instance and environment variable ||no ||yes|
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.