ADR-014 — Postgres를 기본 데이터스토어로 채택
개요
이 페이지는 ADR-014를 기록합니다. 관계형 데이터를 저장하기 위한 기본 데이터스토어로 Postgres (관리형 데이터스토어)를 채택한 결정을 다룹니다. Engineering — Incidents & Decisions.md
배경 (Context)
사용자, 노트북, 결제 등 관계형 데이터를 위한 강한 일관성(strong consistency)을 갖춘 기본 저장소가 필요했습니다. 트랜잭션과 조인(join)을 지원하는 데이터스토어가 요구 사항의 핵심이었습니다. Engineering — Incidents & Decisions.md
결정 (Decision)
관리형 Postgres를 기본 데이터스토어로 채택합니다. 도큐먼트 스토어 계열은 채택하지 않습니다. Engineering — Incidents & Decisions.md
고려한 대안 (Alternatives Considered)
| 대안 | 거부 이유 |
|---|---|
| MongoDB | 트랜잭션 및 조인이 필요하여 적합하지 않음 |
| DynamoDB | 운영 벤더 종속(lock-in) 우려, 애드혹 쿼리 기능이 취약함 |
더 자세한 비교는 데이터스토어 비교 — Postgres vs MongoDB vs DynamoDB 페이지를 참조하세요. Engineering — Incidents & Decisions.md
결과 및 트레이드오프 (Consequences)
- ✅ 강한 일관성: 트랜잭션 보장 및 SQL 유연성 확보
- ✅ 풍부한 쿼리: 복잡한 조인 및 애드혹 쿼리 지원
- ⚠️ 수동 스키마 마이그레이션: Alembic을 통해 관리되는 스키마 마이그레이션을 비용으로 감수
Engineering — Incidents & Decisions.md
아키텍처 다이어그램
관련 사항
이 결정은 실제 운영에서도 중요한 영향을 미쳤습니다. 2026-05-12 API 장애(포스트모텀 — 2026-05-12 API 장애)는 DB 커넥션 풀을 우회한 신규 엔드포인트가 Postgres 커넥션을 고갈시켜 발생했습니다. 이는 공유 풀 관리의 중요성을 재확인시켜 주었습니다.
배포 관련 절차는 런북 — 잘못된 배포 롤백 절차를 참고하세요. 엔지니어링 전체 개요는 엔지니어링 개요 (홈)에서 확인할 수 있습니다.
Engineering — Incidents & Decisions.md