Software Design Principles in chronicle Order:
Decomposition is well known design pattern which promotes separation of concerns and code re-usability.
Mimic the business problems in terms of object and entities.
Shared Libraries provide the Ubiquitous availability.
Usually the language of implementation and consumption is same. Lead to tight coupling.
Component Enhancement over shared libraries. Example COM, CORBA.
Reuse across languages. Binary protocol serve as firewall between the component and caller.
Disadvantage Not web/internet friendly.
SOA Improve over component based development(CBD) Industry specified WS-* specs.
Then comes the MicroService which is treated as the subset of SOA also called as SOA 2.0.
Improved version of SOA. Application powered by multiple autonomous services i.e. independently changeable and deployable. MicroServices are loosely coupled. Each service has its own database.
MicroService design principles are:
High cohesion (Business Focus one thing to do)
Autonomous (Independent) No direct communication. Only through network.
Business Domain Centric (Account/Order)