Skip to content
Graphviz (DOT) templates

Strangler migration with reconciliation

Includes data reconciliation and gradual routing with explicit migration ownership boundaries. Original worked design example; adapt responsibilities, thresholds and assumptions to your system.

Template previewGraphviz (DOT)
G client Clients router Migration router client->router request old Legacy service router->old legacy route new New service router->new migrated route oldDB Legacy database old->oldDB write newDB New database new->newDB write cdc Change capture oldDB->cdc committed changes recon Reconciliation oldDB->recon reference snapshot newDB->recon candidate snapshot cdc->newDB replicate unmigrated data metrics Comparison metrics recon->metrics differences flags Rollout rules flags->router cohort rule metrics->flags gate progression

What this template contains

Graph
Directed
Edges
12
Source
27 lines

Make it your own.

digraph G {
 graph [rankdir=LR, bgcolor="transparent", pad="0.3", nodesep="0.45", ranksep="0.8"];
 node [shape=box, style="rounded,filled", fillcolor="#edf4fa", color="#47728d", fontname="Arial", fontsize=12, margin="0.14"];
 edge [color="#64748b", fontname="Arial", fontsize=10];
 client [label="Clients"];
 router [label="Migration router"];
 old [label="Legacy service"];
 new [label="New service"];
 oldDB [label="Legacy database"];
 newDB [label="New database"];
 cdc [label="Change capture"];
 recon [label="Reconciliation"];
 flags [label="Rollout rules"];
 metrics [label="Comparison metrics"];
 client -> router [label="request"];
 flags -> router [label="cohort rule"];
 router -> old [label="legacy route"];
 router -> new [label="migrated route"];
 old -> oldDB [label="write"];
 new -> newDB [label="write"];
 oldDB -> cdc [label="committed changes"];
 cdc -> newDB [label="replicate unmigrated data"];
 oldDB -> recon [label="reference snapshot"];
 newDB -> recon [label="candidate snapshot"];
 recon -> metrics [label="differences"];
 metrics -> flags [label="gate progression"];
}