Monoliths are simpler to understand, easier to run, and harder to break - up until you have so many people working on them that it becomes difficult for a team to get their work done. At that point, start splitting off "fiefdoms" that let each team move more quickly again.
Monolith First (2015)
11–20 of 82 posts
Re: Monolith First (2015)
#12the problem with the yagni argument is is you aint gonna need it until you do
I think there is a variant of "you don't currently need it" that people should follow more. Build towards what you think you will need, by all means. But try and only build what you need right now.
However, I do not like the readiness that people have with throwing around the yagni argument for things they don't want to support, build, or disagree with, often contorting or oversimplifying it to get their way.
The yagni argument itself is reasonable, but is often misused/abused.
Re: Monolith First (2015)
#13A monolith is just one microservice. Is there a choice to be made? "We love monoliths so much so we have dozens of them"
Re: Monolith First (2015)
#14Going down the monolith path != Having spaghetti as the core abstraction. :)
Re: Monolith First (2015)
#15Re: Monolith First (2015)
#16Recently was looking at a distributed microservice system at a company that thought they would need massive scale, but pivoted from d2c to enterprise b2b and then found out enterprise b2b companies want data separation. They would have been much better off going monolith first and probably actually sticking with a monolith.
Re: Monolith First (2015)
#17The less certain you are about a system's requirements the more you should prefer a monolith.
A well-understood system (eg an internal combustion engine) has well-defined lines and so it _can_ make sense to put barriers in between components so that they can be tweaked/replaced/fixed without affecting the rest of the system. This gives you worthwhile, but modest overall performance improvements.
But if you draw the lines wrong you end up with inefficiencies that outweigh any benefit modularity could bring.
Start with a monolith and break it up as the system's ideal form reveals itself.
Re: Monolith First (2015)
#18the problem with the yagni argument is is you aint gonna need it until you do
I think there is a variant of "you don't currently need it" that people should follow more. Build towards what you think you will need, by all means. But try and only build what you need right now.
Re: Monolith First (2015)
#19Yes. It does require thinking about the monolith in a way so it can be broken up should the need arise. Going down the monolith path != Having spaghetti as the core abstraction. :)
Re: Monolith First (2015)
#20A monolith is just one microservice. Is there a choice to be made? "We love monoliths so much so we have dozens of them"
A monolith is not a single microservice.
If there is three communicating servces: first has 90% of the business logic, second has 7%, and the last one has 3%. Should we call the first one a monolith? And if they don't communicate?