Amazon AWS and Microsoft Azure are the largest cloud platform providers in mid 2020. I am a solutions architect who has worked with both and has certifications from both. This article will discuss the question of which to choose, if such a choice were necessary, and whether it should, indeed, be made. It is largely based on my more subjective impressions, but this is, as will be shown, a large factor in making any putative choice, as the service offerings themselves are currently quite similar and cost roughly the same.
Why Choose At All?
This is the ‘right tool for the job’ question, and it is the basis of any good solution architect’s decision. Why come down in favor of AWS over Azure, and vice versa, when we can just pick the right service for the job?
In the first place, picking like this may not be possible. It is relatively easy to do this if we are using a peripheral service, such as chat bots or text extraction. It is less easy to do this if we’re using something more core, such as virtual networking — whatever we choose in the latter case is more likely to lock us into other service offerings from the same provider, and is harder to transfer between providers.
Secondly, even if this ‘right tool for the job’ were an option, we still need to ask ourselves which service would be right in that case. We need, in short, some kind of metric to choose one service over another, as well as one provider over another.
Unfortunately, as I will show, such a metric is not really available currently. The choice will, in cases not determined by external factors, be largely determined by more intangible values. These values will be illustrated below.
I could, at this point, go through all the offerings on each platform, service by service, and discuss how each works and how much it costs. That, however, would quickly become tedious and repetitive. This is because, in the overwhelming majority of cases, and particularly when it comes to core services, the offerings are practically identical. As a case in point, I suggest looking at this article on the serverless offerings (Lambda, Azure Functions and other providers).
The similarities in offerings and cost can be extended out to compute, networking, storage and so on. There may be some more differences when it comes to databases, but none that are likely to be a deal breaker, in general.
If margins are small, and/or the case highly specific, then I recommend diving deep into the relevant offerings on a case by case basis, for example when comparing network latency and specific compute instances. For more general and abstract use cases, however, looking at price and service offering is not really going to sway the decision one way or another.
Technical Focus Verses Customer Focus
If we broaden the picture from out from services and costings and look at how Microsoft and AWS define themselves, we can get a clearer idea of the more intangible and cultural differences between the two.
Microsoft has grown from a software development background. Today it describes itself a technology company whose mission is to empower every person and every organization on the planet to achieve more. This is a company that puts development and global improvement first. It is, essentially, a paradigm of global improvement driven by software.
Amazon has grown from a retail and customer focused background. The first of their seventeen leadership principles today is ‘start with the customer and work backwards’. This is a company that puts the customer first. It is, essentially, a paradigm of software improvement driven by customer needs.
At the broadest level, then, we can see different, and in some ways almost opposing world views driving these companies. Microsoft is driven by software development and aims to improve the world with it. AWS is driven by customer needs and aims to improve software (and software development) with that.
These may seem like very broad and abstract principles, but in fact, they inform each company’s decisions and products at almost every level. To clarify this, we can look at another company, Apple, which was lead for years by the principle of great product design. Using Apple products today is to be reminded, almost with every keystroke, and even on a subconscious level, about the benefits of good product design. The broad principle is integral to ever part of their product.
This is also true, I believe, of Azure and AWS. To use AWS is, at every point, to be reminded of customer driven functionality. To use Microsoft is to be reminded, at every point, of software development and purpose.
So which approach is better? This is partly a matter of temperament and belief system and would require a number of further articles to discuss fully. Personally, I think that customer focus produces the greatest challenges, the best solutions, and the most sustainable profit margins, so I gravitate towards AWS over Azure. Others, quite naturally, think differently. However, it does bring me to the next issue which is…
The Hare and the Tortoise
This one is quite simple. AWS is older than Azure. Broadly speaking, AWS has been the innovator and Azure has copied what AWS is doing. Hence the remarkable similarities between the two today.
Of course, the imitator may always overtake the innovator in the future, but I prefer to stick with the innovator for now.
You’ve Bought The House, So Live With It
Ever since the widespread adoption of Windows, Microsoft has used integration as a sales strategy, and this is the case with Azure. It is well integrated with other Microsoft products such as .NET, Visual Editor, PowerShell, Active Directory, MS SQL and so on. AWS will, of course, also integrate with many of these, but not quite in the ‘out of the box’ way that Azure does.
This means that if you are already a Microsoft development house, then you are probably going to gravitate naturally towards Azure. It will feel familiar and employees will like it.
A counterweight to this might be customer preference, so, again and in the end, it may well be that the choice is a moot point, and both providers will need to be adopted to some extent or other.
I have looked at the issue of choosing between AWS and Azure, discussed the similarities in their general service offerings and costs, and the differences between their overall approaches. I have determined in favor of AWS, largely on some more intangible aspects of personally favoring customer driven development and innovation over a software driven approach that aims to empower the world. I have also discussed the Microsoft strategy of leveraging market share through integration with Azure.