Google, Apple, and Amazon AWS are not your friends. You may be applauding their actions against Parler, but let's think it through.
Setting aside the politics of Parler, the actions of these three vendors (and others) over the last few days should give everyone pause.
If you lock in your technology offering and make your business dependent on the goodwill of a cloud vendor or an app store, you are surrendering your business to their control under terms of service that can easily be interpreted in their favor at their whim.
The only way to mitigate this risk is to be sure you are not locked in and that no one single vendor controls your data and technology.
Again, setting aside the politics, what is your organization's strategy if your cloud vendor suddenly gives you a 24 hour shutdown notice on the weekend when your employees are off?
Could you survive such an action from your cloud vendor or an app store? If your users suddenly cannot access their data or interact with you, what will the consequences be?
Comments welcome but I hope you will limit your comments to vendor lock rather than the politics involved in this one case.
Before you comment, consider this quote from CS Lewis:
"Of all tyrannies, a tyranny sincerely exercised for the good of its victims may be the most oppressive. It would be better to live under robber barons than under omnipotent moral busybodies. The robber baron's cruelty may sometimes sleep, his cupidity may at some point be satiated; but those who torment us for our own good will torment us without end for they do so with the approval of their own conscience."
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.