Multi-Cloud-Topologie
1) Wenn Multi-Cloud gerechtfertigt ist
Treiber:- Zuverlässigkeit/Verfügbarkeit: unabhängige Fehlerzonen auf Anbieterebene.
- Souveränität/Compliance: Speicherung/Verarbeitung nach Gerichtsbarkeit (Datenresidenz).
- Risikomanagement: Reduzierung des Vendor-Lokins, Kauf-/Preishebel.
- Geografie/Performance: näher am Nutzer und an den Datenquellen.
- Besondere Services: Zugang zu den besten „Nischen“ -Möglichkeiten verschiedener Clouds.
- Erhebliche Komplexität von SDLC/Beobachtbarkeit/Operationen.
- Steigende Egress-Kosten und Latenz zwischen den Anbietern.
- Unterschiedliche IAM/Netzwerkmodelle/Quoten/Limits → mehr Betriebsrisiken.
2) Topologische Muster
3) Netzwerkschicht und Routing
3. 1 Globaler Eingang
GSLB/DNS-Ruling: latency-/health--based; kurze TTLs in Migrationsfenstern.
Anycast + L7-Proxy: einheitliche IP, Routing für die Gesundheit von Regionen.
Richtlinien nach Gerichtsbarkeit: Geoblocking/Geo-Pinning-Verkehr.
python def pick_cluster(client, intent):
вход: ip, geo, tenant, feature allowed = filter_by_compliance(client. geo) # sovereignty healthy = [c for c in allowed if sdo (c). ok and slo(c). ok]
return argmin(healthy, key=lambda c: latency_estimate(client, c))
3. 2 Konnektivität zwischen den Wolken
Private Kanäle/peering wo möglich; ansonsten - TLS + mTLS über das Internet.
Egress-Steuerung: Aggregation/Kompression, lokale Caches/Aggregatoren.
Netzwerke als Code: Terraform/Blueprints, CIDR-Richtlinien, Routen und egress-Gateways.
4) Daten und Konsistenz
4. 1 Modelle
Eine global starke Konsistenz zwischen den Wolken ist selten realistisch (Latenz/Gitter/Kosten).
Pragmatische Entwicklung: bidirektionale CDC (Change Data Capture) mit Konfliktlösung.
CRDT/idempotency: für Zähler/Sätze/Protokolle - kommutative Strukturen.
4. 2 Muster
Dual-write c outbox: Transaktionsaufzeichnung des Ereignisses → Broker → Replikation in die benachbarte Cloud.
Read-local/Write-home: Einträge - in die „home“ Region/Cloud, Lesungen - lokal (mit Versionen und Stale-Policy).
Split-Brain-Verteidigung: Determinante der Divergenz, „Kompensation“ (saga), manuelle Arbitrage für monetäre Invarianten.
DB → Debezium/stream → Events(topic@vN) → Cross-cloud relay → Apply w/ resolver resolver: prefer_higher_version prefer_home business_rule()
4. 3 Objektspeicher
Asynchrone Baket-Replikation, Hashes/Manifeste, Dedup.
ILM-Richtlinien (hot/warm/cold) sind Cloud-unabhängig.
Souveränitätsregeln: „PII verlässt UA/EWR nicht“ - als Code validiert.
5) Identität, Geheimnisse und Schlüssel
Identitätsföderation: ein einzelner IdP, kurz lebende Token, OIDC-Trust auf Pipelines.
Geheimnisse: KMS/HSM jeder Wolke + Vault-Klasse Abstraktion; Dual-Key für Rotationen/Schaltungen.
PoLP/ABAC: Rechte basierend auf Attributen (cloud, region, env, data_class).
Crypto-Domains: Unterschiedliche Root-Keys für Jurisdiktionen → Crypto-Erasure nach Region.
6) Exekutive Umgebung: Cluster und Meshi
Multicluster (K8s): ein Cluster pro Cloud/Region; Fleet-Steuerung über GitOps (ArgoCD/Fleet).
Сервис-меш: mTLS, retries, circuit-breakers, failover policies cross-cluster.
- Statische Dienste → am Ort der Daten.
- Interaktive APIs → in jeder Cloud (Active/Active).
- Batch/ETL → „grüne“ Fenster/billige Region (carbon/cost aware).
rego package placement
allow[cloud] {
input. service. pii == false cloud:= input. clouds[_]
cloud. features. contains("cheap_gpu")
}
deny["PII outside allowed region"] {
input. service. pii == true not input. target_region in {"eu-central","eu-north","eu-west"}
}
7) Observability und SLO in der Multi-Cloud
Multi-Array-Tags: 'cloud', 'region', 'tenant', 'data _ domain'.
SLI/SLO per Cloud und global: „global verfügbar, wenn ≥1 Cloud verfügbar ist“.
Telemetrie-Erfassung: lokal + Aggregation mit egress-Steuerung.
Traces: globale Trace-Id, Kontext-Propagierung, Tail-basiertes Sampling von „Tails“.
Vergleich Dashboards: A vs B per endpoint/p99/error-budget burn.
8) SDLC/IaC und „Richtlinien als Code“
Einheitliches IaC-Mono-Verzeichnis: Provider-Module/Stacks, Invarianten (Tags, Netzwerke, Verschlüsselung).
GitOps: deklarative Manifeste, Drift-Detail, Promo-Umgebungen.
Konformitätstests: API/Event-Verträge, Canaries für beide Clouds.
Release Gates: Block mit dem Risiko, das SLO in einer Cloud zu stören (Burn Rate Forecast), wenn keine Übereinstimmung mit der Souveränität besteht.
yaml gate: multi-cloud-slo-and-compliance checks:
- slo_burn_rate(global) < 1. 0
- slo_burn_rate(cloud:A) < 2. 0
- compliance_rule("pii_in_region") == pass
- egress_forecast < budget on_fail: block_release
9) Kosten und Kohlenstoff (FinOps/GreenOps)
Einheiten-Metriken: „$/req“, „$/GB-egress“, „gCO₂e/req“.
Kosten/Kohlenstoff Routing für nicht-kritische Batch: billig/„ grüne “Uhren/Regionen.
Egress-cap: Budget für den Interconnect-Verkehr; Cache/Aggregation/Kompression/TTL.
RI/SP/Committed Use in jeder Cloud + „elastische Schicht“ auf Spot/preemptible.
10) Testen von Fails und Übungen
Spieltage: „Wolke A löschen“, „DB verlangsamen“, „egress Grenzen durchbrechen“.
Check-Punkte: RTO/RPO, DNS-Konvergenzzeit, Ficha-Flag-Roll, Cacheverhalten.
Chaos-Smoke in Releases: Der Abbau von Abhängigkeiten darf nicht zu einer Kaskade von Retrays führen.
11) Sicherheit, Privatsphäre, Compliance
Zero-Trust: mTLS zwischen Diensten/Clouds, Signatur von Artefakten, SBOM.
DPA/Souveränität: Datensatzkataloge, Lokalisierungsregeln, Legal Hold über ILM.
Geheimnisse und Schlüssel: Rotations-Log, compromise/kill-switch Playbooks.
Webhooks und externe Integrationen: Signatur, Anti-Replay, regionale Endpunkte.
12) Daten-/Ereignisintegrationsvorlagen
12. 1 Bidirektionale Kafka-Brücke (Idee):
cloudA. topicX ⇄ relayA→B ⇄ cloudB. topicX cleanup. policy=compact,delete key-based routing idempotent producer
12. 2 Outbox-Tabelle und Relais:
sql
-- outbox id uuid pk, aggregate_id, type, payload jsonb, version int, created_at timestamptz
-- transactional insertion with domain table change
Als nächstes liest der Connector die Outbox und veröffentlicht das Ereignis in einem lokalen Broker + Relay.
12. 3 Konfliktstrategie (Pseudo):
python def resolve(local, remote):
if local. version > remote. version: return local if remote. version > local. version: return remote equal versions: domain rules return business_tiebreak (local, remote)
13) Anti-Muster
„Ziehen wir alles, wie es ist, in zwei Wolken“. Doppelte Schwierigkeit ohne Gewinn.
Synchrone Inter-Cloud-Transaktionen auf dem heißen Pfad.
Ein einziger globaler Verschlüsselungsschlüssel für alle Clouds/Regionen.
Logs/Traces mit PII ohne Maskierung und ohne Lokalisierungsregeln.
Keine externen Messungen (die tatsächliche Verfügbarkeit ist nur auf der Statusseite des Anbieters sichtbar).
Keine Playbooks/Übungen - DR funktioniert nicht zum Zeitpunkt H.
Kaskade von Retrays beim Abbau einer einzelnen Wolke (keine Limiter/Shading/Breaker).
Nicht gemeldete egress - unerwartete Rechnungen.
14) Checkliste des Architekten
1. Multi-Cloud-Treiber (SLO/DR/Souveränität/Kosten) formuliert?
2. Muster ausgewählt (AA/AP/DR-Only/Poly-Service) und RTO/RPO fixiert?
3. Netzplan: GSLB/Anycast, Gesundheitstests, egress-cap, private Kanäle?
4. Daten: CDC/CRDT/dual-write, Konfliktlösungsregeln, outbox?
5. Souveränität: Karte der Daten/Regionen, Politiker als Code und ihre Tore?
6. IAM/Secrets: Federation, Short Living Tokens, KMS nach Domains?
7. Cluster/Mesh: Failover-Strategie, Limiter/Breaks/Timeouts?
8. Observability: Labels' cloud/region', SLO per cloud und global, externe Synthetik?
9. SDLC/IaC/GitOps: Einheitlicher Katalog, Konformitätstests, Release Gates?
10. FinOps/GreenOps: Einheitenmetriken, egress Budget, „grüne“ Batch-Fenster?
11. Übungen: Regelmäßige Spieltage, Protokolle und Retests?
12. Exit-Plan: Datenexport/Formate/Deadlines, Second-Source für Schlüsseldienste?
15) Mini-Beispielkonfigurationen
15. 1 Richtlinien für das Routing nach Gerichtsbarkeit (Pseudo-YAML):
yaml route:
pii:
allowed_regions: ["eu-central","eu-north","eu-west"]
deny_cross_cloud: false analytics:
allowed_regions: ["eu-","us-"]
prefer_low_carbon: true weights:
eu-central@cloudA: 60 eu-central@cloudB: 40
15. 2 Gesundheitsprobe für GSLB:
http
GET /healthz
200 OK x-region: eu-central x-slo: ok at-risk breach
15. 3 Failover-Fitha-Flag (Pseudocode):
python if slo_at_risk("cloudA", "payments"):
route. weight["cloudA"] -= 20 route. weight["cloudB"] += 20 enable_stale_rates(ttl=1560)
Schlussfolgerung
Multi-Cloud ist eine Ingenieurdisziplin, kein Label. Es erfordert klare Motive, eine bewusste Topologieauswahl, einen durchdachten Umgang mit Daten, eine starke Automatisierung und strenge Richtlinien. Wenn Sie Risiken und Kosten messen, Netzwerke und Daten „nach Lehrbuch“ aufbauen, Failover trainieren und Kurs auf Einfachheit halten, gibt Ihnen die Multi-Cloud-Plattform Widerstandsfähigkeit, Flexibilität und Freiheit - ohne Überraschungen bei Rechnungen und ohne Kompromisse bei der Nutzererfahrung.