digraph G { node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ] # rankdir=LR; subgraph cluster_local { editor [ label="Local editor" ]; git [ label="Local version control" ]; localweb [ label="Development webserver" ]; } subgraph cluster_production_datacenter { label="First data center"; subgraph cluster_production { label="Production environment" prodvm [ label="Production Server\nuwsgi,nginx,postgres" ]; repo [ label="Code repository\n(f.i. git)"]; monitoring [ label="Monitoring server" ]; } subgraph cluster_staging { label="Staging environment" stagingvm[ label="Staging Server" ]; } } subgraph cluster_offsite { label="Second data center"; backupvm [ label="Backup server" ]; monitoringmonitor [ label="Monitoring server" ]; } editor->git; git->repo; editor->localweb; repo->prodvm [ label="Deploy after staging" ]; repo->stagingvm [ label="Pre prod deployment" ]; prodvm->backupvm [ label="Daily backup" ]; monitoring->prodvm [ label="Verify operation\nand alert on failure" ]; monitoringmonitor->monitoring [ label="Monitor the monitoring service"]; }