A startup launches in three months using a relational database where
every tenant’s data sits in shared tables, filtered by
tenant_id. At launch, this is correct: multi-tenant
isolation is not needed yet; a single database is simpler to operate.
Two years later, the largest customer demands data residency — their
data must stay within EU jurisdiction. Three engineers spend four months
on the migration. The migration was not caused by bad engineering at
launch. It was caused by a deliberate decision that was appropriate at
launch and expensive later.
This is technical debt as architecture: a deliberate tradeoff between the cost of building the right thing now and the cost of changing it later. The startup made the right call. The engineering team that handles the migration paid the interest.