Monoliths are good enough for almost everything. Microservices need justification.
That’s like saying a bicycle is good enough for everything, but a motorbike needs justification. They both get you from point A to point B, but they serve different purposes.
Dr Milan Milanović Agreed with 2nd statement - however would be good to back the first one with extra proofs and/or business cases. Are modular monoliths really good in cases when you are expected to mix programming languages (Java, C#) with (Python) which is quite common this days due majority of companies jumping in AI area where Python reigns or they create a bit of maintenance and configuration mess?It's also fair to mention that they don't solve the issue of different scalability needs that business components might have. Further more in case we cluster such monolith how we approach various batch jobs and scheduler components that are expected to run as singleton instances that might otherwise collide with each other if run in cluster (of modular monoliths). There is a fair list of presumptions that need to be fulfilled for system we are building in order for "Monoliths to be good enough for almost everything". Justification of distributing your system (or going micro-services) on the other side might be a much shorter list in 2024, since Infrastructure as a Code frameworks have matured and simplified deployments of micro-services to a trivial level. Looking forward on hearing your thoughts.
100%, hype on microservice is over
In most cases, I agree with you, but not now. It’s not right to choose a monolithic architectural approach just because you are unable to justify a microservices architecture. Every approach should be justified at least based on functional and non function requirements.
i think that with the speed of innovation in the field of ai we could be able to completely switch to monoliths which we completely replace with other monoliths that an ai creates for us. like an evolutionary chain of independent monoliths. 🤔😵💫 what do you think Dr Milan?
I constantly feel like this 'debate' starts out by talking about the possible solutions rather than being driven by the requirements which will dictate the best solution beit a monolith, micro services, or any of many architectural patterns that can be used.
In most cases it is better to create a prepared monolith so that in the future part of it can be called by the pieces of it that you have previously ripped out and transformed into microservices. It may be that your application works better as a monolith at first, but then, the microservices system will work better for it. Create code so that your future self does not curse you.
Thats absolutely true, and obviously it is clear to everyone when we think a little bit deeper, but, why more and more companies are migrating their projects from monoliths to microservice based architecture? I think that is a trend, which is influenced by people and big tech companies who sales stories that the right way in these days to create a modern software is to use microservice architecture, without analyzing in detail what are the long-term management challenges of that kind of software.
doesn't forget about distributed monoliths: all cons off microservies and all cons off monolith!
Chief Roadblock Remover and Learning Enabler | Writing The Tech World With Milan Newsletter | Leadership and Career Coach | Building great products, building great teams!
4moRead more about the (correct) approach: https://newsletter.techworld-with-milan.com/p/why-you-should-build-a-modular-monolith