SlideShare a Scribd company logo
1 of 68
Getting Started with
Architecture Decision Records
Michael Keeling
LendingHome
@michaelkeeling
Code & Supply
Architecture Meetup #5
Agenda
1. Theory:
• What is an Architecture Decision Record (ADR)?
• How can ADRs help your team be more awesome?
2. Practice:
• Learn how to create ADRs
A “100% hypothetical”
conversation with a
teammate…
I’m a leg!
We need to make decisions so
we can move forward.
We can’t move forward fast unless
everyone understands the decision.
X
Oral history is a great way to share
design decisions especially while we’re
still exploring the architecture.
Limits of Oral History
Short reach
Changes organically
Time consuming to share
Dies without constant attention
Eventually we need to write
something down.
How do we share decisions?
Code
Wikis
Documents
Email
Slack
How do we share decisions?
Code
Wikis
Documents
Email
Slack
Never erase the whiteboards
Just writing something down
isn’t enough.
We’ve gotta capture
the “right” things.
ARCHITECTURE
DECISION
RECORDS
Let’s start with the “A”….
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
Architecture is organized around structures
• Structure = Element + relation
• Element
• Fundamental building blocks
• Relation
• Description of how to combine elements
Element Element
Relation
Same basic elements, many arrangements
Three Kinds of Structures
• Module - Design time structures
• Elements: class, module, package, layer
• Relations: uses, allowed to use, depends on
• Component and Connector (C&C) - Runtime structures
• Elements: Object, tier, process, thread, filter
• Relations: call, subscribe, pipe, publish, read
• Allocation - Map module and C&C structures to physical
elements and each other
• Elements: Server, sensor, container, Colin (a person)
• Relations: runs on, deployed to, builds, pays for
D is for Decision
What do we mean by “software architecture”?
Software architecture is the set of significant
design decisions about how the software is
organized to promote desired quality
attributes and other properties.
What is a significant decision?
• Defines or modifies coarse grained structures
• Strongly influences...
• Quality attributes
• Costs
• Schedule
• External systems or organizations
• Dramatically alters our ability to change our minds later
• One-way door – Extremely costly to go back
• Two-way door – Easy to change your mind
Some examples of significant decisions
• Component X is responsible for sending email
• Because of <decision>, Foo will be more difficult to test
• We will now depend on a third-party library
• The code for ABC will move to new packages/modules
• And by accepting this technical debt we’ll ship sooner but, ….
• Because of <decision>, all devs will need to use tool Blah
And that brings us to the “R”….
Documenting Architecture Decisions by Michael Nygard
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
“An architecture decision record is a
short text file in a format similar to an
Alexandrian pattern that describes a
set of forces and a single decision in response to
those forces.”
“An architecture decision record is a
short text file in a format similar to an
Alexandrian pattern that describes a
set of forces and a single decision in response to
those forces.”
Documenting Architecture Decisions by Michael Nygard
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
Architecture Decision Record (ADR)
28
Context
Decision
Consequences
29
30
31
32
33
Capturing design decisions as we
make them lets us build a
decision log over time…
34
35
Plain, direct language
Brief, 1-2 pages max
Markdown
Stored with the code
Benefits of ADRs
Simple
Easy to teach
Discoverable
Low barrier to entry
Easy to ramp up over time
PRACTICE TIME!
Today’s Mission
• Work in pairs or small groups
• Design a “Smart Toaster”
• Perfectly toasts bread
• Voice activated
• Learns breakfast preferences of your household
• Internet connected
• Create a decision log (ADRs) for your design
Ground Rules
• No right or wrong answers
• Watch the clock (I’ll help too)
• Ask me questions if you need help
• Fill in project gaps with your imagination (or ask)
• HAVE FUN! 
Example:
Task #1
Meet your team! (5 minutes)
• Self-organize into pairs or small groups
• Send someone up for materials
Tips
• Introduce yourself!
• Chocolate, vanilla, or strawberry?
Task #2
Create a high-level design for your smart
toaster system (7 minutes)
Tips
• Sketch a picture or two
• Context diagrams are great
• Lean on your experience
• Add some buzz words  – cloud, IoT, machine learning
Your first ADR…
Task #2
Make a decision (3 minutes)
Tips
• Use imperative voice: “We will…”
• Is it “architectural”?
• Keep it brief – can you say it one sentence?
Task #3
Describe the context (7 minutes)
Tips
• What exerts force influencing on the decision?
• State the context as facts
• Are there alternatives?
• Keep it brief…
Share and Discuss
What’s the context?
Task #4
Outline the consequences (7 minutes)
Tips
• Consequences can be “good” or “bad”
• “As a result of this decision…”
• Think about risks
• What do you know? Did you create more work?
• Dig for at least 3 consequences
Share and Discuss
Decision + consequences
Task #5
Let’s write another ADR (12 minutes)
Tips
• What exerts force influencing on the decision?
• State the context as facts
• Use imperative voice for the decision: “We will…”
• Dig for at least three consequences
Share and Discuss
Share your ADR with another group
What was the decision?
Does the decision make sense given the context?
Can you think of more consequences?
What is awesome about the ADR?
SOME PARTING
PRACTICAL ADVICE
Use a template
• Title
• Context
• Value neutral, describe forces at play
• Decision
• 1 sentence
• “We will ….”
• Status
• Choose one: [Proposed | Accepted | Deprecated | Superseded]
• Consequences
• New context after decision applied
• 3 – 5+, go beyond the obvious
# ADR N: Brief Decision Title
Context goes here. Describe the forces at play, including technological, political,
social, and project local. These forces are likely in tension, and should be called
out as such. The language in this section is value-neutral. It is simply describing
facts. Rationale should be self-evident from the context
## Decision
This section describes our response to these forces. It is stated in full sentences,
with active voice. "We will ...“
## Status
choose one: [Proposed | Accepted | Deprecated | Superseded]
if deprecated, include a rationale. If superseded, include a link to the new ADR
## Consequences
Describe the resulting context, after applying the decision. All consequences should
be listed here, not just the "positive" ones. A particular decision may have positive,
negative, and neutral consequences, but all of them affect the team and project in the
future.
Easy to edit, easy to find
• A place where stakeholders can find them
• Plain text works great
• Easy to consume, easy to change
• Integrate with peer review workflow and tools
• Contextually close to where it’s used
55
Delegate ADR Creation
• Grow the team’s design skills
• Small responsibility, little risk
• Easy to review
• Opportunity for training
• Peer review, pair, coach
57
Peer Review as you would Code
• Get the whole team involved
• Spread knowledge
• Allow team to make decisions without architect
58
Foster a documentation habit
• Architect points out when a decision is made
• “Do we need to record an ADR?”
• Track ADRs in the backlog
• Hold the team accountable
• Make templates readily available
• Host an ADR party
• Use architecture briefings
59
Make a decision, then document it
• Proposed decisions without consensus thrashed
during peer review
• Document and share a decision
• Remember ideas for the future
60
Not everything is an ADR!
• Everyone LOVES ADRs
• People will try to use them for anything and everything
• Draw pictures
• Create guidelines
• Capture other views of the system
61
ADR Tips and Advice
• Use a template
• Easy to edit, easy to find
• Delegate ADR creation.
• Peer review as you would code.
• Foster a documentation habit.
• Make a decision, then document it.
• Not everything is an ADR!
62
WRAP UP
Get started with ADRs on your team!
You don’t need permission to start!
Step 1: Create a template
Step 2: Create your team’s first ADR
Step 3: Ask someone to review it
64
Architecture Decisions…
cool since at least 1997
• 1997: Architecture in Practice, first edition
• Len Bass, Paul Clements, Rick Kazman
• 2002: Documenting Software Architecture: Views and Beyond, first edition
• Paul Clements et al.
•2005: Architecture Decisions: Demystifying Architecture
• Jeff Tyree and Art Akerman
• 2009: The Decision View's Role in Software Architecture Practice
• Phillipe Krutchten
• 2011: A documentation framework for architecture decisions
• Uwe Van Heesch, Paris Avgerioum, and Rich Hilliard
• 2011: Documenting Architecture Decisions
• http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
• Michael Nygard
65
More Resources…
• Architecture Decision Records in Action (SATURN conference)
• Video: https://www.youtube.com/watch?v=41NVge3_cYo
• Slides: https://resources.sei.cmu.edu/asset_files/Presentation/2017_017_001_497746.pdf
• Michael Keeling and Joe Runde
• Share the Load: Distributed Design Authority with Architecture Decision Records
• https://www.agilealliance.org/resources/experience-reports/distribute-design-authority-with-architecture-decision-
records/
• Video: https://www.agilealliance.org/resources/sessions/share-the-load-distributing-design-authority-with-lightweight-
decision-records/
• Michael Keeling and Joe Runde
• Creating, Reviewing, and Succeeding with Architecture Decision Records
• Video: https://www.youtube.com/watch?v=LFiTwqblqsk&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo
• Ken Power
• Design It!
• http://bit.ly/design-it
• Michael Keeling
• https://github.com/joelparkerhenderson/architecture_decision_record
• https://adr.github.io/ 66
Silver
Toolbox
Thank you!
Michael Keeling
@michaelkeeling
neverletdown.net
Buy Design It! now at
http://bit.ly/design-it

