Architecture Evaluation
Core principle: Every architecture decision trades quality attributes — optimizing one degrades another. Make trade-offs explicit, document in an ADR, and assess reversibility. The best architecture is the one whose trade-offs the team can live with.
When to Use This Skill
- Choosing between system architectures or technology stacks
- Design review needs structured evaluation, not opinion
- About to commit (database, messaging pattern, deployment model) without documenting trade-offs
- An ADR needs to be produced
- "Should we use X?" where X is an architecture pattern or technology
- A
systems-thinking analysis surfaced structural concerns needing architecture-level resolution
Core Methodology
Step 1: Establish Decision Context
- Decision scope: Specific choice on the table (e.g., "monolith vs. microservices for the order system" — not "system design" generally)
- Decision driver: Why now? (new requirement, scaling problem, tech debt, team growth)
- Constraints: Non-negotiables — budget, team size and skills, compliance, existing infra to preserve, timeline
- Stakeholders: engineering, ops, product, security, finance
Step 2: Assess Quality Attributes
For each relevant attribute, assess current state and how each option affects it.
Key attributes (evaluate only those relevant):
- Scalability: 10x load? Scaling unit?
- Reliability: Failure mode? Blast radius?
- Performance: Latency, throughput, resource efficiency under expected and peak load
- Security: Attack surface, data protection, auth boundaries
- Maintainability: Change effort? How many teams must coordinate for a typical change?
- Operability: Deployment complexity, observability, incident response, on-call burden
- Cost: Infra, development, operational over the time horizon
Rate each option per attribute: Strong / Adequate / Weak — with one-sentence justification.
Step 3: Map Trade-Offs
Architecture trade-offs are rarely "good vs. bad" — they are "more X = less Y."
Common pairs:
- Consistency vs. availability (CAP)
- Simplicity vs. flexibility
- Performance vs. maintainability
- Development speed vs. operational complexity
- Cost vs. reliability
For each, state which way each option leans and why. This is the core of the evaluation.
Step 4: Evaluate Architecture Options
For each candidate:
- Fit to constraints: Satisfies all non-negotiables from Step 1?
- Quality attribute profile: Strong/weak where (from Step 2)?
- Adoption preconditions: What must be true to succeed? (microservices need CI/CD maturity, observability, team autonomy)
- Migration path: Incremental or big-bang cutover?
Eliminate options that violate constraints. Compare remaining via attribute profiles and trade-off positions.
Step 5: Assess Evolutionary Characteristics
How does this decision age?
- Reversibility: Hard to change in 1 year? 3 years? Switching cost?
- Lock-in vectors: Vendor, data model, API contract, team knowledge
- Migration cost if wrong: Time and money to unwind
- Optionality: Does this open or close future moves? Prefer optionality-preserving when uncertain
Step 6: Write the Architecture Decision Record
Produce an ADR — also serves as handoff to execution-planning via Contract E.
Standard format:
- Title: Short, descriptive
- Status: Proposed / Accepted / Deprecated / Superseded
- Context: Situation, constraints, forces (Steps 1-3)
- Decision: Chosen option + primary reasons
- Consequences: Positive, negative, operational, team, known risks
- Alternatives rejected: What was considered, why not chosen
Output Format
🎯 Decision Context
- Decision: [what's being decided]
- Driver: [why now]
- Constraints: [non-negotiables]
⚖️ Quality Attribute Assessment
| Attribute |
Option A |
Option B |
Option C |
| Scalability |
[Strong/Adequate/Weak — reason] |
[rating — reason] |
[rating — reason] |
| Reliability |
[rating — reason] |
[rating — reason] |
[rating — reason] |
| Maintainability |
[rating — reason] |
[rating — reason] |
[rating — reason] |
| Operability |
[rating — reason] |
[rating — reason] |
[rating — reason] |
| Cost |
[rating — reason] |
[rating — reason] |
[rating — reason] |
⚖️ Trade-Off Map
| Trade-Off |
Option A leans toward |
Option B leans toward |
| [Simplicity vs. Flexibility] |
[direction + why] |
[direction + why] |
| [Cost vs. Reliability] |
[direction + why] |
[direction + why] |
📋 Architecture Decision Record
- Title: [ADR-NNN: title]
- Status: Proposed / Accepted
- Context: [from Steps 1-3]
- Decision: [chosen option + reasons]
- Consequences:
- Positive: [what improves]
- Negative: [what degrades]
- Operational: [deployment, monitoring, on-call]
- Alternatives rejected:
- [Option]: rejected because [reason]
🔄 Evolutionary Assessment
- Reversibility: Easy / Moderate / Difficult — [justification]
- Lock-in risks: [vendor, data model, API, team knowledge]
- Migration cost if wrong: [estimated effort]
- Optionality: [future moves enabled or foreclosed]
📋 Execution-Planning Handoff (Contract E)
- Decision: [from ADR]
- Constraints: [non-negotiable attributes, budget, team, compliance]
- Lock-in risks: [from evolutionary assessment]
- Migration requirements: [if replacing existing]
- Sequencing hints: [build-first based on dependencies]
- Known risks: [from inversion-premortem stress test, if run]
Common Traps
Resume-Driven Architecture: Choosing tech because the team wants to learn it, not because it fits. Microservices, Kubernetes, event sourcing are powerful — and unnecessary for most systems.
Ignoring adoption preconditions: Microservices need CI/CD, observability, team autonomy. Event-driven needs idempotency discipline and debugging tooling. Evaluate whether the team can operate it, not just build it.
Optimizing for the wrong attribute: Designing for millions when you have hundreds. Maintainability and operability usually matter more than scalability.
Irreversibility blindness: Treating all decisions as equally weighted. Database choice locks in for years; caching strategy changes in a sprint. Spend evaluation effort proportional to reversibility cost.
Comparison without constraints: Evaluating in the abstract instead of against this team, this budget, this timeline. The best architecture in theory is irrelevant if the team can't build or operate it.
Thinking Triggers
- "What quality attributes are in tension, and which side are we choosing?"
- "What must be true about our team and infra for this option to succeed?"
- "How hard is it to reverse this in two years?"
- "Am I choosing this because it fits the problem, or because it's intellectually interesting?"
- "Migration path — incremental or big-bang?"
1---2name: architecture-evaluation3description: Apply architecture evaluation whenever the user faces a system design decision — choosing between architectures, evaluating trade-offs, or documenting a technical direction. Triggers on phrases like "evaluate this architecture", "should we use microservices?", "what are the trade-offs?", "is this design scalable?", "architecture decision", "ADR", "system design review", "which database should we use?". Use proactively when the user is about to commit to a technical direction without explicit trade-off analysis.4---56# Architecture Evaluation78**Core principle**: Every architecture decision trades quality attributes — optimizing one degrades another. Make trade-offs explicit, document in an ADR, and assess reversibility. The best architecture is the one whose trade-offs the team can live with.910---1112## When to Use This Skill1314- Choosing between system architectures or technology stacks15- Design review needs structured evaluation, not opinion16- About to commit (database, messaging pattern, deployment model) without documenting trade-offs17- An ADR needs to be produced18- "Should we use X?" where X is an architecture pattern or technology19- A `systems-thinking` analysis surfaced structural concerns needing architecture-level resolution2021---2223## Core Methodology2425### Step 1: Establish Decision Context2627- **Decision scope**: Specific choice on the table (e.g., "monolith vs. microservices for the order system" — not "system design" generally)28- **Decision driver**: Why now? (new requirement, scaling problem, tech debt, team growth)29- **Constraints**: Non-negotiables — budget, team size and skills, compliance, existing infra to preserve, timeline30- **Stakeholders**: engineering, ops, product, security, finance3132### Step 2: Assess Quality Attributes3334For each relevant attribute, assess current state and how each option affects it.3536Key attributes (evaluate only those relevant):37- **Scalability**: 10x load? Scaling unit?38- **Reliability**: Failure mode? Blast radius?39- **Performance**: Latency, throughput, resource efficiency under expected and peak load40- **Security**: Attack surface, data protection, auth boundaries41- **Maintainability**: Change effort? How many teams must coordinate for a typical change?42- **Operability**: Deployment complexity, observability, incident response, on-call burden43- **Cost**: Infra, development, operational over the time horizon4445Rate each option per attribute: Strong / Adequate / Weak — with one-sentence justification.4647### Step 3: Map Trade-Offs4849Architecture trade-offs are rarely "good vs. bad" — they are "more X = less Y."5051Common pairs:52- Consistency vs. availability (CAP)53- Simplicity vs. flexibility54- Performance vs. maintainability55- Development speed vs. operational complexity56- Cost vs. reliability5758For each, state which way each option leans and why. This is the core of the evaluation.5960### Step 4: Evaluate Architecture Options6162For each candidate:63- **Fit to constraints**: Satisfies all non-negotiables from Step 1?64- **Quality attribute profile**: Strong/weak where (from Step 2)?65- **Adoption preconditions**: What must be true to succeed? (microservices need CI/CD maturity, observability, team autonomy)66- **Migration path**: Incremental or big-bang cutover?6768Eliminate options that violate constraints. Compare remaining via attribute profiles and trade-off positions.6970### Step 5: Assess Evolutionary Characteristics7172How does this decision age?7374- **Reversibility**: Hard to change in 1 year? 3 years? Switching cost?75- **Lock-in vectors**: Vendor, data model, API contract, team knowledge76- **Migration cost if wrong**: Time and money to unwind77- **Optionality**: Does this open or close future moves? Prefer optionality-preserving when uncertain7879### Step 6: Write the Architecture Decision Record8081Produce an ADR — also serves as handoff to `execution-planning` via Contract E.8283Standard format:84- **Title**: Short, descriptive85- **Status**: Proposed / Accepted / Deprecated / Superseded86- **Context**: Situation, constraints, forces (Steps 1-3)87- **Decision**: Chosen option + primary reasons88- **Consequences**: Positive, negative, operational, team, known risks89- **Alternatives rejected**: What was considered, why not chosen9091---9293## Output Format9495### 🎯 Decision Context96- **Decision**: [what's being decided]97- **Driver**: [why now]98- **Constraints**: [non-negotiables]99100### ⚖️ Quality Attribute Assessment101102| Attribute | Option A | Option B | Option C |103|-----------|----------|----------|----------|104| Scalability | [Strong/Adequate/Weak — reason] | [rating — reason] | [rating — reason] |105| Reliability | [rating — reason] | [rating — reason] | [rating — reason] |106| Maintainability | [rating — reason] | [rating — reason] | [rating — reason] |107| Operability | [rating — reason] | [rating — reason] | [rating — reason] |108| Cost | [rating — reason] | [rating — reason] | [rating — reason] |109110### ⚖️ Trade-Off Map111112| Trade-Off | Option A leans toward | Option B leans toward |113|-----------|----------------------|----------------------|114| [Simplicity vs. Flexibility] | [direction + why] | [direction + why] |115| [Cost vs. Reliability] | [direction + why] | [direction + why] |116117### 📋 Architecture Decision Record118- **Title**: [ADR-NNN: title]119- **Status**: Proposed / Accepted120- **Context**: [from Steps 1-3]121- **Decision**: [chosen option + reasons]122- **Consequences**:123 - Positive: [what improves]124 - Negative: [what degrades]125 - Operational: [deployment, monitoring, on-call]126- **Alternatives rejected**:127 - [Option]: rejected because [reason]128129### 🔄 Evolutionary Assessment130- **Reversibility**: Easy / Moderate / Difficult — [justification]131- **Lock-in risks**: [vendor, data model, API, team knowledge]132- **Migration cost if wrong**: [estimated effort]133- **Optionality**: [future moves enabled or foreclosed]134135### 📋 Execution-Planning Handoff (Contract E)136- **Decision**: [from ADR]137- **Constraints**: [non-negotiable attributes, budget, team, compliance]138- **Lock-in risks**: [from evolutionary assessment]139- **Migration requirements**: [if replacing existing]140- **Sequencing hints**: [build-first based on dependencies]141- **Known risks**: [from inversion-premortem stress test, if run]142143---144145## Common Traps146147**Resume-Driven Architecture**: Choosing tech because the team wants to learn it, not because it fits. Microservices, Kubernetes, event sourcing are powerful — and unnecessary for most systems.148149**Ignoring adoption preconditions**: Microservices need CI/CD, observability, team autonomy. Event-driven needs idempotency discipline and debugging tooling. Evaluate whether the team can *operate* it, not just build it.150151**Optimizing for the wrong attribute**: Designing for millions when you have hundreds. Maintainability and operability usually matter more than scalability.152153**Irreversibility blindness**: Treating all decisions as equally weighted. Database choice locks in for years; caching strategy changes in a sprint. Spend evaluation effort proportional to reversibility cost.154155**Comparison without constraints**: Evaluating in the abstract instead of against this team, this budget, this timeline. The best architecture in theory is irrelevant if the team can't build or operate it.156157---158159## Thinking Triggers160161- *"What quality attributes are in tension, and which side are we choosing?"*162- *"What must be true about our team and infra for this option to succeed?"*163- *"How hard is it to reverse this in two years?"*164- *"Am I choosing this because it fits the problem, or because it's intellectually interesting?"*165- *"Migration path — incremental or big-bang?"*