This post is an Azure and AWS comparison that covers thought processes for adoption. Please consider the following questions before proceeding:
- What fits the existing culture best?
- How much of an investment would "X" take to successfully implement for my organization?
- What compliance standards am I responsible for implementing?
- What access controls and native security can I design around what I'm designing?
Azure of course, is run by Microsoft. It offers a drastically different market and use case for clientele. The main focus of Microsoft Azure for some years has been to make cloud adoption easier for the typical Windows full stack shop environment. They offer a great deal of familiarity with names including: Windows Server, Office, SQL Server, SharePoint, Dynamics, Active Directory, and .Net. If you're new to the space and looking for something that easily translates to your native language, this is often the best route to take. One of Azure's main focuses has been to make CI/CD and application testing as easy as possible for clients. In addition, you won't run across the challenges of learning and/or teaching almost entirely new terminology for services you've already used on-prem or in a datacenter.
One example sticks out to me from my Windows server engineering journey. Using Application Dynamics within Azure for .NET and ASP stacks was incredibly simplistic. The statistics given, implementation and tracking were all provided with ease.
AWS offers quite a different vision, it's far more mature and it's often reflected in their practice. AWS often engineers new and exciting services and competitors tend to latch on at later points in time with alternatives. If cloud growth and bleeding edge are something you enjoy, AWS should be your definitive choice. The security integrations I've done using the platform have been nothing short of amazing. The strong point for me after comparing both is optimizing my time spent on a per project basis. For example, provisioning services using Terraform is far more detailed when ran on AWS. When you look at the total number of modules that support each provider it's a one sided show:
AWS Modules: 1100
Azure Modules: 127
As of 8/28/19
However, it's important to note both providers offer competitors and an enormous amount of products for any level of stack integration. Many software companies build with both in mind. Benefiting and fitting in wherever they possibly can. It's not often you won't be able to find a solution for something elsewhere should the challenge appear.
Costs should be something that comes to mind first on a per use case basis by project. Depending on what you're trying to accomplish for your environment this can vary greatly. Cover the basic principles, compliance requirements and effectiveness of both before ever attempting to implement anything. A matrix is a great reference to display and explain pros and cons of each solution discovered.
Hybrid environments of both are beneficial for everyone in the long run. Things change from time to time, and you may have to migrate things back and fourth. But when it's this close of a race, it's best to know both sides of the coin. The better grip you have on the overall "cloud" space, the better you'll architect solutions. Cert up if this is an area that you find enticing and gain exposure first hand. From here, you'll only grow and become more valuable in the market.