Enterprise Global Monolith Refactor & Verification Acceleration
Inherited a years-old legacy monolith serving global enterprise brands. Profile verification and document generation took 10 minutes per request, frequently stalling web servers and locking records.
Ruby on Rails • Java Spring Boot • Azure
The bottleneck: a ten-minute request
The cost of that design was not the ten minutes themselves — it was what those ten minutes occupied. Every verification held a request thread for its full duration, so a modest burst of concurrent verifications was enough to exhaust the available workers and leave the rest of the application queueing behind work that had nothing to do with it. Users who never touched verification saw the whole platform slow down.
The second cost was correctness. Records involved in a verification stayed locked while generation ran, so a process that failed partway left rows held and work half-finished, with no safe way to retry — re-running risked issuing a second copy of a document that had already been generated.
The architecture: idempotent work, moved off the request path
Decoupled synchronous generation into an idempotent async job pipeline. Led phased 11-month transition to modern services while maintaining unbroken production availability.
Moving generation off the request path is the obvious half of that sentence. The half that decides whether it works is idempotency. Asynchronous work is retried work — a job that fails, times out, or is redelivered will run again — so every unit of work had to be safe to execute twice. Keying each job so that a repeat produced the same result rather than a second document is what made at-least-once delivery acceptable, and what turned a partial failure from an incident into a retry.
The migration itself was the harder constraint. The platform served global enterprise brands and could not be taken offline for a cutover, so replacement services stood up alongside the monolith and assumed responsibilities incrementally, one path at a time, with the original code left in place until its replacement had been proven under real production traffic.
The outcome
Verification went from 10 minutes to 50 seconds — a 12x latency reduction — and the web tier stopped absorbing the cost of work that never belonged on the request path in the first place. Platform uptime held at 99.9% across the transition, with zero service interruptions.
The durable result is less visible than the latency figure. Verification failures became retryable rather than manual recovery work, and shipping changes to that path no longer required a maintenance window.
[NDA PROTECTED / ANONYMIZED]