Налаштування мульти-хмарного розгортання (AWS + GCloud / Azure)
Мульти-хмарне розгортання — це одночасне використання двох та більше хмарних провайдерів для запуску додатку. Мотивація бує різною: захист від outage одного провайдера, регуляторні вимоги, використання унікальних сервісів конкретної хмари, ціна оптимізація. Кожна мотивація передбачає іншу архітектуру.
Сценарії мульти-хмари
Резервування (DR). Основне розгортання у AWS, резервне у GCP. Активується тільки при повному outage AWS. Мінімальна складність: дані реплікуються через managed сервіси або власну логіку.
Розподіл навантаження. Різні компоненти у різних хмарах: веб-слой у AWS (ближче до користувачів NA), ML-інференс у GCP (TPU/GPU за вигіднішою ціною), дані у Azure (для клієнтів на Microsoft-стеку).
Повний active-active. Обидві хмари одночасно приймають трафік. Найскладніший варіант — синхронізація стану між хмарами.
Мережева зв'язність між хмарами
Прямий трафік між AWS та GCP через публічний інтернет — нестабільно та небезпечно для репліцірування даних.
Megaport / Equinix Cloud Exchange: фізичне з'єднання через точку обміну трафіком. Мінімальна затримка, стабільна пропускна спроможність. Оптимально для production.
AWS Direct Connect + GCP Interconnect в одну точку обміну: складніше, але дає виділений канал без залежності від публічного інтернету.
Site-to-site VPN: IPSec тунелі між VPC (AWS) та VPC Network (GCP). Швидше налаштовувати, менш надійно, обмежена пропускна спроможність.
Terraform для мульти-хмарного розгортання
Terraform керує ресурсами в кількох хмарах з однієї конфігурації:
terraform {
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
google = { source = "hashicorp/google", version = "~> 5.0" }
}
}
provider "aws" {
region = "us-east-1"
}
provider "google" {
project = "my-project"
region = "us-central1"
}
# AWS: основний кластер
resource "aws_eks_cluster" "main" { ... }
# GCP: DR кластер / ML-компоненти
resource "google_container_cluster" "dr" { ... }
DNS-маршрутизація між хмарами
Cloudflare Load Balancing — працює з endpoints у будь-яких хмарах. Origin pools:
- AWS ALB (us-east-1) — weight 80
- GCP Cloud Load Balancing (us-central1) — weight 20
Failover: при деградації AWS pool — Cloudflare перенаправляє весь трафік у GCP.
Route 53 + GCP Cloud DNS при active-active: CNAME з health check, TTL 60 секунд.
Синхронізація даних
Об'єктні сховища: rclone sync S3 → GCS або навпаки. Або додаток пише в обидва одночасно (dual write pattern).
Бази даних: CockroachDB, YugabyteDB, або Spanner (тільки GCP) нативно підтримують multi-region/multi-cloud через реплікацію Raft. Альтернатива — Debezium CDC з PostgreSQL у Kafka, consumer пише у GCP DB.
Секрети: HashiCorp Vault — єдина точка для обох хмар. Vault кластер у одній хмарі, додатки у обох читають з нього через mTLS.
Kubernetes як унісуючий шар
При роботі з Kubernetes у обох хмарах (EKS + GKE) можна використовувати єдиний control plane через:
- Anthos (Google): керує кластерами у GKE, EKS, AKS з однієї консолі
- Azure Arc: Microsoft еквівалент
- Rancher: open source multi-cluster management
Єдиний GitOps workflow (ArgoCD або Flux) розгортає одні й ті ж маніфести у обидва кластери.
Складності та як з ними працювати
Різні API та сервіси. AWS S3 ≠ GCS (хоча дуже схожі). Використовувати абстракції (boto3 + google-cloud-storage за спільним інтерфейсом) або libcloud.
Різні IAM моделі. Workload Identity Federation дозволяє GCP сервісам отримувати тимчасові AWS credentials через OIDC.
Observability. Централізований моніторинг обов'язковий. Datadog, Grafana Cloud, або OpenTelemetry Collector, агрегуючий метрики з обох хмар.
Latency. Міжхмарні запити додають 50-150ms. Архітектура повинна мінімізувати synchronous cross-cloud calls.
Терміни реалізації
- Мережева зв'язність (VPN або Interconnect) — 3-7 днів
- Terraform модулі для обох хмар — 5-10 днів
- DNS failover + load balancing — 2-3 дні
- Синхронізація даних — 5-14 днів (залежить від вибраного методу)
- Observability + тестування — 3-5 днів
Разом: 4-8 тижнів для повноцінного мульти-хмарного розгортання.







