When evaluating man operational architecture characteristics, an architect must consider dependent components outside the code base that will impact those characteristics.
Coupling and Connascence
Two components are connascent if a change in one would requier that other to be modified in order to maintain the overall correcteness of the system.
-
Static: discoverable vis static code analysis.
-
Dynamic: concerning runtime behavior.
To define the architecture quantum we needed a measure of how components are "wired" together., which corresponds to the connascence concept.
If two services in a microservice architecture share the same class definition of the same class we say they are statically connascent with each other-changing the shared calss requires changes to both services.
-
Synchronous
-
Asynchronous
Synchronous calls between thw distributed services have the caller waite for the respone from the callee.
Asynchronous calls allow fire-and -forget semantics in event-driven architecture, allow tow diffrent service to differ in operational architecture.
Architectural Quanta and Granularity
Component level coupling isn’t the only thing to bind software together.
Many business concepts semantically bind parts of the system together, creating functional cohesion.
An indepentaly deployable srtifact with high functional choesion and synchrous connascence.
The above definition of architecture quantum contains several parts described as following :