More Related Content

What's hot

Microservices, DevOps & SRE
Microservices, DevOps & SREMicroservices, DevOps & SRE
Microservices, DevOps & SREAraf Karsh Hamid
 
Microservices architecture overview v3
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3Dmitry Skaredov
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyDerek E. Weeks
 
Managing Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringManaging Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringAdityo Pratomo
 
[DevSecOps Live] DevSecOps: Challenges and Opportunities
[DevSecOps Live] DevSecOps: Challenges and Opportunities[DevSecOps Live] DevSecOps: Challenges and Opportunities
[DevSecOps Live] DevSecOps: Challenges and OpportunitiesMohammed A. Imran
 
Technical Debt
Technical DebtTechnical Debt
Technical DebtGary Short
 
Successfully Implementing DEV-SEC-OPS in the Cloud
Successfully Implementing DEV-SEC-OPS in the CloudSuccessfully Implementing DEV-SEC-OPS in the Cloud
Successfully Implementing DEV-SEC-OPS in the CloudAmazon Web Services
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - ObservabilityAraf Karsh Hamid
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
 
Sucessful implementation of JIRA and Confluence - tips and best practice
Sucessful implementation of JIRA and Confluence - tips and best practiceSucessful implementation of JIRA and Confluence - tips and best practice
Sucessful implementation of JIRA and Confluence - tips and best practiceschade_chr
 
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream Flow
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream FlowLearn from the Experts: Using DORA Metrics to Accelerate Value Stream Flow
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream FlowDevOps.com
 
