Modularity
Modularity
is the name given, to the process of defining the components, parts, or modules into which a system or software can be divided.
- Ex: Breaking large monolithic applications into separate and smaller parts??
Advantages:??
- Scalability: It is better to have two applications at 40% than one at 80%.??
- Agility: It is easier to respond to changes in the system (attention to coupling).??
- Speed-to-market: Domain modules facilitate business changes in the system.??
- Availability (Fault Tolerance): If one module fails, the others can continue to work.??
- Deployability: More frequent deployments with less risk to the system (attention on coupling)??
- Testability: It is easier and faster to test small modules thoroughly.??
- Maintainability: Easy to add, change, and remove features. (ex: patches)??
Attention points:??
- The scalability and elasticity can suffer with increased communication between the services.??
- With an increase in the number of modules, it is better to consider asynchronous communication.??
- Asynchronous communication favors fault tolerance, scalability, and elasticity.