Modules have the following properties:
They separate concerns and are functionally coherent |
They have stable, well documented APIs that are exposed through facades |
They encapsulate complexity and hide implementation details |
They have a small attack surface, which makes them easier to secure |
They are faster to compile and publish, which supports a good developer experience |
Their size and clear purpose allow for a code contribution model and focused design discussions |
They are easier to performance test and monitor |
They allow for individual versioning and effective upgrading |