Microservices
MicroservicesMicroservices
MicroservicesSmartBear
 

What's hot (20)

Microservices, DevOps & SRE
Microservices, DevOps & SREMicroservices, DevOps & SRE
Microservices, DevOps & SRE
 
Microservices architecture overview v3
Microservices architecture overview v3Microservices architecture overview v3
Microservices architecture overview v3
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps Journey
 
Managing Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform EngineeringManaging Infrastructure as a Product - Introduction to Platform Engineering
Managing Infrastructure as a Product - Introduction to Platform Engineering
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
Docs Like Code
Docs Like CodeDocs Like Code
Docs Like Code
 
[DevSecOps Live] DevSecOps: Challenges and Opportunities
[DevSecOps Live] DevSecOps: Challenges and Opportunities[DevSecOps Live] DevSecOps: Challenges and Opportunities
[DevSecOps Live] DevSecOps: Challenges and Opportunities
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Firebase PPT
Firebase PPTFirebase PPT
Firebase PPT
 
Successfully Implementing DEV-SEC-OPS in the Cloud
Successfully Implementing DEV-SEC-OPS in the CloudSuccessfully Implementing DEV-SEC-OPS in the Cloud
Successfully Implementing DEV-SEC-OPS in the Cloud
 
Red7 Software Application Security Threat Modeling
Red7 Software Application Security Threat ModelingRed7 Software Application Security Threat Modeling
Red7 Software Application Security Threat Modeling
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - Observability
 
