Architectual Considerations
Last updated
Last updated
The following is notes taken from watching Architectural session from "Uncle Bob" Martin
Make sure you have a ubiquitous language about architectural characteristics(Reliability, Scalability, performance, etc) so that people can have a common dictionary to ensure people do not talk past each other
KISS - How-To -- Don't try to meet all the "illities" - because as you add implementation for ilities, you add complexity
Non-functional Requirements = Cross-Feature Requirements = Architecture Characteristics
Reliability
Scalability
Performance
Availability
Overlaps between distributed architecture & operational concerns
Metrics:
○ Cumulative average response time - trigger alert when the average response times within a particular context exeeds 1400 ms)
○ Maximum Response Time - Trigger alert anytime max response time of selected requests exceeds 2000ms
○ Cumulative averge response time - trigger alert if response times continues to increase over 2 month period
Fault Tolerance
Reliability
○ Considered a composite characteristic - too braod to have a concrete objective. But it is the sum of a bunch of things that can be measured
○ Availability - using the nines chart
Agility - another composite characteristics
○ Deployability -
○ Testability
○ Modularity
Afferent coupling - incoming - the degree to which other components are dependent on the target component
Efferent coupling - outgoing - the degree to which the target component is dependent on other components
Too much abstractness & instability - zone of uselessness
Too little abstraction & instability - zone of pain
Technical partitioning
Presentation, business rules, persistent are each layers
Domain paritioning
UI, module 1, module 2, …
Operational view of architecture
Holistic view of architecture
Database
User interface
Useful for structural analysis
Martinfowler.com/articles/consumerDrivenContracts.html
Pact
Choas Testing:
Conformity Monkey - Used to ensure that charateristics are mapped to what they ned to me
Security monkey - ensuring you don't have any security characteristics