The cloud began as a commodity business. Oh sure, there were small differences like the size of the RAM or the way the virtual CPUs were measured but the cloud offered a seemingly endless supply of seemingly identical machines.
They ran the same distros and responded the same way on the command line. And if you snapped your fingers, the cloud service providers would give you root on another.
Keeping everything the same was the easiest way to lure the developers from the safety of their air-conditioned racks in the same building. Commodity machines mean there are no surprises or glitches. All of the clouds offered the most popular operating systems where all of the bits were arranged exactly the same.
The big problem for managers is choosing. If Ubuntu 18.04 is the same everywhere, what difference does it make whether you select Google, Microsoft or Amazon hardware? If the major distributions are supported everywhere, how do you decide?
To make choosing harder—but consuming easier—the space is very competitive. The developers at the cloud companies come up with clever ideas but they’re quickly copied. Genius becomes average very quickly. Innovation begets disruption which evolves into mundane feature sets that we take for granted.
How can we choose? You can’t just flip a coin. That’s not scientific—even if you put on safety goggles and wear a lab coat to do it. If the suits ever notice that you’re flipping a coin, they’ll realise they won’t need to wait for artificial intelligence to get good enough to replace purchasing managers. They can replace you right now with a monkey and a coin.
The solution is to get pickier. Yes, you could probably make do with any of the commodity products from any of the major clouds—or many of the not-so-major clouds too—but who wants to go through life just getting by? Who wants to settle?
Being picky sounds petty but it’s really the beginning of innovation, the tip of the spear that starts real change. It’s really being sensitive to differences that matter and taking them into account.
To help this process, here are 10 different picky reasons to choose one of the major clouds. The reasons are not unequivocal because it’s usually possible to accomplish much of the same thing using one of the competitors. But just because it’s possible doesn’t mean you should do it.
The clouds all offer a number of clever and sophisticated APIs like Google’s Cloud Vision, Azure’s Machine Learning service, or Amazon’s GameOn. There are hundreds of them and they make building out your own code that much easier.
There’s no reason why you can’t invoke these APIs from any cloud, or really any computer on the Internet, but sometimes you’ll need the performance that comes from running in the same network and even the same data center. If some cloud offers what you need, it can be just a bit quicker to do much of your computation and data storage there too.
All of the clouds have data centres spread out around the globe. Microsoft Azure, for instance, has 54 regions and they carefully note where the data is “at rest” and which government has sovereignty.
Perhaps you have a large collection of customers in one country. Perhaps the legal department has identified a special and particularly lucrative “feature” of the tax law of another one.
There are dozens of strange and often quirky reasons why you might want your code running in one country over another. Most of these different data centres are clones of each other and it makes sense to stick with the same stack throughout the world. It just makes things simpler.
The only caveat is that not all of the data centres are perfect clones and not all of the products are available in every location.
While the compute and storage resources are largely commodities, each of the clouds offers a few products that stand out.
Google’s Firebase, for instance, is a database that automatically migrates the right data to the client, saving you the trouble of worrying about much of the consistency and marshalling code. Amazon’s S3 Glacier will store data for the long term at a very low price.
Microsoft has Azure Cosmos DB, a database that supports multiple data models. There’s no reason why you can’t knit together services from different clouds, but it’s often a bit simpler and faster to buy your commodity computation from the same cloud.
The clouds are all corners of larger corporations and there are often synergies between the different divisions. If your office uses Google G Suite, everyone will feel a bit more comfortable working with some of the Google Cloud Platform services to dump their data into Google Sheets.
Microsoft’s Excel is one of the standard ways that many large organisations work with data and it can import data from Azure or work with the Azure Analysis Services. Old habits die hard and the desktop interfaces are some of the oldest habits in the enterprise.
If you’re a true believer in free markets or you just like the thrill of “winning” an auction, Amazon offers a spot market for computational power that lets the price adjust to supply and demand. This is a great feature for work that doesn’t need to be done at any particular time.
Batch jobs and monthly reports can wait until the price is low enough. Just remember that demand can spike at odd times. Some of the streaming services, for instance, use the cloud to handle extra demand on Friday and Saturday nights.
Google offers a pricing mechanism that doesn’t require any thinking on your part. When your instance runs for more than 25 per cent of the month, you start getting the volume discount. No negotiations. No new contracts. No switching to a different plan. The price just goes down. They call them “sustained use discounts.”
It’s hard to deny the dominance that Microsoft has had over many enterprise development teams over the years. If your stack was born during the .NET era and it continues to use many Microsoft parts, there’s a good chance you’ll find it easier to choose Azure.
It’s not strictly necessary because the other cloud providers will boot Microsoft machines and there are good containers filled with Microsoft code that will run anywhere. But sometimes there’s no place like home.
The different versions of the operating systems are meant to be commodities and for the most part they’re exactly the same. Ubuntu 18.04 is probably going to behave exactly the same on any of the clouds. At least it might seem that way.
Some of the clouds make this optimisation obvious. The clouds offer their own versions of the operating systems and it usually makes sense to use them if you can.
The instances sound like commodities but there are subtle differences between architectures and the speed of the various components. Benchmarking your code on different platforms and different machine types makes great sense and can reveal that some clouds offer a better price/performance ratio.
Many of the machines inside the clouds look like different versions, and the only real difference is the number of CPU cores or the amount of RAM, but sometimes there are architectural differences that can affect your code’s performance.
You’re going to be seeing this logo every day when you log in to check your instances. You might as well like it.