Multi-Region Active / Warm-Standby Failover
Route 53 health checks and Global Accelerator in front of two regions: a full active stack in eu-west-1 and a scaled-down warm standby in us-east-1, joined by Aurora Global, S3 CRR and DynamoDB global tables.
Rendering…
Make it your own.
{
"nodes": [
{ "id": "ra", "type": "container", "label": "eu-west-1 — ACTIVE", "x": 20, "y": 300, "width": 620, "height": 420, "fill": "rgba(220,252,231,0.26)", "stroke": "#15803d" },
{ "id": "rb", "type": "container", "label": "us-east-1 — WARM STANDBY", "x": 680, "y": 300, "width": 620, "height": 420, "fill": "rgba(254,243,199,0.26)", "stroke": "#b45309" },
{ "id": "usr", "type": "user-group", "label": "Global customers", "x": 560, "y": 20, "width": 140, "height": 104, "fill": "#e0f2fe", "stroke": "#0369a1" },
{ "id": "dns", "type": "cloud", "label": "Route 53 — failover routing", "x": 520, "y": 160, "width": 220, "height": 80, "fill": "#e0f2fe", "stroke": "#0369a1", "bold": true },
{ "id": "hc", "type": "heart-pulse", "label": "Health check /healthz", "x": 780, "y": 150, "width": 150, "height": 104, "fill": "#fee2e2", "stroke": "#b91c1c" },
{ "id": "acc", "type": "network-globe", "label": "Global Accelerator", "x": 320, "y": 150, "width": 150, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9" },
{ "id": "alba", "type": "aws-elb", "label": "ALB", "x": 60, "y": 345, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "ecsa", "type": "docker-container", "label": "ECS — 6 tasks", "x": 230, "y": 348, "width": 150, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8", "bold": true },
{ "id": "rdsa", "type": "aws-rds", "label": "Aurora writer", "x": 420, "y": 345, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "caca", "type": "cache", "label": "ElastiCache", "x": 60, "y": 500, "width": 140, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9" },
{ "id": "s3a", "type": "aws-s3", "label": "S3 — eu bucket", "x": 240, "y": 498, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "ddba", "type": "aws-dynamo", "label": "DynamoDB", "x": 420, "y": 498, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "albb", "type": "aws-elb", "label": "ALB", "x": 720, "y": 345, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "ecsb", "type": "docker-container", "label": "ECS — 2 tasks", "x": 890, "y": 348, "width": 150, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8" },
{ "id": "rdsb", "type": "aws-rds", "label": "Aurora replica", "x": 1080, "y": 345, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "cacb", "type": "cache", "label": "ElastiCache", "x": 720, "y": 500, "width": 140, "height": 104, "fill": "#ede9fe", "stroke": "#6d28d9" },
{ "id": "s3b", "type": "aws-s3", "label": "S3 — us bucket", "x": 900, "y": 498, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "ddbb", "type": "aws-dynamo", "label": "DynamoDB", "x": 1080, "y": 498, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "rto", "type": "note", "label": "RTO 15 min · RPO 1 min · failover drill every quarter", "x": 500, "y": 770, "width": 320, "height": 90, "fill": "#fef9c3", "stroke": "#ca8a04" }
],
"edges": [
{ "id": "f1", "source": "usr", "target": "dns", "label": "app.example.com", "thickness": 3 },
{ "id": "f2", "source": "dns", "target": "acc", "thickness": 3 },
{ "id": "f3", "source": "dns", "target": "hc", "label": "evaluates", "style": "dashed" },
{ "id": "f4", "source": "hc", "target": "alba", "label": "probe 30 s", "style": "dashed" },
{ "id": "f5", "source": "hc", "target": "albb", "label": "probe 30 s", "style": "dashed" },
{ "id": "f6", "source": "acc", "target": "alba", "label": "100 % traffic", "thickness": 3 },
{ "id": "f7", "source": "acc", "target": "albb", "label": "0 % until failover", "style": "dashed" },
{ "id": "f8", "source": "alba", "target": "ecsa" },
{ "id": "f9", "source": "ecsa", "target": "rdsa" },
{ "id": "f10", "source": "ecsa", "target": "caca" },
{ "id": "f11", "source": "ecsa", "target": "s3a" },
{ "id": "f12", "source": "ecsa", "target": "ddba" },
{ "id": "f13", "source": "albb", "target": "ecsb" },
{ "id": "f14", "source": "ecsb", "target": "rdsb" },
{ "id": "f15", "source": "ecsb", "target": "cacb" },
{ "id": "f16", "source": "ecsb", "target": "s3b" },
{ "id": "f17", "source": "ecsb", "target": "ddbb" },
{ "id": "f18", "source": "rdsa", "target": "rdsb", "label": "Aurora Global — < 1 s lag", "thickness": 3 },
{ "id": "f19", "source": "s3a", "target": "s3b", "label": "cross-region replication", "style": "dashed", "thickness": 2 },
{ "id": "f20", "source": "ddba", "target": "ddbb", "label": "global table", "style": "dashed", "thickness": 2 }
]
}