“In the new world, it is not the big fish that eats the small fish, it’s the fast fish that eats the slow fish.” — Klaus Schwab.
Unfortunately, microservices are today the development standard for any large product. Why is that? Because the market has become overloaded with competitors and not only big companies compete with each other but everyone participates in the race. Everyone wants to deliver new features in their products quickly, frequently, and reliably. And the big products have to grow as fast as the small ones. But usually big products are much more complex in terms of communication between team members, deploying, fixing bugs and so on. As in many other situations, the solution is, as always, the creation of an additional level of abstraction — decomposition of teams, encapsulation of the logic of individual components, and decoupling — some high-level SOLID.
“This is the Unix philosophy: Write programs that do one thing and do it well. Write programs that do one thing and do it well.” — Doug McIlroy
Individual microservices are only independent and decoupled if they can evolve independently. Isolation is a prerequisite for autonomy. Only when services are isolated can they be fully autonomous and make decisions independently, act independently, cooperate, and coordinate with others to solve problems.