Multi-Cloud Strategies
1 - Architecture patterns
1.1 Active-Passive (DR)
Characteristics:
- RTO: 15-60 minutes
- RPO: Minutes to hours
- Cost: Moderate (minimal DR)
1.2 Active-Active
Characteristics:
- RTO: Seconds
- RPO: Near zero
- Cost: High (dual infrastructure)
1.3 Cloud Bursting
Characteristics:
- Use a secondary cloud to absorb spikes
- Cost-effective if well configured
- Requires a portable architecture
2 - Workload Placement
2.1 Decision criteria
| Criterion | Description |
|---|---|
| Performance | Required latency, throughput |
| Cost | Service and egress pricing |
| Compliance | Regulatory requirements |
| Data Location | Where the data is |
| Features | Specific services needed |
| Expertise | Team's skills |
2.2 Decision matrix
2.3 Placement example
| Application | Cloud | Reason |
|---|---|---|
| API Gateway | AWS | Mature API Gateway |
| ML Training | GCP | TPU, Vertex AI |
| Office 365 Integration | Azure | Native to Microsoft |
| Global CDN | CloudFlare | Multi-origin |
| Database Primary | AWS | Mature RDS |
| Database DR | Azure | Provider isolation |
3 - Workload portability
3.1 Levels of portability
| Level | Description | Effort |
|---|---|---|
| Containers | Standard Docker | Easy |
| Kubernetes | K8s manifests | Medium |
| Terraform | Portable IaC | Medium |
| Managed services | Proprietary | Difficult |
3.2 Recommended abstractions
# Portable architecture
Compute:
Abstraction: Kubernetes
Implementation:
- AWS: EKS
- Azure: AKS
- GCP: GKE
Database:
Abstraction: PostgreSQL API
Implementation:
- AWS: RDS PostgreSQL
- Azure: Azure Database for PostgreSQL
- GCP: Cloud SQL PostgreSQL
Storage:
Abstraction: S3 API
Implementation:
- AWS: Native S3
- Azure: Blob + S3 compatibility
- GCP: Cloud Storage + S3 compatibility
Messaging:
Abstraction: Kafka API
Implementation:
- AWS: MSK
- Azure: Event Hubs
- GCP: Managed Kafka
3.3 Avoiding Lock-in
4 - Multi-Cloud Disaster Recovery
4.1 DR levels
| Level | RTO | RPO | Description |
|---|---|---|---|
| Backup & Restore | Hours | Hours | Cross-cloud backups |
| Pilot Light | Minutes | Minutes | Minimal infra active |
| Warm Standby | Minutes | Seconds | Reduced infra ready |
| Active-Active | Seconds | ~0 | Full redundancy |
4.2 DR configuration
# dr-config.yaml
primary:
provider: aws
region: eu-west-1
services:
compute:
type: eks
nodes: 10
database:
type: rds-postgresql
multi_az: true
storage:
type: s3
replication: true
dr:
provider: azure
region: westeurope
strategy: warm-standby
services:
compute:
type: aks
nodes: 2 # Scaled down
database:
type: azure-postgresql
replica: async
storage:
type: blob
replication: continuous
failover:
trigger: manual # or automatic
dns_ttl: 60
health_check_interval: 30s
failover_threshold: 3
4.3 DR testing
# DR Test Checklist
1. Verify data replication
2. Validate SSL certificates
3. Test DNS failover
4. Verify network connections
5. Test authentication
6. Validate performance
7. Document the results
5 - Multi-Cloud Migration
5.1 Migration phases
5.2 Migration strategies
| Strategy | Description | Use Case |
|---|---|---|
| Lift & Shift | Move as-is | Fast migration |
| Replatform | Minor adjustments | Containers |
| Refactor | Rearchitecture | Cloud-native |
| Repurchase | New service | SaaS |
| Retire | Remove | Unnecessary legacy |
Summary
In this chapter, we learned:
- The architecture patterns (Active-Passive, Active-Active)
- Workload placement
- Workload portability
- Disaster Recovery strategies
- Migration approaches
Next step
In the next chapter, we will look at Terraform Multi-Cloud.
→ Next chapter: Terraform Multi-Cloud