← All work
Case 06Monolith decomposition

Meridian

Eleven months of taking a nine-year-old monolith apart while it kept trading, with no feature freeze and no big-bang weekend.

ClientLogistics marketplace
Year2022
RoleArchitect + migration lead
Engagement11 months

01 — The problem

A single Rails application carried every domain, a 40-minute test suite, and a deploy nobody wanted to own. Two previous rewrite attempts had been abandoned mid-flight, which is the most expensive way to learn a lesson.


02 — What I did

Mapped the seams first: bounded contexts, real data dependencies, and which of them were merely alphabetical.

Extracted four services in dependency order behind a strangler facade, each one shipped and stable before the next began.

Kept the monolith the system of record until the last extraction, so a rollback was always one route change away.

Fig. 1 — the system as designed
Fig. 2 — the system in production

Two previous attempts died loudly. This one shipped in increments nobody noticed.
Engineering manager, Logistics marketplace

03 — Outcome

4

Services extracted, zero rollbacks

0 min

Feature freeze across eleven months

6 min

CI, down from forty


04 — What I left behind

A seam map that outlived the migration and now guides new work.

Four services with owners, runbooks and error budgets.

A six-minute CI pipeline the team defends.

Stack
RubyGoPostgresKafkaEnvoyAWS

SlateAll work
Next case — 01 / 2025

Ledgerworks

An event-sourced double-entry ledger, replacing a spreadsheet that had opinions.

Read the case →

Got a system that needsdesigning properly this time?

Contracts from six weeks. I read every enquiry myself and reply within two working days, usually with an awkward question about your data model.

Start an enquiryjoey@startupapps.shopGitHubMedium