Bird
Raised Fist0
Microservicessystem_design~5 mins

Architecture decision records (ADR) in Microservices - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is an Architecture Decision Record (ADR)?
An ADR is a document that captures important architectural decisions made during a project. It explains the decision, the reasons behind it, and its consequences.
Click to reveal answer
beginner
Why are ADRs important in microservices architecture?
ADRs help teams keep track of why certain design choices were made, making it easier to understand, maintain, and evolve microservices over time.
Click to reveal answer
intermediate
What key elements should an ADR contain?
An ADR should include: the decision title, context, the decision itself, alternatives considered, and the consequences of the decision.
Click to reveal answer
beginner
How does an ADR help new team members?
It provides clear explanations of past decisions, helping new members understand the system design without needing lengthy meetings or guesswork.
Click to reveal answer
intermediate
When should an ADR be created?
An ADR should be created whenever a significant architectural decision is made that affects the system's design or behavior.
Click to reveal answer
What does an ADR primarily document?
AUser interface designs
BArchitectural decisions and their reasons
CCode implementation details
DTesting procedures
Which of the following is NOT typically part of an ADR?
ADecision title
BContext and background
CConsequences of the decision
DCode snippets
When is the best time to write an ADR?
AAt the end of the project
BOnly when problems occur
CAfter a major architectural decision is made
DBefore starting any work
How do ADRs benefit microservices teams?
ABy tracking architectural decisions for clarity and future reference
BBy replacing all documentation
CBy automating deployment
DBy managing user accounts
Which is a common consequence documented in an ADR?
AImpact on system scalability
BUser feedback scores
CMarketing strategies
DEmployee schedules
Explain what an Architecture Decision Record (ADR) is and why it is useful in microservices.
Think about how teams remember important design choices.
You got /3 concepts.
    Describe the typical structure of an ADR and what each part contains.
    Consider the story an ADR tells about a decision.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main purpose of an Architecture Decision Record (ADR) in microservices projects?
      easy
      A. To document important architecture decisions and their reasons
      B. To write detailed code for each microservice
      C. To track bugs and issues in the system
      D. To monitor server performance metrics

      Solution

      1. Step 1: Understand the role of ADRs

        ADRs are used to record key architecture decisions and why they were made.
      2. Step 2: Differentiate ADRs from other documents

        ADRs are not for code, bugs, or performance monitoring but for decision documentation.
      3. Final Answer:

        To document important architecture decisions and their reasons -> Option A
      4. Quick Check:

        Purpose of ADR = Document decisions [OK]
      Hint: ADRs capture decisions, not code or bugs [OK]
      Common Mistakes:
      • Confusing ADRs with bug tracking
      • Thinking ADRs are code documentation
      • Assuming ADRs monitor system metrics
      2. Which of the following is the correct basic structure of an ADR document?
      easy
      A. Title, Status, Context, Decision, Consequences
      B. Title, Code, Tests, Deployment, Logs
      C. Summary, Bugs, Fixes, Performance, Metrics
      D. Introduction, User Stories, UI Design, API Endpoints

      Solution

      1. Step 1: Recall ADR standard sections

        ADRs typically include Title, Status, Context, Decision, and Consequences.
      2. Step 2: Eliminate unrelated structures

        Options with code, bugs, or UI design are unrelated to ADR format.
      3. Final Answer:

        Title, Status, Context, Decision, Consequences -> Option A
      4. Quick Check:

        ADR structure = Title, Status, Context, Decision, Consequences [OK]
      Hint: Look for Context and Consequences in ADR structure [OK]
      Common Mistakes:
      • Mixing ADR with test or deployment docs
      • Confusing ADR with bug reports
      • Including UI design in ADR
      3. Given this ADR excerpt:
      Title: Use REST for service communication
      Status: Accepted
      Context: Need simple, stateless communication
      Decision: Use REST over HTTP
      Consequences: Easier integration but higher latency

      What is the main consequence documented here?
      medium
      A. REST requires stateful connections for speed
      B. REST causes stateless communication to fail
      C. REST reduces integration complexity and latency
      D. REST leads to easier integration but higher latency

      Solution

      1. Step 1: Read the Consequences section carefully

        The consequence states "Easier integration but higher latency".
      2. Step 2: Match the consequence with options

        REST leads to easier integration but higher latency matches exactly; others contradict the text.
      3. Final Answer:

        REST leads to easier integration but higher latency -> Option D
      4. Quick Check:

        Consequence = Easier integration, higher latency [OK]
      Hint: Focus on Consequences section for effects [OK]
      Common Mistakes:
      • Ignoring the 'higher latency' part
      • Assuming REST reduces latency
      • Confusing stateless with stateful
      4. You find an ADR with this status:
      Status: Deprecated

      What does this status indicate about the decision?
      medium
      A. The decision is newly proposed and under review
      B. The decision is no longer recommended or used
      C. The decision is currently active and enforced
      D. The decision has been accepted but not implemented yet

      Solution

      1. Step 1: Understand ADR status meanings

        "Deprecated" means the decision is outdated and should not be used.
      2. Step 2: Compare with other statuses

        New proposals are "Proposed", active ones "Accepted", so deprecated means no longer recommended.
      3. Final Answer:

        The decision is no longer recommended or used -> Option B
      4. Quick Check:

        Status 'Deprecated' = Not recommended [OK]
      Hint: Deprecated means outdated, avoid using [OK]
      Common Mistakes:
      • Confusing deprecated with accepted
      • Thinking deprecated means new proposal
      • Assuming deprecated means pending
      5. Your team must decide between using REST or gRPC for microservice communication. You want to document this choice clearly for future reference. Which is the best way to use an ADR in this situation?
      hard
      A. Write code samples for both REST and gRPC without explanation
      B. Skip documentation and decide by majority vote only
      C. Write an ADR with Context explaining needs, Decision stating REST or gRPC, and Consequences of each choice
      D. Create a bug report to track this decision

      Solution

      1. Step 1: Identify ADR purpose for decision documentation

        ADRs should explain context, decision, and consequences clearly.
      2. Step 2: Evaluate options for documenting architecture choices

        Only Write an ADR with Context explaining needs, Decision stating REST or gRPC, and Consequences of each choice uses ADR properly; others ignore documentation or misuse formats.
      3. Final Answer:

        Write an ADR with Context explaining needs, Decision stating REST or gRPC, and Consequences of each choice -> Option C
      4. Quick Check:

        Use ADR to document decision and consequences [OK]
      Hint: Use ADR to record context, decision, and consequences [OK]
      Common Mistakes:
      • Skipping documentation
      • Confusing ADR with bug reports
      • Only writing code without explanation