Why to Cloud Native
Why to Cloud NativeWhy to Cloud Native
Why to Cloud Native
 
Microservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and Saga
 
Sucessful implementation of JIRA and Confluence - tips and best practice
Sucessful implementation of JIRA and Confluence - tips and best practiceSucessful implementation of JIRA and Confluence - tips and best practice
Sucessful implementation of JIRA and Confluence - tips and best practice
 
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream Flow
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream FlowLearn from the Experts: Using DORA Metrics to Accelerate Value Stream Flow
Learn from the Experts: Using DORA Metrics to Accelerate Value Stream Flow
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Microservices
MicroservicesMicroservices
Microservices
 

Similar to Getting Started with Architecture Decision Records

It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Templatetjain
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Michele Ide-Smith
 
Design Systems at Scale
Design Systems at ScaleDesign Systems at Scale
Design Systems at ScaleSarah Federman
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadBen Limmer
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for ArchitectsEberhard Wolff
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Hannes Lowette
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture DeckNiraj Tolia
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignJeremy Miller
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)David Benjamin
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLCAbdul Karim
 
Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopPaul Boos
 
Does it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptxDoes it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptxBarry Hennessy
 

Similar to Getting Started with Architecture Decision Records (20)

It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Template
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team Collaboration Within A Multidisciplinary Team
Collaboration Within A Multidisciplinary Team
 
Design Systems at Scale
Design Systems at ScaleDesign Systems at Scale
Design Systems at Scale
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
Tips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech LeadTips & Tricks for Being a Successful Tech Lead
Tips & Tricks for Being a Successful Tech Lead
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture Deck
 
Software Design
Software DesignSoftware Design
Software Design
 
The Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software DesignThe Fundamentals of Continuous Software Design
The Fundamentals of Continuous Software Design
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Design System 101
Design System 101Design System 101
Design System 101
 
How to Implement Domain Driven Design in Real Life SDLC
How to Implement Domain Driven Design  in Real Life SDLCHow to Implement Domain Driven Design  in Real Life SDLC
How to Implement Domain Driven Design in Real Life SDLC
 
Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers Workshop
 
Does it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptxDoes it reduce my decision workload?.pptx
Does it reduce my decision workload?.pptx
 

Recently uploaded

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 

Recently uploaded (20)

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 

