- stage
- seedling
- planted
- 2026-08-25
- tags
- [architecture]
seedling— A rough idea. Incomplete, possibly wrong.
Extract what hurts, keep what works
Evolving a monolith by moving selected capabilities out, one reason at a time.
When a monolith gets slow or fragile, the big rewrite is tempting. The alternative is to move out only the capabilities that have a specific reason to leave:
- performance: it’s a bottleneck;
- reliability: it needs to be more dependable than it can be where it is;
- independent deployment: it needs its own release schedule.
Everything without such a reason stays where the domain logic already lives.
Where I did this: Moving parts of a Rails monolith to Go, not all of it (Rails → Go, at JobReady).
Open questions
- How do you notice when “selected capabilities” is slowly turning into a rewrite after all?
- What’s the smallest useful seam for the first extraction?
$ grep -rl "[[extract-dont-rewrite]]" ~ # linked from
- blog/rails-monolith-selected-go-services.mdMoving parts of a Rails monolith to Go, not all of it
The general version of this lives in the garden: Extract what hurts, keep what works.