ARCL — resilient hybrid cloud architecture
A redundant self-service platform spanning Azure and a private cloud, described entirely as Infrastructure as Code.
Context
The goal: a self-service platform that stays available when either cloud goes down. Not a hybrid architecture on paper — a hybrid architecture that survives losing one side, and can prove it.
Architecture
Azure carries the front ends and load balancing; the private cloud, running MicroStack/OpenStack, carries the state. Both sides are joined by an encrypted WireGuard tunnel that acts as the single communication plane between components.
Data lives in a PostgreSQL cluster managed by Patroni: leader election, automatic failover, continuous replication. Volumes are provisioned through Cinder on the private side.
Azure · Azure Load Balancer · OpenTofu · MicroStack / OpenStack · WireGuard · PostgreSQL · Patroni · Cinder
What I did
- WireGuard interconnect between Azure and the private cloud, with the matching addressing plan and routes.
- PostgreSQL cluster made redundant with Patroni: automatic primary failover, no human in the loop.
- Azure load balancing in front of the front ends, with health probes.
- Full environment described in OpenTofu — the infrastructure is rebuildable from scratch, not documented in a wiki.
Outcome
[TODO: metric] measured RTO of the Patroni failover, or full rebuild time of the environment from IaC. Those are the only two numbers that prove an architecture is actually resilient; until they are measured, the rest is intent.
What I took from it
High availability is not settled at diagram level. It plays out in the details: how the load balancer behaves during a Patroni election, what happens when the tunnel flaps, and whether you can — or cannot — rebuild the whole thing with one command.