PART 5 · 강의 3/3

아키텍처
의사결정 기록

ADR로 중요한 결정을 문서화하고 지식을 공유합니다.

01

ADR 작성법

Architecture Decision Record의 구조와 작성 방법

ADR-0001

마이크로서비스 간 통신에 gRPC 사용

상태: Accepted
날짜: 2026-01-15
의사결정자: Architecture Team

📋 Context (맥락)

주문 처리 시스템을 마이크로서비스로 분리하면서, 서비스 간 통신 방식을 결정해야 합니다. 높은 처리량과 낮은 지연시간이 필요하며, 스키마 진화를 지원해야 합니다.

💡 Decision (결정)

마이크로서비스 간 동기 통신에 gRPC를 사용합니다. Protocol Buffers로 인터페이스를 정의하고, 양방향 스트리밍이 필요한 경우에도 gRPC를 활용합니다.

⚖️ Consequences (결과)

  • 긍정적: REST 대비 10배 빠른 성능, 타입 안정성, 코드 자동 생성
  • 부정적: 러닝 커브, 브라우저 직접 호출 불가, 디버깅 복잡성
  • 중립적: 팀이 Protocol Buffers 학습 필요
📋

Context

결정이 필요한 상황과 배경을 설명

💡

Decision

어떤 결정을 내렸는지 명확하게 기술

⚖️

Consequences

결정으로 인한 긍정적/부정적 결과

💡 ADR 작성 팁

ADR은 짧고 명확하게 작성합니다. 한 문서에 하나의 결정만 담고, 왜 그 결정을 내렸는지를 중심으로 기술합니다. 미래의 팀원이 읽어도 이해할 수 있어야 합니다.

02

트레이드오프 분석

선택지 간의 장단점을 체계적으로 비교

기준 REST API gRPC GraphQL
성능
학습 용이성
유연성
도구 지원

👍 선택의 장점

  • Binary 프로토콜로 높은 성능
  • 강타입 스키마로 타입 안정성
  • 자동 코드 생성으로 개발 생산성
  • 양방향 스트리밍 지원

👎 감수할 단점

  • 팀 학습 비용 발생
  • 브라우저 직접 호출 불가
  • 디버깅이 REST보다 복잡
  • 초기 설정 복잡성
📌 트레이드오프 분석 체크리스트
  • 성능 — 응답 시간, 처리량, 리소스 사용량
  • 개발 생산성 — 학습 곡선, 도구 지원, 문서화
  • 운영 — 모니터링, 디버깅, 배포 용이성
  • 확장성 — 수평 확장, 스키마 진화, 버전 관리
  • 비용 — 라이선스, 인프라, 인력 비용
03

의사결정 문서화 템플릿

실무에서 바로 사용할 수 있는 ADR 템플릿

# ADR-XXXX: [결정 제목]

## 상태
[Proposed | Accepted | Deprecated | Superseded by ADR-XXXX]

## 맥락 (Context)
[어떤 상황에서 이 결정이 필요한가?]
[관련된 기술적/비즈니스적 제약은?]

## 검토한 선택지 (Options Considered)
1. 옵션 A - 설명 및 장단점
2. 옵션 B - 설명 및 장단점
3. 옵션 C - 설명 및 장단점

## 결정 (Decision)
[어떤 결정을 내렸는가?]
[왜 이 선택지를 골랐는가?]

## 결과 (Consequences)
- 긍정적: [좋아지는 점]
- 부정적: [감수해야 할 점]
- 리스크: [잠재적 위험]
📁

코드와 함께 관리

ADR을 Git 저장소의 docs/adr 폴더에 Markdown으로 저장

🔢

순차적 번호 부여

ADR-0001, ADR-0002 형식으로 시간순 추적 가능

🔗

결정 간 연결

관련 ADR을 링크하고, 대체된 결정은 명시

⚠️ ADR 관리 주의사항

ADR은 수정하지 않고 추가합니다. 결정이 변경되면 새 ADR을 작성하고, 이전 ADR의 상태를 "Superseded by ADR-XXXX"로 변경합니다. 이렇게 해야 의사결정의 히스토리를 추적할 수 있습니다.

🎉

학습 완료

🏆

축하합니다!

소프트웨어 아키텍처 마스터 과정의 모든 강의를 완료했습니다.
이제 AI 코딩 시대의 아키텍트로서 첫 걸음을 내딛을 준비가 되었습니다.

📌 학습 내용 되돌아보기
  • Part 1 — 소프트웨어 아키텍처의 기초와 AI 시대의 변화
  • Part 2 — 주요 아키텍처 패턴 (레이어드, 클린, 헥사고날, 이벤트 기반)
  • Part 3 — 명세 기반 개발과 AI와의 효과적인 협업
  • Part 4 — 멀티 에이전트 시스템과 AI 코드 리뷰
  • Part 5 — 실무 프로젝트 설계, 리팩토링, 의사결정 기록
SUMMARY

핵심 요약

  • ADR은 중요한 아키텍처 결정을 문서화하는 경량 방법론
  • Context → Decision → Consequences 구조로 를 기록
  • 트레이드오프 분석으로 선택지 간 장단점을 체계적으로 비교
  • ADR은 수정하지 않고 추가하여 히스토리 보존
  • 코드와 함께 버전 관리하여 변화 추적