SlideShare a Scribd company logo
1 of 20
Download to read offline
Introduction to
Evolutionary Architecture
You are likely doing it, just without the buzz words (and discipline)
Siddharth Kulkarni
Architecture that supports guided,
incremental change as a first
principle across multiple
dimensions.
A DEFINITION
NEAL FORD, PATRICK KUA, REBECCA PARSONS
We are not Fortune Tellers
But first, let’s talk about
“- ilities”
Partial List - Architectural Concerns
Enter “Evolvability”
How to plan long term when things are changing
constantly in unexpected ways?
How to prevent architecture degradation?
Architectures Evolvability
Unstructured Monolith Very Low
Layered Monolith Low
Modular/Structured Monolith Moderate
Microkernel Moderate
Event Driven High
[Micro] Services Based High
Evolvability
Architecture that supports
guided, incremental
change as a first principle
across multiple
dimensions.
THE DEFINITION, ONCE AGAIN
Guided
Fitness Functions
An Architectural Fitness Function provides a Guided and
Objective Assessment of some Architectural Characteristic(s)
aka
Y ~ F(x)
Where
Y = Characteristic, F(x) = Objective Assessment
Y
Securability
Latency / Throughput
Integrability
Scalability
Coding standards
Coupling
Regulatory Compliance
Affordability
F(x)
E2E / Contract Tests
Performance / Security Tests
Process / Architecture Metrics
Observability Infra
Compliance Checks
Guided
Atomic (e.g. Unit Test)
Holistic (e.g. System Security)
Triggered (e.g. Based on event like on check-in)
Continuous (e.g. Runs like cron job or continually like A/B test)
Static FF (e.g. Pure functions, same input, same state, same result)
Dynamic (e.g. Perf tests will give different results for each run)
Automated (Preferable)
Manual (e.g. when a lawyer is needed to check software licenses)
Temporal (e.g. Reminder for upgrading OS, tools etc.)
Domain Specific (e.g. Regulation related, Financial transactions etc.)
Intentional (Decided at the inception of project)
Emergent (In response to new requirements or change in situation. E.g. When laws change)
Types of Fitness Functions
Guided
describe "Performance" do
it "completes a transaction under 10 seconds" do
expect(transaction.check_transaction_round_tr
ip_time()).to < 10
end
it "has less than 10% error rate for 10000
transactions" do
expect(transaction.check_error_rate_for_trans
actions(10000)).to < .1
end
end
describe "Observability" do
it "streams metrics" do
expect(service.has_metrics(
)).to be(true)
end
it "has parseable logs" do
expect(service.has_logs_in_
aggregator()).to be(true)
end
end
Examples
describe "Performance" do
it "completes a transaction under 10
seconds" do
expect(transaction.check_transactio
n_round_trip_time()).to < 10
end
it "has less than 10% error rate for 10000
transactions" do
expect(transaction.check_error_rate
_for_transactions(10000)).to < .1
end
end
describe "Compliance Standards" do
describe "PII Compliance" do
it "should not have PII in the logs"
do
expect(logs.has_pii_content())
.to_not be(true)
end
end
describe "GDPR Compliance" do
it "should report types of personal
information processed" do
expect(gdpr.reports_PII_types(
)).to be(true)
end
it "should have been audited in the
past year" do
expect(gdpr.audit_age()).to <
365
end
end
end
describe "Operability
Standards" do
describe "Operations
Check" do
it "should
have a service runbook" do
expect(
service.has_runbook()).to
be(true)
end
it "should
have a README" do
expect(
service.has_readme()).to
be(true)
end
it "should
have alerts" do
end
end
SOURCE:
https://www.thoughtworks.com/insights/articles/fitness-function-driven-
development
Incremental
Small steps in right direction. Reduces scope for errors.
Steps should consider operational aspects:
Deployment, infra etc.
Steps should consider Dev processes: Programming,
Dev activities etc.
Versioning the Database
❖ No DBA. Script all DB changes
incrementally in smallest possible
steps.
❖ It should allow Refactoring in small
chunks, just like code refactoring. No
big bang changes.
❖ Decoupling between app and DB
migration.
❖ E.g. DBDeploy Pattern - CI for DBs
➢ DBDeploy Tool / Flyway.
➢ DB updates are code.
➢ Large updates are broken to
small changes.
➢ Metadata in database.
❖ In a test environment, start with clean
DB for Integration and Acceptance
TEsts.
❖ Roll forward is better than Roll back.
❖ E.g. Expand Contract Pattern
Incremental (Example)
Migrate
Trigger or Async
Multiple Dimensions
Exercise
QUESTIONS?
THANKS!
Siddharth

