Modularity

Spread the love

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.

Leave a Reply

Your email address will not be published. Required fields are marked *