In Defence of the Monolith, Part 2
infoq.com
In Defence of the Monolith, Part 2
1–10 of 21 posts
Re: In Defence of the Monolith, Part 2
#2Perhaps the early microservices evangelizers such as Netflix have created this environment - after all, who cares whether Netflix is a monolith or a swarm of microservices as long as billing works and users get content when they want?
There's another strong driver for microservices however, which is customer choice, particularly in SaaS settings.
In our industry (HR software), there is no one right answer, or one business problem - customers demand choice, every customer has slightly different needs, and microservices are indicated because they allow customers to pick and choose. The same is true for most SaaS areas I would say.
As an example, one tiny sub-area of HR software, employee engagement improves when we offer employees meaningful benefits. It turns out that many employees love their pets, and offering pet insurance could be a great perk (the HR space is so big that just this niche within a niche could be a multi-million dollar opportunity for someone with a good offering).
Yet would anyone seriously consider altering a monolithic HR application to add pet insurance management? Never. The only viable solution is a microservice, that does just this, and does it well, and plugs into the rest of the stack via APIs.
tl;dr: in the SaaS world, microservices are sometimes indicated not for architectural reasons, but to support customer choice, which is far more important.
Re: In Defence of the Monolith, Part 2
#3All these architectural discussions seem to assume a kind of black box business system where the microservices vs monolith discussion is an internal one, conducted by and for techies, and limited to a rigid view of the business requirements. Perhaps the early microservices evangelizers such as Netflix have created this environment - after all, who cares whether Netflix is a monolith or a swarm of microservices as lon…
Re: In Defence of the Monolith, Part 2
#4All these architectural discussions seem to assume a kind of black box business system where the microservices vs monolith discussion is an internal one, conducted by and for techies, and limited to a rigid view of the business requirements. Perhaps the early microservices evangelizers such as Netflix have created this environment - after all, who cares whether Netflix is a monolith or a swarm of microservices as lon…
I think what you have there is a monolithic HR application and a smaller monolithic pet insurance application that exchange information via enterprise integration, not a microservice architecture.
But as a customer, if I have a HR app from vendor A, and then I want to add a pet insurance app from vendor B, the last thing I want to do is to roll out some creaky enterprise integration process/framework/product. If those products work together via APIs why should I take any of the burden of integration?
Re: In Defence of the Monolith, Part 2
#5All these architectural discussions seem to assume a kind of black box business system where the microservices vs monolith discussion is an internal one, conducted by and for techies, and limited to a rigid view of the business requirements. Perhaps the early microservices evangelizers such as Netflix have created this environment - after all, who cares whether Netflix is a monolith or a swarm of microservices as lon…
I think what you have there is a monolithic HR application and a smaller monolithic pet insurance application that exchange information via enterprise integration, not a microservice architecture.
Re: In Defence of the Monolith, Part 2
#6Earlier quoted context omitted.
I think what you have there is a monolithic HR application and a smaller monolithic pet insurance application that exchange information via enterprise integration, not a microservice architecture.
I don't usually find arguing over names to be productive. Your "smaller monolithic" application is my microservice. What's in a name? But as a customer, if I have a HR app from vendor A, and then I want to add a pet insurance app from vendor B, the last thing I want to do is to roll out some creaky enterprise integration process/framework/product. If those products work together via APIs why should I take any of the…
"APIs" are an enterprise integration technique [1]. There's nothing inherently creaky or frameworkey about them.
[1] http://www.enterpriseintegrationpatterns.com/patterns/messag...
Re: In Defence of the Monolith, Part 2
#7Earlier quoted context omitted.
I think what you have there is a monolithic HR application and a smaller monolithic pet insurance application that exchange information via enterprise integration, not a microservice architecture.
"Microservices are just tiny monoliths" - gasp
Re: In Defence of the Monolith, Part 2
#8Re: In Defence of the Monolith, Part 2
#9As someone who, as of this very minute, is working on a project that someone has broken up into different nuget packages - this is a fine idea but it can go very bad and kill productivity completely.
Unless each individual part has independent test harnesses, as soon as you need to make a change, you need to go through the build server to test any change. Combine this with sub-par tooling and you can use your imagination as to how badly that messes up your development flow.
As well as this, it also messes up your potential branching strategies - you cant make a branch to do speculative changes unless you setup a build definition to create the nuget packages. And even if you do this, you need to maintain two streams of versions for the same package. This has a whole range of problems when it comes to updating packages - a package update ends up having to actually be a downgrade in terms of version numbers. This is not supported by your tooling in visual studio.
Before taking this approach, please give it some serious second thoughts.
Re: In Defence of the Monolith, Part 2
#10Monolith has become a buzzword. Is any business software actually not a monolith? I mean does it make business sense to re write everything as a microservice?
Monolithic software can be quite good when developed with a good understanding of what you want the future to look like. If the future holds more uncertainty such projects tend to become stale and acquire traits usually associated with legacy projects: hard to impossible to maintain or adapt to new roles, no clear interfaces between sub-sections (if those are identifiable at all) and hard to test.
So no, it's not for everybody and it's not for everywhere, but when applied properly it can make all the difference between maintaining forward momentum and losing it entirely after only a few years in business.
The great power of microservices is they allow a reduction in scope, and that alone is worth quite a bit in the maintenance and understanding departments, in a monolith the whole thing is the scope, and that can kill your ability to reason about a project.