Which Cloud to Choose?

There are a few virtualization choices out there, and for most startups this choice is necessary. Buying a server is all but completely impractical in this day and age. So it comes down to a few top companies. I have a clear bias toward GCP, and I hope to make the case for it here, but there are reasons to go with other choices in certain circumstances.

Google Cloud Platform

GCP is built for engineers by world class engineers. They are on the cutting edge of technologies to put out to the public — Kubernetes is a form of scheduler inspired by Borg developed a decade earlier. GCP keeps its offering at the correct complexity by deprecating tools when better ones eclipse them. There is generally only one or two ways to get something done. Most importantly, the abstractions, language, and building blocks are thoughtfully designed and robustly built. This makes it easy to build on, and your engineers can focus on your value add instead of infrastructure. Price performance is another important factor here. It can be difficult to compare one vCPU to another at a different company, but Google seems to come out ahead in price comparisons, and uptime is usually unmatched. I worked for Google for four years on both the datacenter teams and Google Cloud Build team. In the datacenter, I saw how precisely and regimented the company is about eking out every last drop of performance from its computers. Most consumers don’t think about it, but Google’s deepest expertise, their product to the world is a high performance datacenter. Every one of their products requires tremendous computing power. This is why they had to build the best datacenters in the world. When I worked on Cloud Build, I saw how the company prioritizes user (engineer) experience — and they have deep knowledge of this, because it is the employer of the most elite engineers out there. I learned while at Google, that large enterprises that were evaluating cloud offerings would become more and more likely to choose Google the longer and more thorough the vetting process. Google was a bit late to the game in cloud computing, they spent a number of years deciding whether to externalize their offering, this is why AWS got such a head start on them, but today, they are fully committed to the project, and have largely caught up in all areas except developer marketshare. This is the largest and main downside to using GCP, not as many developers have learned it.

Amazon Web Services

AWS is the most popular choice for startups and companies in general. It is the most fully featured cloud offering and has the most developers who are experts in building on it. Since Amazon is more mature than others, it has come out with some advanced features earlier than others, but it’s usually best not to be using advanced cloud features, since you want to avoid lock in as much as possible. The fundamental fact I come back to with Amazon is that at its core, the company is an ecommerce company who built its datacenters as a necessity to sell product. It’s not as committed to engineering excellence as Google, or even Microsoft. Some of the products are confusing on AWS, because they rarely deprecate or remove options. This means there can be 3 or more ways to do a single task, and this creates a bloated interface. All in all, it wouldn’t be a bad choice to go with AWS, and you’ll find lots of help to get moving on it.

Microsoft Azure

Azure is Microsoft’s solution. It’s less fully featured than GCP and AWS, and is less popular for generic computing applications. The main reason you would use Azure is for easy integration with other Microsoft products. If you rely heavily on Office 365 or other Windows OS based tools, Azure makes sense. This is how building in an ecosystem helps create lock in for Microsoft. But if you’ve made your other technology choices there, you’ve already made that tradeoff.

Digital Ocean

Digital Ocean I see as a bit of a marketing play for people that are a bit less technical. It’s not fully featured and I’ve run across a number of bugs and bad support. They use metaphors for certain types of technical tools, which makes it all the more confusing to know what you’re getting and its exact function. I wouldn’t recommend Digital Ocean at all.

Heroku

Heroku has carved out a niche for Ruby on Rails apps. While I don’t particularly like RoR, it can be pretty seamless to deploy on Heroku. The problem is costs skyrocket as soon as you start to scale. It’s cheap and easy to deploy a toy project, but anything that gets traction will become prohibitively expensive.

Conclusion

All in all, I think the choice is between AWS and GCP. I think GCP is more robust, simple yet powerful, and cheaper. There are many devops working in GCP, but definitely many more on AWS. If you’re starting to deploy your app in a more systemized way, or are making these decisions for your company, reach out, and I can add some more color to these generalizations for your particular situation.