“If you can't build a monolith, what makes you think microservices are the answer?” – Simon Brown
Micro Services have taken over the fancy of just about everyone in the past year or so. People want to partition their Monoliths, start a whole Micro Services architecture from scratch or connect them externally to their Monolith. While all of these are valid solutions to pursue, the real question to ask is – is this the solution for you?
On the other hand Monoliths are easy to build, without the overhead costs and are easy to deploy. A good number of people tend to bring up the fact how Monoliths tend to be tightly coupled and that coupling leads to everything being entangled leading to system complexity.
Switching to Micro Services because things get entangled in Monoliths is not a good enough reason though. If a team is working on a Monolith and it is getting entangled then perhaps they need to stop, take a step back and consider their strategy. Why is the structure not delivering what was envisioned? Does the answer really lie in Micro Services?
There are ways to create structure within the Monoliths with clean design, high cohesion and low coupling. This kind of a structure is half way between a traditional Monolith and Micro Services. If entanglement were the sole reason for switching to Micro Services then this would solve the problem just as well.
Simon Brown has a point when he asks if you can’t build a well-structured Monolith, what makes you think you can build a well-structured Micro Services system? If the same concepts that were being applied to the entangled Monolith are applied to Micro Services architecture we will just end up with many entangled smaller versions of the Monolith.
While Micro Services are creating a revolution in the world of service architecture and while they sound sexy, they are not a silver bullet and will not solve your problems unless design thinking and clear deconstruction is applied.
Written By: Meghna Verma Meghna Verma is the CMO at Captain Dash. You can reach her on Twitter @M3GV3RMa .