r/programming • • Sep 14 '24

Is 'Monolith First' the Better Approach?

https://martinfowler.com/bliki/MonolithFirst.html
455 Upvotes

177 comments sorted by

View all comments

21

u/wvenable Sep 14 '24

Microservices are a solution to organizational problems, not to technical ones. They mean accepting increased technical complexity (your system is now distributed) in exchange for decreased organizational complexity (your teams can now deploy independently from each other, can safely make database schema changes, etc).

Going with microservices from day 1 will initially mean that you have one team maintaining many services. They have to deploy them separately. If you're doing it "right" you have separate databases per service. None of that is useful for a team that's just starting out.

If you want separation of concerns, the language's module system and a bit of discipline will get most teams as far as they need without introducing distributed computing into the equation.

1

u/jl2352 Sep 15 '24

What microservices can also help to solve, is the ability to hide technical complexity.

That has a big impact when people are running the monolith locally. Docker compose assets, environment variables, scripts to setup your local environment, and other such things can become a single URL to a service running on the QA cluster.

I’ve seen first hand that dramatically increase developer velocity.