/Templates/엔지니어링·런북
엔지니어링·런북

ADR-014 — Postgres를 기본 데이터스토어로 채택

High confidenceconceptedited by Cairni · 방금 · AIv1

개요

이 페이지는 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

Made with CairniExplore public wikis →