Getting Started with Architecture Decision Records

  • 1. Getting Started with Architecture Decision Records Michael Keeling LendingHome @michaelkeeling Code & Supply Architecture Meetup #5
  • 2. Agenda 1. Theory: • What is an Architecture Decision Record (ADR)? • How can ADRs help your team be more awesome? 2. Practice: • Learn how to create ADRs
  • 5. We need to make decisions so we can move forward. We can’t move forward fast unless everyone understands the decision.
  • 6.
  • 7. X
  • 8. Oral history is a great way to share design decisions especially while we’re still exploring the architecture.
  • 9. Limits of Oral History Short reach Changes organically Time consuming to share Dies without constant attention
  • 10. Eventually we need to write something down.
  • 11. How do we share decisions? Code Wikis Documents Email Slack
  • 12. How do we share decisions? Code Wikis Documents Email Slack Never erase the whiteboards
  • 13. Just writing something down isn’t enough. We’ve gotta capture the “right” things.
  • 15. Let’s start with the “A”….
  • 16. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 17. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 18. Architecture is organized around structures • Structure = Element + relation • Element • Fundamental building blocks • Relation • Description of how to combine elements Element Element Relation
  • 19. Same basic elements, many arrangements
  • 20. Three Kinds of Structures • Module - Design time structures • Elements: class, module, package, layer • Relations: uses, allowed to use, depends on • Component and Connector (C&C) - Runtime structures • Elements: Object, tier, process, thread, filter • Relations: call, subscribe, pipe, publish, read • Allocation - Map module and C&C structures to physical elements and each other • Elements: Server, sensor, container, Colin (a person) • Relations: runs on, deployed to, builds, pays for
  • 21. D is for Decision
  • 22. What do we mean by “software architecture”? Software architecture is the set of significant design decisions about how the software is organized to promote desired quality attributes and other properties.
  • 23. What is a significant decision? • Defines or modifies coarse grained structures • Strongly influences... • Quality attributes • Costs • Schedule • External systems or organizations • Dramatically alters our ability to change our minds later • One-way door – Extremely costly to go back • Two-way door – Easy to change your mind
  • 24. Some examples of significant decisions • Component X is responsible for sending email • Because of <decision>, Foo will be more difficult to test • We will now depend on a third-party library • The code for ABC will move to new packages/modules • And by accepting this technical debt we’ll ship sooner but, …. • Because of <decision>, all devs will need to use tool Blah
  • 25. And that brings us to the “R”….
  • 26. Documenting Architecture Decisions by Michael Nygard http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions “An architecture decision record is a short text file in a format similar to an Alexandrian pattern that describes a set of forces and a single decision in response to those forces.”
  • 27. “An architecture decision record is a short text file in a format similar to an Alexandrian pattern that describes a set of forces and a single decision in response to those forces.” Documenting Architecture Decisions by Michael Nygard http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
  • 28. Architecture Decision Record (ADR) 28 Context Decision Consequences
  • 29. 29
  • 30. 30
  • 31. 31
  • 32. 32
  • 33. 33 Capturing design decisions as we make them lets us build a decision log over time…
  • 34. 34
  • 35. 35 Plain, direct language Brief, 1-2 pages max Markdown Stored with the code
  • 36. Benefits of ADRs Simple Easy to teach Discoverable Low barrier to entry Easy to ramp up over time
  • 38. Today’s Mission • Work in pairs or small groups • Design a “Smart Toaster” • Perfectly toasts bread • Voice activated • Learns breakfast preferences of your household • Internet connected • Create a decision log (ADRs) for your design
  • 39.
  • 40. Ground Rules • No right or wrong answers • Watch the clock (I’ll help too) • Ask me questions if you need help • Fill in project gaps with your imagination (or ask) • HAVE FUN! 
  • 42. Task #1 Meet your team! (5 minutes) • Self-organize into pairs or small groups • Send someone up for materials Tips • Introduce yourself! • Chocolate, vanilla, or strawberry?
  • 43. Task #2 Create a high-level design for your smart toaster system (7 minutes) Tips • Sketch a picture or two • Context diagrams are great • Lean on your experience • Add some buzz words  – cloud, IoT, machine learning
  • 45. Task #2 Make a decision (3 minutes) Tips • Use imperative voice: “We will…” • Is it “architectural”? • Keep it brief – can you say it one sentence?
  • 46. Task #3 Describe the context (7 minutes) Tips • What exerts force influencing on the decision? • State the context as facts • Are there alternatives? • Keep it brief…
  • 48. Task #4 Outline the consequences (7 minutes) Tips • Consequences can be “good” or “bad” • “As a result of this decision…” • Think about risks • What do you know? Did you create more work? • Dig for at least 3 consequences
  • 49. Share and Discuss Decision + consequences
  • 50. Task #5 Let’s write another ADR (12 minutes) Tips • What exerts force influencing on the decision? • State the context as facts • Use imperative voice for the decision: “We will…” • Dig for at least three consequences
  • 51. Share and Discuss Share your ADR with another group What was the decision? Does the decision make sense given the context? Can you think of more consequences? What is awesome about the ADR?
  • 53. Use a template • Title • Context • Value neutral, describe forces at play • Decision • 1 sentence • “We will ….” • Status • Choose one: [Proposed | Accepted | Deprecated | Superseded] • Consequences • New context after decision applied • 3 – 5+, go beyond the obvious
  • 54. # ADR N: Brief Decision Title Context goes here. Describe the forces at play, including technological, political, social, and project local. These forces are likely in tension, and should be called out as such. The language in this section is value-neutral. It is simply describing facts. Rationale should be self-evident from the context ## Decision This section describes our response to these forces. It is stated in full sentences, with active voice. "We will ...“ ## Status choose one: [Proposed | Accepted | Deprecated | Superseded] if deprecated, include a rationale. If superseded, include a link to the new ADR ## Consequences Describe the resulting context, after applying the decision. All consequences should be listed here, not just the "positive" ones. A particular decision may have positive, negative, and neutral consequences, but all of them affect the team and project in the future.
  • 55. Easy to edit, easy to find • A place where stakeholders can find them • Plain text works great • Easy to consume, easy to change • Integrate with peer review workflow and tools • Contextually close to where it’s used 55
  • 56.
  • 57. Delegate ADR Creation • Grow the team’s design skills • Small responsibility, little risk • Easy to review • Opportunity for training • Peer review, pair, coach 57
  • 58. Peer Review as you would Code • Get the whole team involved • Spread knowledge • Allow team to make decisions without architect 58
  • 59. Foster a documentation habit • Architect points out when a decision is made • “Do we need to record an ADR?” • Track ADRs in the backlog • Hold the team accountable • Make templates readily available • Host an ADR party • Use architecture briefings 59
  • 60. Make a decision, then document it • Proposed decisions without consensus thrashed during peer review • Document and share a decision • Remember ideas for the future 60
  • 61. Not everything is an ADR! • Everyone LOVES ADRs • People will try to use them for anything and everything • Draw pictures • Create guidelines • Capture other views of the system 61
  • 62. ADR Tips and Advice • Use a template • Easy to edit, easy to find • Delegate ADR creation. • Peer review as you would code. • Foster a documentation habit. • Make a decision, then document it. • Not everything is an ADR! 62
  • 64. Get started with ADRs on your team! You don’t need permission to start! Step 1: Create a template Step 2: Create your team’s first ADR Step 3: Ask someone to review it 64
  • 65. Architecture Decisions… cool since at least 1997 • 1997: Architecture in Practice, first edition • Len Bass, Paul Clements, Rick Kazman • 2002: Documenting Software Architecture: Views and Beyond, first edition • Paul Clements et al. •2005: Architecture Decisions: Demystifying Architecture • Jeff Tyree and Art Akerman • 2009: The Decision View's Role in Software Architecture Practice • Phillipe Krutchten • 2011: A documentation framework for architecture decisions • Uwe Van Heesch, Paris Avgerioum, and Rich Hilliard • 2011: Documenting Architecture Decisions • http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions • Michael Nygard 65
  • 66. More Resources… • Architecture Decision Records in Action (SATURN conference) • Video: https://www.youtube.com/watch?v=41NVge3_cYo • Slides: https://resources.sei.cmu.edu/asset_files/Presentation/2017_017_001_497746.pdf • Michael Keeling and Joe Runde • Share the Load: Distributed Design Authority with Architecture Decision Records • https://www.agilealliance.org/resources/experience-reports/distribute-design-authority-with-architecture-decision- records/ • Video: https://www.agilealliance.org/resources/sessions/share-the-load-distributing-design-authority-with-lightweight- decision-records/ • Michael Keeling and Joe Runde • Creating, Reviewing, and Succeeding with Architecture Decision Records • Video: https://www.youtube.com/watch?v=LFiTwqblqsk&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo • Ken Power • Design It! • http://bit.ly/design-it • Michael Keeling • https://github.com/joelparkerhenderson/architecture_decision_record • https://adr.github.io/ 66
  • 68. Thank you! Michael Keeling @michaelkeeling neverletdown.net Buy Design It! now at http://bit.ly/design-it

Editor's Notes

  1. Had things been working well, our team would be operating like Voltron… this giant awesome machine that can do practicaly anything. But remember, that machine is made up of individuals controlling different pieces
  2. But it has significant limitations…
  3. Zooming in a bit to the context, in this case we state three clear forces: We previously decided to use a pattern That pattern was very difficult to enforce A framework exists to enforce this pattern
  4. The decision is short in active voice- We will use the framework
  5. And the consequences go into detail about all of the tradeoffs that we considered when we made this decision
  6. Formal like a fancy dinner, not like a mathematical model.