Files
2nd/10_Wiki/Topic_Programming/From_Other/decisions.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +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