When you think of cloud providers, what comes to mind? Typically it's Azure vs AWS vs Google Cloud Platform (GCP). These are the big three that are constantly talked about, but it doesn't stop there. In fact, there are roughly 200-300 different cloud providers in the world. Some of the bigger clouds you may hear about besides the big three are IBMs cloud platform and SalesForce's SaaS model.
The concern is, with all of these different cloud providers, which one should you choose? Which one is better? Who wins the cloud wars? The answer is no one. If you follow any of my content, you'll see that it's pretty heavy on Azure and AWS, probably 70-80% Azure and 20-30% AWS. Why do I use two cloud platforms, you may ask? Because each platform has their own specialities and strengths.
In this blog post you'll see the big three and what they do best.
This blog is my opinion only and only reflects my own opinion. If you don't agree, that's perfectly okay! If you'd even like to discuss some of the topics, reach out! I'm always up for cloud talk!
Let's start off with Azure and a little history on Azure (no, not a boring history lesson, just a little background).
Azure was announced under the project name Project Red Dog back in 2008 and had it's first general availability (GA) release in 2010. Originally, Azure was called Windows Azure, but as the company progressed and started moving towards a one for all cloud model, they changed the named to Microsoft Azure.
One of the many things that stand out to most people is the enterprise feel of Azure. It makes absolute sense that it feels cleaner than other cloud platforms because Microsoft has been an enterprise company for a long time. They hone in on that enterprise feel across environments because that's what their customers expect.
As you can see from the screenshot below - clear, clean, concise, and to the point.
Lots of Services.. But at a Cost
Azure has A LOT of services. I have a colleague that put it very bluntly, yet true.. They are like the kid that doesn't know what he wants to be when he grows up. I know this sounds harsh, but it's not meant to be. The kid that doesn't know what he wants to be when he grows up typically has a ton of hobbies and explores a lot of side projects, then finds his passion.
I find the same thing happening in Azure. Let's think about serverless for examples. Microsoft has;
- Azure Functions
- Azure App Services (with code and containers)
- Azure Logic Apps
That's a lot of serverless, and more importantly, a lot of people to learn. It's okay, but the concern I have is they can all, for the most part, pretty much do the same thing. The serverless apps in Azure aren't purpose-drive, or at least that's how it feels, especially because each serverless function in Azure has so many moving parts.
Looking at AWS, their serverless components are purpose driven. For example, AWS Fargate has one job, serverless for containers. AWS Lambda has one job, run code without provisioning or managing servers. BOOM, that's it. Clear, concise, and to the point.
I believe once Microsoft focuses more on the purpose vs let's get a bunch of services out so people can play with new stuff, they will move even faster.
Constantly Updating and Staying Agile
Microsoft does a lot of things well, but with Azure, they are very agile. They keep up to date, change services, update services, and keep things moving. They don't allow us, as Azure customers, to get left behind.
Let's think about their certs for example. A lot of individuals will take their certifications as a bad thing to be agile with, why? Because Microsoft constantly updates their certs. Services in Azure are ALWAYS changing, and with that, comes new study material. Instead of Microsoft letting us, as customers, take an exam with old material on it, they tell us what has been updating. This is AWESOME! You never have to worry about taking an exam with old material/services, which means you will be ready for the real-world.
Active Directory and Auth
Microsoft, hands down, has the best authentication methods and they have Azure Active Directory. This, of course, makes a ton of sense. Microsoft created Active Directory, the authentication method that pretty much every single company uses in one way, shape or form.
Azure Active Directory is a phenomenal service. Not only Azure AD, but app registrations are amazing. They are so easy to set up for outside services to authenticate to any service running in Azure.
Amazon AWS was created in July of 2002 with one profession in mind, developers. AWS wanted to provide an easy to use and rich platform for developers to get their workloads started fast, easy, and efficiently. In 2003 during a leadership retreat with Jeff Bezos, the Amazon executive team asked Jeff what the core strengths of the company was. The answer was embracing developer-friendly tools in the infrastructure space.
I love AWS Lambda. In terms of a serverless component to deploy code, it's just so straight forward and easy to use. I've deployed so many scripts using Lambda, scheduled them, and it just worked.
Below is a screenshot of some Python3 code to start a particular EC2 instance. It's a fast, easy, and efficient way to set up some of my own serverless error handling. If the EC2 instance goes down, the Lambda function will kick off and start the service. Badabing-badaboom
Lambda also supports a ton of different languages. These languages include:
They pretty much hit all of the core programming languages and don't leave anything out (and everyone knows I love me some PowerShell!).
In my humble opinion, Lambda is truly the standard to what all serverless should strive to be.
The First Big Player...
AWS was the first player on the market, 8 years before Azure and 6 years before Google Cloud. That's a lot of time to get things right before anyone else had a chance to get things wrong. AWS is called the 800 pound gorilla for a reason. It's still the most popular, leading the biggest sales, and the most utilized cloud platform.
There is a ton of stability in AWS, but that comes at a cost. They are simply not as Agile as, Azure for example. A lot of the services stay as is, and that's okay, but the world is moving forward, and AWS needs to do the same.
Let's look at an example.
When I first started my cloud journey, it was in AWS. AWS was the first cloud that I ever used. One of the first large projects I had was to start thinking about how the organization I was working for could start using containers. With containers comes orchestration, and the standard right now is Kubernetes. After a ton of research and testing, one major thing held true - organizations were starting to utilize cloud services for Kubernetes vs using raw Kubernetes, so I naturally looked at Elastic Kubernetes Service (EKS). EKS, still, at the time of writing this, is WAY behind where Azure Kubernetes Services (AKS) is. AKS offers way more versions of the Kubernetes API, which is what drives Kubernetes.
Below is a comparison of EKS vs AKS. As you can see, there's quite a difference.
AWS is the most stable platform, it's true. Services don't change as often as Azure and that's sometimes a good thing. Stability is a good thing in many cases. The problem with too much stability is it automatically makes a lack of innovation. Most services are polished, but lacking.
AWS, by a long shot, has the best SDKs. I especially love their Python SDK, Boto3. The reason why I love it? It's one SDK! There isn't a different SDK for compute, storage, networking, serverless, etc.. It's ONE SDK to rule them all! This makes learning and using Boto3 so much easier compared to other platforms.
The other thing I love about Boto3 is all of the classes and methods are pretty much identical in terms of structure. For example, take a look at the documentation for
create_budget which are two entirely different services. Do you notice how the structure of the syntax in the methods looks pretty much the same? That's how all of the usable methods are in the Boto3 library. If you can figure out the first one, you'll have a clear opening to the rest of them.
Because I'm a huge PowerShell lover, I especially love the PowerShell module. It's very rich and covers just about all of the AWS services. Using PowerShell plus my favorite serverless technology, AWS Lambda, it's truly an amazing and fun automation experience.
Google Cloud Platform (GCP)
Woohoo, more history!
Google Cloud Platform as released in 2008, right by Azure came into the picture. The really cool thing about GCP is all of Googles internal technology runs 100% on Google Cloud, even Gmail and YouTube. The first big service they got into was App Engine, which is a platform for hosting web applications.
If you ask anyone that has used all three cloud platforms, Google Cloud is the clear victor. Think about how much data Google has, I mean... Literally, Google, the worlds largest search engine. Google arguably has the worlds most data, and since they are using GCP internally, you know they have to have an amazing data platform.
If you haven't used it, take a look at smart analytics. I'm personally not a big data guy, but I have heard amazing things. I do, however, use Google Analytics for my blog and I can personally say it's the best and easy analytics platform (in my opinion).
Google created Kubernetes in 2014, and in the beginning, it was actually an internal platform. Kubernetes is the standard for container orchestration. There are/were a few other platforms, but it's pretty clear at this point that Kubernetes won the battle, for now.
Because Google created Kubernetes, you can understand why they have the best hosted Kubernetes platform called Google Kubernetes Engine (GKE). When using GKE, it just feels.. clean. The interface, the functionality, deploying resources, everything about the platform far outweighs any other Kubernetes platform.
Need to Step Their Game Up
Google needs to step the GCP game up because they are far behind AWS and Azure. This isn't a speculation, it's a fact. Google has some really rich features in GCP and I honestly don't know why they are so far behind. They have the funding, they have the platform, and they have the recognition. It's not like they are a small company trying to start from scratch.
If Google wants GCP to stay relevant, they have to step up to the plate and really start focusing on core services.
The moral of the story is, like everything else in life, some things are better than others. Each of the big three have their strengths and weaknesses, which is expected for any technology service.