bUiLdiNG eVoLuTiONaRy ARcHitECtuREs
SUPPORT CONSTANT CHANGE
@neal4d nealford.com @patkua @rebeccaparsons
bUiLdiNG eVoLuTiONaRy ARcHitECtuREs S UPPORT C ONSTANT C HANGE - - PowerPoint PPT Presentation
bUiLdiNG eVoLuTiONaRy ARcHitECtuREs S UPPORT C ONSTANT C HANGE @neal4d @rebeccaparsons @patkua nealford.com requirements T i m e g ility n accessibility reliability repeatability accountability extensibility reproducibility
SUPPORT CONSTANT CHANGE
@neal4d nealford.com @patkua @rebeccaparsons
requirements
T i m e
accessibility reliability repeatability accountability extensibility reproducibility accuracy failure transparency resilience adaptability fault-tolerance responsiveness administrability fidelity reusability affordability flexibility robustness agility inspectability safety auditability installability scalability autonomy integrity seamlessness availability interchangeability self-sustainability compatibility interoperability serviceability composability learnability supportability configurability maintainability securability correctness manageability simplicity credibility mobility stability customizability modifiability standards compliance debugability modularity survivability degradability
sustainability determinability
tailorability demonstrability portability testability dependability precision timeliness deployability predictability traceability discoverability process capabilities transparency distributability producibility ubiquity durability provability understandability effectiveness recoverability upgradability efficiency relevance usability
https://en.wikipedia.org/wiki/List_of_system_quality_attributes
ility
evolvability
accessibility reliability repeatability accountability extensibility reproducibility accuracy failure transparency resilience adaptability fault-tolerance responsiveness administrability fidelity reusability affordability flexibility robustness agility inspectability safety auditability installability scalability autonomy integrity seamlessness availability interchangeability self-sustainability compatibility interoperability serviceability composability learnability supportability configurability maintainability securability correctness manageability simplicity credibility mobility stability customizability modifiability standards compliance debugability modularity survivability degradability
sustainability determinability
tailorability demonstrability portability testability dependability precision timeliness deployability predictability traceability discoverability process capabilities transparency distributability producibility ubiquity durability provability understandability effectiveness recoverability upgradability efficiency relevance usability
evolvability
technology driven business driven
technology driven business driven
technology driven business driven
¯
Penultima⬆e
✔ definition ! verification
An evolutionary architecture supports guided, incremental change across multiple dimensions.
An evolutionary architecture supports guided, incremental change across multiple dimensions. guided
guided
evolutionary computing fitness function: a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.
guided
guided
evolutionary computing fitness function: a particular type of objective function that is used to summarize…how close a given design solution is to achieving the set aims.
guided
architectural fitness function: An architectural fitness function provides an
architectural characteristic(s).
Penultima⬆e
✔ definition ! verification ✔ verification
An evolutionary architecture supports guided, incremental change across multiple dimensions. incremental guided
incremental
Production
survey
shipping
catalog star rating improved star rating commit/ unit test 01001001010101 01010101010101 00101010010010 00100100010001 functional test UAT staging database unit tested code functionally tested code deployed codePenultima⬆e
Production
Penultima⬆e
Production
Penultima⬆e
Production
Penultima⬆e
Production
Production
Penultima⬆e
An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions incremental
multiple dimensions
An evolutionary architecture supports guided, incremental change across multiple dimensions. multiple dimensions
Definition Guided Change via Fitness Functions Incremental Change Governance
An evolutionary architecture supports guided, incremental change across multiple dimensions. guided
guided
architectural fitness function: An architectural fitness function provides an
architectural characteristic(s).
atomic holistic triggered continuous
atomic holistic triggered continuous
clarkware.com/software/JDepend.html application
application
martinfowler.com/articles/consumerDrivenContracts.html
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic holistic triggered continuous
holistic triggered
Holistic fitness functions must run in a specific (shared) context.
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic continuous
monitoring logging
Synthetic Transactions
Sam NewmanBuilding Microservices
DESIGNING FINE-GRAINED SYSTEMSUse synthetic transactions to test production systems.
Correlation IDs
ID: 123 ID: 123 ID: 123
Sam NewmanBuilding Microservices
DESIGNING FINE-GRAINED SYSTEMSUse correlation IDs to track down nasty bugs
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic holistic triggered continuous
atomic holistic triggered continuous
Definition Guided Change via Fitness Functions Incremental Change Governance
incremental
Production
survey
shipping
catalog star rating improved star rating commit/ unit test 01001001010101 01010101010101 00101010010010 00100100010001 functional test UAT staging database unit tested code functionally tested code deployed codecommit/ unit test
01001001010101 01010101010101 00101010010010 00100100010001
functional test UAT staging
databaseunit tested code functionally tested code deployed code
Deployment Pipeline + Fitness Functions
commit/ unit test
01001001010101 01010101010101 00101010010010 00100100010001
functional test UAT holistic fitness functions
databaseatomic fitness functions
unit tested code functionally tested code architecturally tested code deployed quantum integration environment
Definition Guided Change via Fitness Functions Incremental Change Governance
Implementing Fitness Functions
Protecting architectural characteristics
Automating governance
https://blog.jdriven.com/2017/10/implementing-architectural-fitness-functions-using-gradle-junit-code-assert/
https://www.archunit.org/
ArchUnit
https://www.archunit.org/
coding rules
ArchUnit
https://www.archunit.org/
interface rules
ArchUnit
https://www.archunit.org/
layer dependency
ArchUnit
https://www.archunit.org/
governance
01001001010101 01010101010101 00101010010010 00100100010001
containerize & deploy security review audit database atomic fitness functions database holistic fitness functions database deploy to productionPenultima⬆e
Dimension
Dimension
Dimension
Fitness Functions
Fitness Functions
commit/ unit test
01001001010101 01010101010101 00101010010010 00100100010001
functional test UAT holistic fitness functions
databaseatomic fitness functions
unit tested code functionally tested code architecturally tested code deployed quantum integration environment
Dimension
Fitness Functions
Dimension
Fitness Functions
Definition Guided Change via Fitness Functions Incremental Change Governance
Move Fast & Fix Things
https://github.com/github/scientist
run,
block
4 days 24 hours/ no mismatches or slow cases > 10,000,000 comparisons > 10,000,000 comparisons
An evolutionary architecture supports guided, incremental change across multiple dimensions.
For more information: http://evolutionaryarchitecture.com