Hacker News new | ask | show | jobs
by hn_throwaway_99 2262 days ago
> Why use true multi-cloud clusters?

> Two reasons: Disaster recovery and freedom from vendor lock in.

In my experience, those two reasons are almost never sufficient to warrant a multi-cloud solution. The costs for multi-cloud are enormous. Another commenter mentioned egress costs, but there are numerous other costs:

1. You've added a lot of complexity on top of existing cloud solutions. That complexity can make things fail in unique ways that may make some of your cherished reliability benefits moot.

2. You are always coding to the "lowest common denominator" of any cloud service, meaning you're missing out on a ton of productivity by forgoing useful services.

I'm just curious if anyone can comment that has experience actually using multi-cloud, and was it worth it?

6 comments

I was one of the individuals who helped put this together and hopefully can answer your question. Specifically about complexity and the productivity of going multi-cloud.

Here is what we found, previously when people talked about going to the cloud the state of the art was everything is done targeting a specific cloud provider, you put your software in immutable AMI's and you use ASG, and ELB, along with S3 and EBS to have really robust systems. You instrument everything with CloudWatch and make sure everything is locked down with IAM and security groups.

What we have seen lately is that because of Kubernetes that has all changed. Most systems being designed today are being done very much provider agnostic, and the only time you want to be locked into a specific technology is when the vendor provided solution doesn't really have an alternative in a truly vendor agnostic stack. Part of what this service is doing is taking the last true bit of Gravity for a cloud provider and removing it, you can now run in both clouds just as easily as if you were all in on one of them. There are some additional costs if you are transferring all your data across the wire, but that is where the power of Vitess's sharding comes in. You can run your service across two clouds, while minimizing the amount of cross talk, until you want to migrate off.

Also while this post makes a big deal about being multi-cloud, this also gives you true multi-region databases. Thats something that was really only available with Spanner or CosmosDB previously, both of which require you to target them explicitly. PlanetScaleDB lets you use your existing MySQL compatible software.

Thanks for the response. While I certainly see the value of being provider agnostic, I just don't see the value of being multi-cloud within the same app or service.

I worked at a company that wrote an internal infrastructure/deploy management tool based on Kubernetes. You could deploy an app either to our colo facility (we were an old business transitioning to the cloud), or you could deploy it to AWS. As a developer I never interacted with the AWS console, this internal tool just hid it all from me. However, while I had the option of deploying to our colo or to the cloud, it was one or the other; the service was only running in one platform in prod.

And after a multi year push to the cloud, the company actually had to stop that huge push because costs were spiralling out of control. Managing all the costs across a huge enterprise of many services (some micro, some not) became a huge challenge. Can't even imagine the additional cost or complexity if some of those services spanned multiple cloud providers.

What does this mean: "PlanetScaleDB lets you use your existing MySQL compatible software"?

I thought you all were offering Vitess not a "custom" solution, or are you speaking marketing?

They are providing a managed Vitess service, which allows you to use almost any software that is compatible with MySQL.
If you wouldn't buy the license key from Oracle, don't rent the network API from Amazon.

Proprietary software can be good in contexts where the integration surface is small. The denominator you want to code against in such a way that you become deeply intertwined with it & would have a hard time backing out is open source.

The "lowest common denominator" being Linux, Postgres, Kubernetes, etc. is not such a terrible thing.

Multi-cloud deployments often happen organically in large organizations, e.g. because there are always legacy systems, possibly different procurement processes in sub-companies, different legal requirements in national branches leading to the use of different vendors or acquisitions of companies with different tech stacks. And while consolidating all IT on a single platform sounds really tempting it can quickly become a disaster and spectacularly fail as well, so multi-cloud deployments are probably here to stay.
You're describing fragmentation, not multi-cloud resiliency or diversification. Think "something catastrophic has happened to AWS but the business can still ship orders because the required services are also running in Azure."
I think the parent topic is about deploying a single application across multiple cloud vendors, not having application A on Azure and application B on AWS
We in the DoD are very intent on ensuring that we don't have single point of failures or the ability for an adversary to cut access to our capabilities. That especially includes compute/store.

So Global high availability (Hybrid multi cloud) and no vendor lock are pretty important.

I agree on the importance of resiliency and avoiding lock-in, but I thought the whole recent cloud contract was the choice of a single vendor for all the DoD's cloud infrastructure?
There is a reason : quit a cew saas provider are on only one cloud... Sooo if you want or need to use a service and want a good connection, you need to go with a few things to the other cloud provider...
Agree with the sentiment.

Many enterprises got really excited about multi-cloud really fast but then gave up once they faced the harsh reality of increased complexity (and, as a consequence, cost and time).

People tend to grossly overestimate the actual size of the ‘common denominator’. On the face of it services look almost identical (every cloud has compute, blob storage, block storage, etc.), in reality, there are so many subtle differences between analogous services (API, pricing model, failure modes, performance, security models) that the support and operation cost easily more than doubles. So even in large enterprises where there is a top-down edict to ‘be multi-cloud’ actual BU/team silos tend to stick to one or the other provider.

The other often overlooked aspect is that clouds offer bulk discounts (I’ve seen up to 40%) for customers that spend many tens or hundreds of millions of dollars, but one can only get this if they stick to one provider. In other words, the economics of multi-cloud doesn’t scale well.

Kubernetes strives to be the common layer, but cross-cloud deployments tend to be very convoluted and non-trivial. They require a lot of manual work, tons of expertise in different domains (networking, security), greatly increase management overhead, and introduce funny new failure modes. In addition, Kubernetes is just one piece of the puzzle. After one is done with Kubernetes, they still need to figure out their user-facing services for launching containers, provisioning and managing databases, message queues, analytics, and machine learning pipelines. Now compare that entire ordeal with clicking a few buttons (or writing several pages of Terraform) and having everything setup and ready to go in an instant and on-demand. Yes, you do have to tie yourself to a single cloud, give up some degrees of freedom, and use extremely high-margin proprietary services (like Kinesis instead of Kafka) but it’s so so much easier, faster and cheaper (at least in the short to medium term).

To answer the original question (and sorry for going off on a tangent), I haven’t seen any company actually succeed with multi-cloud (my sample is 100+ SMBs and large enterprises). Even extremely tech-savvy and sophisticated companies like Twitter (with their shift to GCP) tend to think of all this as something that doesn’t necessarily need to be built anymore and should be bought instead.

What I do see all the time, is companies trying to figure out a way to marry their existing on-prem and (single) cloud provider setups. It is still a struggle though, and will probably always be to a certain extent.

Edit: typos