You are paying to get back to zero.
That is what a "full rewrite" is. You burn $300K. You freeze the roadmap. Just to rebuild exactly what you already have today.
Your lead dev promises it will take 4 months. It takes 12. Why? Because he is bored. Greenfield code is fun. Reading 5-year-old spaghetti code is painful. So he sells you the rewrite.
"We can't scale with this," he says. Yes, you can. You just don't want to.
The fix is a quarantine.
Isolate the rot. Draw a hard line in the sand. Anything new gets built in a separate, modular monolith. Anything old stays in the legacy one.
The execution:
- Set up a reverse proxy to route traffic to the old or new app.
- Implement a hard policy: zero new features in the legacy codebase.
- Bugs: Fix them in legacy (critical only).
- New features: Build ONLY in the new modular monolith.
Enhancements? Rewrite that specific slice. Route traffic there.
Do not build an API between them:
- Connect the new app to the old DB. Direct access.
- Create new tables for new features.
- Treat legacy tables as read-only.
Yes. You create a hybrid monster. Yes. The architecture diagram looks like a fucking mess.
But you ship. You survive. You pay the debt when it matters.
Ugly revenue beats beautiful nothingness.