Skip to content

Multi-Cloud

Multi-cloud is a premium opt-in, not the default. Standard deployments stay single-cloud, multi-region (see HA). When a customer contractually needs cross-cloud DR, data sovereignty, or no-cloud-lock-in, there are two options.

Multi-Cloud — Premium OptionsOption A — Cross-Cloud Warm Standby (active-passive)Route 53 — health-check failoverlatency routing · 60s TTL · promote standby on region lossAWS — us-east-1 (ACTIVE)Keycloak (Fargate) — serving trafficAurora PostgreSQL — PRIMARYlogical-replication PUBLICATIONAzure — East US (WARM STANDBY)Keycloak (standby, promoted on failover)Azure DB for PostgreSQL — SUBSCRIBERwarm standbylogical replicationover VPN / interconnect (or AWS DMS)Native physical log shipping is impossible — Aurora's log-structured storage doesn't expose WAL.Active-passive: RTO = standby promotion + replication catch-up · RPO = replication lagOption B — YugabyteDB geo-distributed (active-active)Keycloak — AWSKeycloak — AzureKeycloak — GCPone YugabyteDB cluster (Raft) spans clouds · no failover gap → the tier that backs 99.99%tradeoffs: gated DB migrations · cross-cloud egress cost · heavier ops · cell tagged capabilities:["multi-cloud"]

Option A — Cross-cloud warm standby (active-passive)

Section titled “Option A — Cross-cloud warm standby (active-passive)”

Replicate the Aurora primary in AWS to an Azure Database for PostgreSQL standby using PostgreSQL logical replication, with DNS health-check failover.

  • Set rds.logical_replication = 1 in the Aurora cluster parameter group; reboot the writer.
  • Create a replication role and a PUBLICATION FOR ALL TABLES.
  • Allow inbound Postgres (5432) from the Azure endpoint over the private link.

Swap Aurora for YugabyteDB (distributed SQL, Raft consensus, PostgreSQL-compatible YSQL). One logical cluster spans clouds, so the database becomes the multi-region consistency layer and cross-site cache replication isn’t needed. This is genuine active-active with no failover gap — the tier that credibly backs 99.99%.

  • Config tables → globally replicated, follower reads (local ~2ms).
  • Session tables → row-level geo-partitioned per region (leader-local writes).
  • authenticationSessions → region-local Infinispan, not replicated.

Pick Option A (standby) when…

You need cross-cloud DR or data sovereignty, tolerate seconds of RPO and a promotion window, and want to stay on managed Postgres.

Pick Option B (Yugabyte) when…

You need true active-active with no failover gap (99.99%), and accept the migration gating, egress cost, and operational weight.

Both are wired into the cell model: a multi-cloud tenant is placed on a cell tagged capabilities: ["multi-cloud"].

Rule of thumb: Aurora Global by default; reach for a cross-cloud standby or YugabyteDB only when a customer needs multi-cloud, no-lock-in, or sovereignty — repriced as a premium.