More Related Content

Similar to Evolutionary Architecture.pdf

Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
cesarioramos
 
Challenges of Agile Qualification
Challenges of Agile QualificationChallenges of Agile Qualification
Challenges of Agile Qualification
AdaCore
 
An Availability Management Guide
An Availability Management GuideAn Availability Management Guide
An Availability Management Guide
Simon Pritchard
 

Similar to Evolutionary Architecture.pdf (20)

Microservices or does the size matter?
Microservices or does the size matter?Microservices or does the size matter?
Microservices or does the size matter?
 
ITIL_Introductio_ITIL_IntroductioNn.pptx
ITIL_Introductio_ITIL_IntroductioNn.pptxITIL_Introductio_ITIL_IntroductioNn.pptx
ITIL_Introductio_ITIL_IntroductioNn.pptx
 
Going From Legacy To DevOps
Going From Legacy To DevOpsGoing From Legacy To DevOps
Going From Legacy To DevOps
 
Observability foundations in dynamically evolving architectures
Observability foundations in dynamically evolving architecturesObservability foundations in dynamically evolving architectures
Observability foundations in dynamically evolving architectures
 
What is a SOA Service - from the Business Perspective? How detailed, what le...
What is a SOA Service - from the Business Perspective?  How detailed, what le...What is a SOA Service - from the Business Perspective?  How detailed, what le...
What is a SOA Service - from the Business Perspective? How detailed, what le...
 
Oracle SOA Suite 12c 1z0-434 Day 1/3
Oracle SOA Suite 12c 1z0-434 Day 1/3Oracle SOA Suite 12c 1z0-434 Day 1/3
Oracle SOA Suite 12c 1z0-434 Day 1/3
 
VM Final Report
VM Final ReportVM Final Report
VM Final Report
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
 
Delivering with Microservices - How to Iterate Towards Sophistication
Delivering with Microservices - How to Iterate Towards SophisticationDelivering with Microservices - How to Iterate Towards Sophistication
Delivering with Microservices - How to Iterate Towards Sophistication
 
Microservices architecture: practical aspects
Microservices architecture: practical aspectsMicroservices architecture: practical aspects
Microservices architecture: practical aspects
 
Herding Microservices – the Atlassian Way
Herding Microservices – the Atlassian WayHerding Microservices – the Atlassian Way
Herding Microservices – the Atlassian Way
 
Challenges of Agile Qualification
Challenges of Agile QualificationChallenges of Agile Qualification
Challenges of Agile Qualification
 
An Availability Management Guide
An Availability Management GuideAn Availability Management Guide
An Availability Management Guide
 
Service Delivery System Design
Service Delivery System DesignService Delivery System Design
Service Delivery System Design
 
How To Make Dev Ops Work @ Netlight Edge X Berlin
How To Make Dev Ops Work @ Netlight Edge X BerlinHow To Make Dev Ops Work @ Netlight Edge X Berlin
How To Make Dev Ops Work @ Netlight Edge X Berlin
 
ITIL Introduction
ITIL IntroductionITIL Introduction
ITIL Introduction
 
Blockchain Application Development 101
Blockchain Application Development 101Blockchain Application Development 101
Blockchain Application Development 101
 
Change 5 0
Change 5 0Change 5 0
Change 5 0
 
Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and Alternatives
 
Ncrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureNcrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architecture
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Evolutionary Architecture.pdf

  • 1. Introduction to Evolutionary Architecture You are likely doing it, just without the buzz words (and discipline) Siddharth Kulkarni
  • 2. Architecture that supports guided, incremental change as a first principle across multiple dimensions. A DEFINITION NEAL FORD, PATRICK KUA, REBECCA PARSONS
  • 3. We are not Fortune Tellers
  • 4. But first, let’s talk about “- ilities”
  • 5. Partial List - Architectural Concerns
  • 6. Enter “Evolvability” How to plan long term when things are changing constantly in unexpected ways? How to prevent architecture degradation?
  • 7. Architectures Evolvability Unstructured Monolith Very Low Layered Monolith Low Modular/Structured Monolith Moderate Microkernel Moderate Event Driven High [Micro] Services Based High Evolvability
  • 8. Architecture that supports guided, incremental change as a first principle across multiple dimensions. THE DEFINITION, ONCE AGAIN
  • 9. Guided Fitness Functions An Architectural Fitness Function provides a Guided and Objective Assessment of some Architectural Characteristic(s) aka Y ~ F(x) Where Y = Characteristic, F(x) = Objective Assessment
  • 10. Y Securability Latency / Throughput Integrability Scalability Coding standards Coupling Regulatory Compliance Affordability F(x) E2E / Contract Tests Performance / Security Tests Process / Architecture Metrics Observability Infra Compliance Checks Guided
  • 11. Atomic (e.g. Unit Test) Holistic (e.g. System Security) Triggered (e.g. Based on event like on check-in) Continuous (e.g. Runs like cron job or continually like A/B test) Static FF (e.g. Pure functions, same input, same state, same result) Dynamic (e.g. Perf tests will give different results for each run) Automated (Preferable) Manual (e.g. when a lawyer is needed to check software licenses) Temporal (e.g. Reminder for upgrading OS, tools etc.) Domain Specific (e.g. Regulation related, Financial transactions etc.) Intentional (Decided at the inception of project) Emergent (In response to new requirements or change in situation. E.g. When laws change) Types of Fitness Functions
  • 13. describe "Performance" do it "completes a transaction under 10 seconds" do expect(transaction.check_transaction_round_tr ip_time()).to < 10 end it "has less than 10% error rate for 10000 transactions" do expect(transaction.check_error_rate_for_trans actions(10000)).to < .1 end end describe "Observability" do it "streams metrics" do expect(service.has_metrics( )).to be(true) end it "has parseable logs" do expect(service.has_logs_in_ aggregator()).to be(true) end end Examples describe "Performance" do it "completes a transaction under 10 seconds" do expect(transaction.check_transactio n_round_trip_time()).to < 10 end it "has less than 10% error rate for 10000 transactions" do expect(transaction.check_error_rate _for_transactions(10000)).to < .1 end end describe "Compliance Standards" do describe "PII Compliance" do it "should not have PII in the logs" do expect(logs.has_pii_content()) .to_not be(true) end end describe "GDPR Compliance" do it "should report types of personal information processed" do expect(gdpr.reports_PII_types( )).to be(true) end it "should have been audited in the past year" do expect(gdpr.audit_age()).to < 365 end end end describe "Operability Standards" do describe "Operations Check" do it "should have a service runbook" do expect( service.has_runbook()).to be(true) end it "should have a README" do expect( service.has_readme()).to be(true) end it "should have alerts" do end end SOURCE: https://www.thoughtworks.com/insights/articles/fitness-function-driven- development
  • 14. Incremental Small steps in right direction. Reduces scope for errors. Steps should consider operational aspects: Deployment, infra etc. Steps should consider Dev processes: Programming, Dev activities etc.
  • 15. Versioning the Database ❖ No DBA. Script all DB changes incrementally in smallest possible steps. ❖ It should allow Refactoring in small chunks, just like code refactoring. No big bang changes. ❖ Decoupling between app and DB migration. ❖ E.g. DBDeploy Pattern - CI for DBs ➢ DBDeploy Tool / Flyway. ➢ DB updates are code. ➢ Large updates are broken to small changes. ➢ Metadata in database. ❖ In a test environment, start with clean DB for Integration and Acceptance TEsts. ❖ Roll forward is better than Roll back. ❖ E.g. Expand Contract Pattern Incremental (Example) Migrate Trigger or Async
  • 17.