Files
2nd/10_Wiki/Topics/Domain_Programming/From_Other/decisions.md
T
Antigravity Agent c24165b8bc refactor(topics): 멀티 에이전트용 지식 재편 — _Common(공통 기본기) + Domain_* 구조
에이전트 8종(대화형/프로그래머 C·S/디자이너/설계자/기획자/QA/PD/PM)에게
[공통 기본 능력 + 롤별 Specialty] 2층으로 지식을 주입하기 위한 재분류.
문서 내용·포맷은 무수정, 폴더 이동만 (6,372개 문서 수 보존 확인).

- Topic_Programming → Domain_Programming (내부 구조 보존)
- Topic_Graphic → Domain_Design
- Topic_Business → Domain_Product
- Topic_General → Domain_General
- _Common 신설: Math(구 Topic_Math_Specialty), Reasoning(구 General/From_Thinking & Reasoning),
  Reasoning_Creativity(구 General/From_창의성), Communication(Poetic_Blog_Writing + From_writing)
- 타 도메인의 From_* 폴더는 유지 (출처 표기일 뿐, 이미 도메인에 맞게 분류된 문서)
- 빈 폴더 정리 (memory/procedures)
- 에이전트→폴더 매핑은 workspace의 .astra/agent-knowledge-map.json (9개 에이전트)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 11:05:56 +09:00

5.4 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-decisions Architecture Decision Records (ADR) 10_Wiki/Topics verified self
ADR
Decision Log
Architecture Decisions
none A 0.9 applied
adr
architecture
decisions
documentation
engineering
2026-05-10 pending
language framework
markdown adr-tools

Architecture Decision Records (ADR)

매 한 줄

"매 immutable record of architectural choices, written in the moment of decision". Michael Nygard 가 2011 년 originally proposed; 2026 modern engineering org 의 standard practice — single ADR file per decision, append-only, version-controlled in repo alongside code.

매 핵심

매 ADR file 구조

  • Title: short noun phrase (e.g., "Use PostgreSQL for transactional store").
  • Status: Proposed → Accepted → Deprecated → Superseded.
  • Context: forces 와 constraints 의 background.
  • Decision: what we will do — active voice, declarative.
  • Consequences: positive / negative / neutral trade-offs.

매 lifecycle

  • ADR 는 immutable — supersede 하려면 new ADR 작성, old 의 status 를 Superseded by ADR-N 로 update.
  • PR review 의 part — engineering team 의 collective signoff.
  • ADR-001 부터 sequential numbering, 절대 renumbering 안 함.

매 응용

  1. Microservices boundary 의 결정 (e.g., service split rationale).
  2. Data store / message queue 의 선택 (Postgres vs DynamoDB).
  3. Auth flow / API style (REST vs GraphQL vs gRPC).
  4. Build tooling / CI 의 stack lock-in.

💻 패턴

Nygard ADR template (md)

# ADR-007: Adopt PostgreSQL for primary OLTP

## Status
Accepted (2026-05-08)

## Context
We need an ACID-compliant store for orders.
Read/write ratio is 3:1, peak 2k QPS.
Team has Postgres ops experience; Aurora / RDS managed offering available.

## Decision
We will use Amazon RDS for PostgreSQL 16 as the primary OLTP store.

## Consequences
+ Strong consistency, mature ecosystem.
+ Existing in-house expertise reduces ramp.
- Vendor lock-in to AWS RDS.
- Need to manage VACUUM tuning at >10M rows/table.

MADR template (richer variant)

---
status: accepted
date: 2026-05-08
deciders: [alice, bob, carol]
consulted: [security-team]
informed: [eng-all]
---
# Use Kafka for event bus

## Context and Problem Statement
How do we propagate domain events across 8 microservices?

## Considered Options
- Kafka
- RabbitMQ
- AWS SNS/SQS

## Decision Outcome
Chosen: Kafka, because durable replay + partition ordering matter.

### Positive Consequences
- Replayable history (compaction).
- High throughput (>1M msg/s).

### Negative Consequences
- Operational complexity (ZK / KRaft).

adr-tools CLI workflow

# Init in repo
adr init doc/adr

# Create new ADR
adr new "Use Postgres for OLTP"
# -> doc/adr/0007-use-postgres-for-oltp.md

# Supersede old decision
adr new -s 3 "Replace MongoDB with Postgres"
# -> auto-marks ADR-0003 as Superseded

Lightweight in-PR ADR (modern variant)

<!-- .github/PULL_REQUEST_TEMPLATE.md -->
## Decision Record
- **Choice**: <one sentence>
- **Why now**: <trigger>
- **Alternatives considered**: <list>
- **Trade-offs accepted**: <list>

ADR index generation (CI script)

# scripts/build_adr_index.py
import re, pathlib
adrs = sorted(pathlib.Path("doc/adr").glob("[0-9]*.md"))
lines = ["# ADR Index\n"]
for f in adrs:
    title = next(l[2:].strip() for l in f.read_text().splitlines() if l.startswith("# "))
    status = re.search(r"## Status\n(\w+)", f.read_text()).group(1)
    lines.append(f"- [{f.stem}]({f.name}) — {title} ({status})")
pathlib.Path("doc/adr/README.md").write_text("\n".join(lines))

매 결정 기준

상황 Approach
Solo / prototype Skip ADR — overhead > benefit
Team ≥ 3, multi-quarter project Nygard ADR mandatory
Regulated env (FDA, SOC2) MADR + sign-off metadata
Very fast-moving startup In-PR lightweight ADR
Architecture review board MADR with consulted / informed

기본값: Nygard ADR in doc/adr/, accepted via PR review, supersession over deletion.

🔗 Graph

🤖 LLM 활용

언제: Engineering team ≥ 3, decisions have multi-month consequences, onboarding context value matters. 언제 X: Personal project, throwaway prototype, decisions reversible in <1 day.

안티패턴

  • Edit history erasure: ADR 를 mutate — supersession chain 의 의도 가 lost.
  • Decision-by-Slack: ADR 없이 채팅 만 의 합의 — 6 개월 후 누구 도 rationale 모름.
  • Over-documentation: 매 trivial choice 의 ADR — signal-to-noise drops.
  • Status drift: Accepted ADR 가 production 의 actual state 와 diverge — periodic audit 필요.

🧪 검증 / 중복

  • Verified (Michael Nygard 2011 original post; ThoughtWorks Tech Radar "Adopt"; AWS / Spotify / GitHub public ADR repos).
  • 신뢰도 A.

🕓 Changelog

날짜 변경
2026-05-08 Phase 1
2026-05-10 Manual cleanup — full ADR taxonomy + Nygard/MADR templates + adr-tools workflow