/템플릿/엔지니어링·런북
엔지니어링·런북

데이터스토어 비교 — Postgres vs MongoDB vs DynamoDB

신뢰도 높음비교편집: Cairni · 방금 · AI 생성v1

개요

이 페이지는 ADR-014 — Postgres를 기본 데이터스토어로 채택에서 수행된 데이터스토어 선택 과정을 정리합니다. 팀은 사용자, 노트북, 빌링 등 관계형 데이터를 위한 기본 저장소를 선정할 때 강한 일관성(strong consistency)트랜잭션 및 조인 지원을 핵심 요건으로 삼았습니다. Engineering — Incidents & Decisions.md


후보 비교표

항목PostgresMongoDB ❌DynamoDB ❌
트랜잭션완전 지원제한적 (멀티 도큐먼트)제한적
조인(JOIN)완전 지원미지원 (애플리케이션 레벨)미지원
일관성 모델강한 일관성최종 일관성(기본)최종 일관성(기본)
애드혹 쿼리SQL로 유연하게 가능제한적취약
운영 종속성관리형(Managed)으로 낮음낮음높음 (벤더 잠금)
스키마 마이그레이션수동 (Alembic 사용)유연(스키마리스)유연(스키마리스)
채택 결과채택기각기각

Engineering — Incidents & Decisions.md


각 후보 상세

✅ Postgres (채택)

  • 채택 이유: 강한 일관성, SQL의 유연성, 트랜잭션과 조인 완전 지원.
  • 운영 방식: 관리형(Managed) Postgres 사용.
  • 트레이드오프: 스키마 변경 시 수동 마이그레이션이 필요하며, ADR-014에 따라 Alembic으로 이를 관리한다.
  • DB 커넥션 풀 관리가 중요하며, 이를 소홀히 할 경우 커넥션 고갈로 인한 장애가 발생할 수 있다 (참고: 포스트모텀 — 2026-05-12 API 장애).

Engineering — Incidents & Decisions.md

❌ MongoDB (기각)

  • 기각 이유: 트랜잭션과 조인이 필요한 요건을 충족하지 못함.
  • MongoDB는 도큐먼트 스토어로서 스키마리스 유연성을 제공하지만, 팀의 핵심 요건인 관계형 데이터 처리에 적합하지 않다고 판단되었다.

Engineering — Incidents & Decisions.md

❌ DynamoDB (기각)

  • 기각 이유: 운영 종속성(벤더 잠금) 문제와 애드혹 쿼리의 취약함.
  • 특정 클라우드 벤더에 대한 강한 의존성이 발생하며, 복잡한 쿼리 패턴을 유연하게 처리하기 어렵다고 판단되었다.

Engineering — Incidents & Decisions.md


결정 흐름


관련 페이지