Cloud-Native Applications in Java
上QQ阅读APP看书,第一时间看更新

Application decoupling

The traditional model of application development, where all the features and functionalities were bundled in a large package called a monolithic application, is becoming less popular for multiple reasons. Monolith applications take on too many responsibilities in the form of function and logic. It is this characteristic which leaves them with high coupling and low cohesion. The reuse factor in monoliths tends to be low since one part of the functionality cannot be separated from the rest of the function and logic.

As we start breaking down the monolith functionality or even designing a new application, the focus needs to be on defining the service boundaries. Defining the right set of service boundaries and their related interactions is what leads to high cohesion and low coupling models.

The question becomes, what is the basis on which the application should be decoupled into services and defined service boundaries?