Disaster Recovery Topology (Pilot Light)
A primary site, an immutable backup vault with cross-region copy, and a pilot-light DR site whose network is pre-provisioned and whose app tier scales from zero on failover — with the RTO/RPO stated on the page.
Rendering…
Make it your own.
{
"nodes": [
{ "id": "prim", "type": "container", "label": "Primary — eu-west-1", "x": 20, "y": 60, "width": 460, "height": 440, "fill": "rgba(220,252,231,0.26)", "stroke": "#15803d" },
{ "id": "vlt", "type": "container", "label": "Immutable backup vault", "x": 540, "y": 200, "width": 260, "height": 280, "fill": "rgba(254,226,226,0.26)", "stroke": "#b91c1c" },
{ "id": "dr", "type": "container", "label": "DR — eu-central-1 (pilot light)", "x": 860, "y": 60, "width": 460, "height": 440, "fill": "rgba(254,243,199,0.26)", "stroke": "#b45309" },
{ "id": "dns", "type": "cloud", "label": "Route 53 — failover record", "x": 560, "y": 20, "width": 200, "height": 80, "fill": "#e0f2fe", "stroke": "#0369a1", "bold": true },
{ "id": "papp", "type": "docker-container", "label": "App tier — ECS ×8", "x": 50, "y": 110, "width": 180, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8", "bold": true },
{ "id": "pdb", "type": "aws-rds", "label": "Aurora writer", "x": 270, "y": 108, "width": 140, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "pobj", "type": "aws-s3", "label": "S3 — documents", "x": 50, "y": 255, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "pvol", "type": "backup-disk", "label": "EBS volumes", "x": 240, "y": 258, "width": 170, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8" },
{ "id": "pfs", "type": "bucket", "label": "EFS — shared files", "x": 50, "y": 380, "width": 170, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8" },
{ "id": "psnp", "type": "clock", "label": "Nightly snapshots", "x": 250, "y": 380, "width": 170, "height": 104, "fill": "#dbeafe", "stroke": "#1d4ed8" },
{ "id": "lock", "type": "lock", "label": "Vault lock — 35-day WORM", "x": 570, "y": 250, "width": 200, "height": 104, "fill": "#fee2e2", "stroke": "#b91c1c" },
{ "id": "copy", "type": "backup-disk", "label": "Cross-region copy", "x": 570, "y": 360, "width": 200, "height": 104, "fill": "#fee2e2", "stroke": "#b91c1c" },
{ "id": "dapp", "type": "docker-container", "label": "App tier — 0 tasks, AMI ready", "x": 890, "y": 110, "width": 200, "height": 104, "fill": "#fef3c7", "stroke": "#b45309" },
{ "id": "ddb", "type": "aws-rds", "label": "Aurora replica", "x": 1130, "y": 108, "width": 140, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "dobj", "type": "aws-s3", "label": "S3 — replica bucket", "x": 890, "y": 255, "width": 130, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "dvol", "type": "backup-disk", "label": "Restored EBS", "x": 1080, "y": 258, "width": 170, "height": 104, "fill": "#fef3c7", "stroke": "#b45309" },
{ "id": "dnet", "type": "aws-vpc", "label": "VPC pre-provisioned", "x": 890, "y": 378, "width": 140, "height": 110, "fill": "#fff7ed", "stroke": "#f97316" },
{ "id": "dscl", "type": "gauge-chart", "label": "Scale to 8 on failover","x": 1080, "y": 380, "width": 190, "height": 104, "fill": "#fef3c7", "stroke": "#b45309" },
{ "id": "rto", "type": "note", "label": "RTO 30 min · RPO 5 min · restore tested every quarter", "x": 300, "y": 560, "width": 320, "height": 90, "fill": "#fef9c3", "stroke": "#ca8a04" },
{ "id": "run", "type": "clipboard", "label": "DR runbook + game-day", "x": 700, "y": 548, "width": 190, "height": 104, "fill": "#f1f5f9", "stroke": "#475569" }
],
"edges": [
{ "id": "r1", "source": "papp", "target": "pdb", "thickness": 2 },
{ "id": "r2", "source": "papp", "target": "pobj" },
{ "id": "r3", "source": "papp", "target": "pfs" },
{ "id": "r4", "source": "pvol", "target": "psnp", "label": "daily 02:00" },
{ "id": "r5", "source": "psnp", "target": "lock" },
{ "id": "r6", "source": "pdb", "target": "lock", "label": "automated backups" },
{ "id": "r7", "source": "lock", "target": "copy" },
{ "id": "r8", "source": "copy", "target": "dvol", "label": "restore on declare" },
{ "id": "r9", "source": "pobj", "target": "dobj", "label": "cross-region replication", "style": "dashed", "thickness": 2 },
{ "id": "r10", "source": "pdb", "target": "ddb", "label": "Aurora Global — RPO 5 min", "thickness": 3 },
{ "id": "r11", "source": "dapp", "target": "ddb", "label": "promoted writer on failover", "style": "dashed" },
{ "id": "r12", "source": "dnet", "target": "dapp", "label": "subnets + SGs ready", "style": "dashed" },
{ "id": "r13", "source": "dscl", "target": "dapp", "label": "failover trigger", "thickness": 2 },
{ "id": "r14", "source": "dns", "target": "papp", "label": "100 %", "thickness": 3 },
{ "id": "r15", "source": "dns", "target": "dapp", "label": "0 % until health check fails", "style": "dashed" },
{ "id": "r16", "source": "run", "target": "dscl", "style": "dashed" }
]
}