Big-bang rewrite vs strangler fig for a 15-year-old Java monolith
Clean slate ↔ Continuous delivery
Context
Modernise an insurance policy system without stopping the business.
Our policy administration system is 1.4M lines of Java 8, Struts and stored procedures. It works, it makes money, and nobody wants to touch it.
Leadership is tempted by a rewrite on a modern stack. The architects are arguing for a strangler fig: put a facade in front, carve out one capability at a time (quotes, then billing, then claims), and retire the monolith piece by piece.
The business cannot tolerate a feature freeze. Who has done either at this scale, and what would you do differently?
Constraints
- Codebase
- 1.4M lines, Java 8
- Team
- 25 engineers
- Freeze tolerance
- None
Big-bang rewritevsStrangler fig
Community verdict
9 engineers · 4 opinions
With these constraints, what would you choose?
One choice per engineer. You can change it any time.
Risk →
Trade-offs
Dimensions
- Risk
- 1Big-bang rewrite scores 1 of 54Strangler fig scores 4 of 5
- Speed to first value
- 1Big-bang rewrite scores 1 of 54Strangler fig scores 4 of 5
- End-state cleanliness
- 5Big-bang rewrite scores 5 of 5
Community discussion
4 comments
Have you made this decision in production? Share your reasoning.
Sign in to commentContrarian take: a rewrite can work when the domain is small and well understood. A 1.4M-line insurance system with 15 years of regulatory patches is neither.
The hardest part is data, not code. Decide early whether new services own their data and sync back via change-data-capture, or read the legacy schema directly for a while. Both work; switching halfway does not.
I've done both. The rewrite was cancelled after 22 months with 60% feature parity. The strangler took three years but shipped value every quarter.
Start with the capability that changes most often, not the easiest one. That is where the old code costs you the most and where the new code earns trust fastest.
Quotes changes weekly for us, so that is the obvious first slice. Claims barely changes, so it may stay in the monolith for years, and that is fine.