A few months back I wrote about Multi-Cloud Architectures for the Enterprise: Part 1; summarized, it was an example of how you could connect AWS, Azure and On-Premise using IPSec VPNs. Part 2 was intended to talk about platform services, however, after a few months working with Azure outside of my sandbox environment and seeing what some of the clients I work with are doing, I thought I’d pivot a little and talk about the big three cloud providers and provide my opinions on how they can co-exist and complement each other.
For anyone who is building SaaS products or externally facing applications, AWS is hands down the platform of choice.
There are a few reasons I say this:
- AWS is more developer-focused. Not to say Azure and Google aren’t, but when AWS releases services they do so in such a way that they are more easily consumed by developers and people building software. Although Google is often further out on the bleeding edge, generally their services aren’t so easy to consume initially (think Google App Engine and Kubernetes). Azure has a long way to go when it comes to deploying infrastructure as code, although CloudFormation can at times be frustrating, it is nicer to work with than ARM and has since released the CDK to abstract away some of the pain points of vanilla CloudFormation. When it comes to service native integrations AWS is more flexible in this way, take API Gateway, I can integrate with almost any Identity Provider using custom authorizers.
- Developer community. If you ever get stuck doing something with an AWS service, there is generally a guide on sites like Stack Overflow or Medium etc as an alternative to AWS’ documentation. Not to say there isn’t for Azure or Google, but there appears to be more extensive knowledge available on these kinds of sites.
- Availability. Let’s look at this from the perspective of EC2 and VMs on AWS and Azure. AWS has had the Availability Zones concept since 2008, whereas Azure only has AZ in select regions — you need to pick wisely if this is important to your workload. They have had Availability Sets where you can specify your servers…