adr-writer

安装量: 48
排名: #15497

安装

npx skills add https://github.com/patricio0312rev/skills --skill adr-writer

ADR Writer

Document architecture decisions with clear context, alternatives, and consequences.

ADR Template

ADR-001: [Title of Decision]

Status: Proposed | Accepted | Deprecated | Superseded by ADR-XXX Date: 2024-01-15 Deciders: Alice (Tech Lead), Bob (Principal Engineer) Owner: Alice

Context

What is the issue we're facing? What factors are driving this decision?

We need to choose a database for our new analytics service. Current requirements:

  • 10M+ events per day
  • Complex aggregation queries
  • Real-time dashboards
  • Budget: $5k/month
  • Team familiar with SQL

Decision

We will use PostgreSQL with TimescaleDB extension.

Alternatives Considered

Option 1: PostgreSQL + TimescaleDB (CHOSEN)

Pros:

  • Team already knows PostgreSQL
  • Time-series optimization for analytics
  • Reliable and proven
  • Good query performance
  • Reasonable cost (~$3k/month)

Cons:

  • Requires manual scaling effort
  • Not purpose-built for analytics

Option 2: ClickHouse

Pros:

  • Excellent query performance for analytics
  • Built for analytics workloads
  • Column-oriented storage

Cons:

  • Team unfamiliar with ClickHouse
  • Steeper learning curve
  • Different query syntax

Option 3: BigQuery

Pros:

  • Fully managed
  • Excellent for analytics
  • Scales automatically

Cons:

  • Higher cost (~$8k/month for our volume)
  • Vendor lock-in to GCP
  • Less control over optimization

Tradeoffs

What we're optimizing for:

  • Team velocity (familiar tech)
  • Cost efficiency
  • Good enough performance

What we're sacrificing:

  • Peak analytical performance (vs ClickHouse)
  • Fully managed experience (vs BigQuery)

Consequences

Positive

  • Development can start immediately (no learning curve)
  • Lower operational costs
  • Can reuse existing PostgreSQL expertise
  • Easy integration with current stack

Negative

  • Will need to manually optimize queries
  • May need to revisit if we scale 10x
  • Requires more operational work than BigQuery

Risks

  • Performance may degrade at 100M+ events/day
  • Mitigation: Monitor query performance, plan migration at 50M events/day

Implementation Notes

  • Use TimescaleDB hypertables for event storage
  • Implement continuous aggregates for common queries
  • Set up read replicas for dashboard queries
  • Document scaling runbook at 50M events/day

Follow-up Actions

  • [ ] Provision PostgreSQL + TimescaleDB cluster (Alice, by 2024-01-20)
  • [ ] Create migration script from MySQL (Bob, by 2024-01-22)
  • [ ] Set up monitoring dashboards (Alice, by 2024-01-25)
  • [ ] Document scaling thresholds (Alice, by 2024-01-30)

References

Revision History

  • 2024-01-15: Initial draft (Alice)
  • 2024-01-16: Added cost analysis (Bob)
  • 2024-01-17: Accepted by architecture review board

ADR Numbering ADR-001: Initial System Architecture ADR-002: Database Selection for Analytics ADR-003: Authentication Strategy ...

Status Workflow Proposed → Accepted → Implemented ↓ Rejected

Accepted → Deprecated → Superseded by ADR-XXX

Common Decision Types

Technology Selection:

Database choice Framework selection Cloud provider Programming language

Architecture Patterns:

Microservices vs Monolith Event-driven vs Request-response Sync vs Async communication

Infrastructure:

Deployment strategy Monitoring approach Scaling strategy

Security:

Authentication method Data encryption approach Access control model Quick Start Guide

1. Create new ADR

cp templates/adr-template.md docs/adr/ADR-042-title.md

2. Fill in sections

- Context: Why are we making this decision?

- Decision: What did we decide?

- Alternatives: What else did we consider?

- Consequences: What are the impacts?

3. Review with team

- Share in architecture channel

- Get feedback from stakeholders

- Iterate on alternatives

4. Update status to "Accepted"

5. Link from main architecture docs

Best Practices Write ADRs for significant decisions: Not every choice needs an ADR Document alternatives: Show you considered options Be honest about tradeoffs: Every decision has downsides Keep it concise: 1-2 pages maximum Update status: Mark deprecated/superseded ADRs Link related ADRs: Create decision trails Include follow-ups: Action items with owners Anti-Patterns

❌ Too detailed: 10-page ADRs nobody reads ❌ No alternatives: Looks like decision was predetermined ❌ Missing consequences: Ignoring downsides ❌ No owner: Nobody accountable ❌ Outdated status: Old ADRs marked "Proposed"

Review Checklist Clear problem statement in Context Decision is stated explicitly 2+ alternatives considered Tradeoffs honestly assessed Consequences (positive and negative) documented Risks identified with mitigations Decision owner assigned Follow-up actions with deadlines Status is current Output Checklist ADR document created Context explains the problem Decision clearly stated 2-3 alternatives documented Tradeoffs section filled Consequences listed (positive & negative) Risks identified with mitigations Decision date and owners Follow-up actions assigned Status is set

返回排行榜