Multi-Cloud Deployment Setup (AWS + GCP / Azure)
Recently we deployed an active infrastructure for a fintech startup: AWS for transactional workloads, GCP for ML inference. The client saved 200,000 rubles per month by redistributing load. Uptime over six months — 0. Deployment speed: 5 weeks, twice as fast as market average thanks to Terraform and GitOps.
Multi-cloud deployment means running your application across two or more cloud providers simultaneously. We have delivered over 20 projects on AWS, GCP, and Azure. Motivations vary: protection against a single provider's outage, regulatory requirements, access to unique services, or cost optimization. We offer a free project evaluation and propose an optimal architecture.
Scenarios for Multi-Cloud
Disaster Recovery (DR). Primary deployment in AWS, backup in GCP. Activated only during a full AWS outage. Minimal complexity: data replicated via managed services or custom logic.
Load Distribution. Different components in different clouds: web layer in AWS (closer to NA users), ML inference in GCP (cheaper TPU/GPU), data in Azure (for Microsoft-stack clients).
Full Active-Active. Both clouds handle traffic simultaneously. The most complex variant — requires state synchronization between clouds.
Network Connectivity Between Clouds
Direct traffic between AWS and GCP over public internet is unstable and insecure for data replication. Megaport/Equinix Cloud Exchange provides three times lower latency compared to site-to-site VPN.
| Method | Advantages | Disadvantages | Setup Time |
|---|---|---|---|
| Megaport / Equinix Cloud Exchange | Minimal latency, stable bandwidth | Additional cost for exchange point | 3–7 days |
| AWS Direct Connect + GCP Interconnect | Dedicated channel, no internet dependency | Complex setup, carrier lock-in | 5–14 days |
| Site-to-site VPN | Fast deployment | Less reliable, limited bandwidth | 1–3 days |
For production, we recommend the first option.
Why Terraform is the Standard for Multi-Cloud
According to HashiCorp documentation, it manages resources across multiple clouds from a single configuration:
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: primary cluster resource "aws_eks_cluster" "main" { ... } # GCP: DR cluster / ML components resource "google_container_cluster" "dr" { ... } How to Set Up Terraform for Multi-Cloud
- Install Terraform CLI version >=1.5.
- Create a configuration file with required_providers for AWS and GCP.
- Configure providers: specify regions, project IDs.
- Describe resources for each cloud in separate modules.
- Apply the configuration with
terraform apply.
DNS Routing Between Clouds
Cloudflare Load Balancing works with endpoints in any cloud. Origin pools:
- AWS ALB (us-east-1) — weight 80
- GCP Cloud Load Balancing (us-central1) — weight 20
Failover: if the AWS pool degrades, Cloudflare redirects all traffic to GCP. Route 53 + GCP Cloud DNS for active-active: CNAME with health check, TTL 60 seconds.
How to Synchronize Data Between Clouds
Object storage: rclone sync S3 → GCS or dual write pattern. Databases: CockroachDB, YugabyteDB, or Spanner (GCP only) natively support multi-region/multi-cloud via Raft replication. Alternative: Debezium CDC from PostgreSQL to Kafka, consumer writes to GCP DB. Secrets: HashiCorp Vault — a single point for both clouds. Vault cluster is placed in one cloud, applications in both read from it via mTLS.
| Synchronization Method | Consistency | RPO | Implementation Complexity |
|---|---|---|---|
| rclone (object) | Eventual | 5–30 min | Low |
| Dual write (app) | Strong | 0 | Medium |
| CDC (Debezium) | Eventual | <1 sec | High |
Kubernetes as a Unifying Layer
When using Kubernetes in both clouds (EKS + GKE), you can adopt a unified control plane via:
- Anthos (Google): manages clusters in GKE, EKS, AKS from one console
- Azure Arc: Microsoft's counterpart
- Rancher: open source multi-cluster management
A unified GitOps workflow (ArgoCD or Flux) deploys the same manifests to both clusters.
Challenges and How to Address Them
Different APIs and services. AWS S3 ≠ GCS (though similar). Use abstractions (boto3 + google-cloud-storage behind a common interface) or libcloud.
Different IAM models. Workload Identity Federation allows GCP services to obtain temporary AWS credentials via OIDC.
Observability. Centralized monitoring is mandatory. Datadog, Grafana Cloud, or OpenTelemetry Collector aggregate metrics from both clouds.
Latency. Cross-cloud requests add 50-150ms. Architecture must minimize synchronous cross-cloud calls.
What Is Included in Our Work
- Architectural diagram of the multi-cloud solution
- Terraform modules for AWS and GCP/Azure
- DNS routing and load balancing configuration
- Data synchronization and secrets management setup
- Observability configuration (logs, metrics, alerts)
- Operations documentation
- Team training
- One month of post-launch support
Implementation Timeline
- Network connectivity (VPN or Interconnect): 3–7 days
- Terraform modules for both clouds: 5–10 days
- DNS failover + load balancing: 2–3 days
- Data synchronization: 5–14 days (depends on method)
- Observability + testing: 3–5 days
Total: 4–8 weeks for a full multi-cloud deployment. Our clients typically save 30% on cloud costs, which for large projects can reach hundreds of thousands of rubles per month.
We guarantee quality: our certified engineers have experience with AWS, GCP, and Azure. Contact us for a detailed discussion of your scenario. Order a turnkey multi-cloud deployment. Get a consultation from our architect today.







