Adding multiple cloud providers to be resistant on a global outage of one cloud provider and then adding a SPOF by cloudflare loadbalancing is one of the least intelligent ideas i heard this week.
We could have been more clear in the post but the availability gain here is focussed on internal tasks. As an example, we retry failed payments on a user defined schedule - we'd like to be able to do that from anywhere we choose.
Keeping these background processes going matters, and that's what we've worked hard to ensure we can achieve.
This is an interesting point, and I think one that anyone considering this approach should consider. The way we segregate multi-cloud is the delivery of primarily our front-end app. Depending on if you are in an EU or US region you will be redirect to an API instance and then have direct connectivity of that API, this is mainly due to regulatory requirements.
As a 2nd data point check-out https://www.backplane.io/ - from Blake Mizeranyt the (former) technical lead of etcd
I've previously had to work with an application that was deployed to multiple clouds. In our case, we deployed the whole app to each cloud as an independent environment, so our environments included entries like: foo-production, foo-staging, foo-development, bar-production, bar-staging. It kept the architecture a bit simpler, but in turn required more extensive monitoring and testing. The biggest annoyance was having to setup tools and services multiple times. If you automate stuff it's not so bad, but not all tools can be easily automated.
If I were creating a new app I'd probably contain each backend service to a single cloud environment. Different services can be in different cloud environments, but no cross-cloud services. I'm uncertain the extra complexity would be worth it, at least for many of the use-cases I'm considering. Having fewer environments to setup and maintain is a big win in my book.
Yes, this has been my experience with various companies attempting to do this - however there's been a lot of progress recently in both cloud vendor standardization and the rise of containers and kubernetes that makes this much easier.
Running multiple Kubernetes clusters in different cloud vendors with configuration details abstracted away in a more self-contained service that can be deployed by itself as the bootstrap process makes things much easier. Consul is a good system for this, deploy it once (manually if necessary) then everything else refers to it to figure out the environment details automatically.
Architecturing and running in multiple clouds is easy, it's exactly the same as supporting multiple datacenters and that's not something new or ground breaking.
The only challenging part is the database access. Except cassandra, there isn't anything common or free that can take writes from multiple data centers simultaneously.
Riak Enterprise supports multiple data centers. Bet365 has, or is in the process, of purchasing all of Basho's IP, and plans are to open source the Enterprise bits[1].
Not sure if Riak is considered common, and the multi DC is not yet free.
Multi data center was restricted to Riak Enterprise and required a paid contract. That's what I was referring to, as your comment was talking about data stores that supported multi-region or multi-cloud.
Forgot to say. I am familiar with Riak. Worked at one of the competitors of the company who acquired them.
I really hope that the Entreprise version will be open sourced and will be happy to add it to the list of multi cloud options. At the moment, I can't do it in good faith since it's not gonna be released any time soon, and it's impossible to procure now that the vendor is bankrupt.
What? It's never easy, but you can definitely do multi-cloud/regions without Cassandra. It's not the only database that does multi-region nor is it a good fit for every scenario.
Also CockroachDB supports multiple regions as a postgresql-compatible database and Apache Pulsar is next-gen Kafka with multi-region replication built-in.
It's also legal data requirements. Many EU businesses ask that their data never leave Europe. How do you separate your product in to multiple continents and still work seamlessly.
It is not easy. Sometimes it is just easier to stand up everything you have in NA in the EU, and get a new tld (like .eu). It's a mess. Multi-cloud is HARD.