If You’re Attempting Hybrid Cloud, Get Out of My Industry
Whichever cloud provider you pick based on your needs and their specific offering, I beg of you — please don’t try hybrid
Check it —
Can I be real a second?
For just a millisecond?
Let down my guard and tell the people how I feel a second?
- Lin-Manuel Miranda, Hamilton
I hate the term cloud, and most everyone I come into contact with in my industry concurs with me (disclaimer: I use the term in my LinkedIn headline; just because I play the game doesn’t mean I have to like it). The cloud existed prior to us calling it such. It’s a buzzword, invented to help describe the ephemeral, elastic, nebulous nature of remote compute and storage services. I used to dislike the term because I thought it was pedantic, as if engineers needed to describe what we were consuming to a layman. Then, as my experience in the space grew and I worked extensively with multiple providers, my dislike turned far more hostile. Let me explain why.
All clouds are equal, but some clouds are more equal than others.
- George Orwell, Animal Farm
When we talk about the major players in the public cloud space, we’re really only talking about runners-up. I am not a shill, nor am I being paid to say this, but ask any random system/software engineer and they’ll readily admit: AWS is tops. No question. GCP, Azure, you name it, they’re all playing catch-up. Make no mistake, they’ve made a lot of progress in the last 2–3 years. But…so has AWS, and it’s reached a point where AWS covers as many bases in the (ugh) cloud space as its parent company does in e-commerce.
So, as the gap in features and value-added services across providers widens, any decision to use a provider other than AWS becomes increasingly difficult to justify. In an attempt to do so, many mid/upper-level management or executives in tech will make the bold declaration that strikes fear and loathing in the hearts of their engineering staff:
We will become hybrid cloud consumers.
What does hybrid cloud mean? Similar to most other buzz words (DevOps, SRE, I’m looking at you), hybrid cloud can be difficult to pin down. In some cases, it can just point to workload portability between providers. More often than not, though, it’s defined by the desire to seamlessly manage workloads simultaneously across multiple providers.
I mean, sure, that’s sexy as hell. Who wouldn’t want to be able to do that? But, as engineers are acutely aware, the devil’s in the details. What sounds like unicorn tears and pony piss is actually a shitload of engineering work and technical debt that literally never goes away. Why’s that? Because we’re not dealing with static {I/P}aaS platforms; they’re constantly updated, and as new features are rolled out, the integration that provides provider agnosticism has to be continually updated to match. For example, let’s look at a common service that’s ubiquitous across providers: Identity & Access Management, or IAM.
Now, AWS’ IAM offering predates Google or Microsoft’s cloud offerings even being publicly available. That fact alone speaks volumes of the head start they have. This isn’t just about functionality. AWS has millions of users, and most of them started using IAM as soon as it was released. Bug reports and feature requests from users followed, and improvements were shipped. AWS IAM is now so tightly-integrated with the rest of that platform’s services that other providers have to simply mimic their approach to succeed (sadly, a step neither Google nor Microsoft has taken to this point).
If you’re in an organization that is espousing the ideal that a hybrid cloud approach is sustainable, you either have to engineer around the disparity between AWS’ services and the other providers’, or simply ignore the features of IAM that are missing from Google and Microsoft. Which path should you take?
Before I answer that, I have to touch on a topic that’s not only relevant, but very near and dear to me: the ever-elusive PRIVATE CLOUD.
Stop treating your datacenter like it’s the cloud.
- Every syseng ever
It is sooo trendy right now in the enterprise space (who else would have the hubris to do this?) to call on-premise infrastructure a private cloud once they have OpenStack or Eucalyptus or VMWare up and running. Even with an extremely pragmatic approach to standing up private compute/storage, the truth is that the disparity between the big 3 public providers and whatever apps you’re running in whatever datacenters you own or lease is so vast that it’s immaterial if you own your infrastructure outright; you’re going to be spending a small fortune on engineering to bridge that chasm. That’s just for platform feature parity — it says nothing about application portability. I’ve seen countless resources and time wasted on forcing a square application stack into a round bastardization of a cloud.
I’m not saying that enterprises shouldn’t run their workloads in the public cloud. On the contrary, I’m a huge advocate of them moving as much of their services as possible to the public cloud; they’re simply run more efficiently. There’s a cost associated with such a move, though, and an enterprise that is contemplating breaking out of their datacenter needs to be cognizant of the large internal turf war that will inevitably ensue. But the value is there, especially for large organizations that are on the cusp of 12-factor application delivery.
Now, back to my question of which lesser evil to choose — neither. Pick a cloud provider based on your needs and their specific offering. Don’t lock yourself in. Whatever you decide, I beg of you — please don’t go hybrid.
But if you do, get out of my industry.