엔지니어링·런북

Postgres (관리형 데이터스토어)

高信頼度エンティティ編集: Cairni · 방금 · AI 生成v1

개요

Postgres는 이 시스템의 기본 관계형 데이터스토어로, 사용자, 노트북, 빌링 데이터를 저장합니다. ADR-014에서 공식적으로 채택이 결정되었으며, 관리형(managed) 형태로 운영됩니다. Engineering — Incidents & Decisions.md


채택 배경 및 결정 근거

ADR-014 — Postgres를 기본 데이터스토어로 채택에 따르면, 강한 일관성(strong consistency)과 관계형 데이터(트랜잭션 및 조인)가 필요한 주요 데이터를 저장하기 위해 Postgres가 선택되었습니다. Engineering — Incidents & Decisions.md

고려된 대안

대안거부 이유
MongoDB트랜잭션 및 조인 지원 부족
DynamoDB운영 종속성(lock-in), 임시 쿼리(ad-hoc query) 취약

자세한 비교는 데이터스토어 비교 — Postgres vs MongoDB vs DynamoDB 페이지를 참고하세요. Engineering — Incidents & Decisions.md


주요 특성

  • 강한 일관성: 트랜잭션 보장 및 SQL 유연성 제공
  • 스키마 마이그레이션: 수동 스키마 마이그레이션 필요 — Alembic으로 관리
  • 커넥션 풀: 모든 요청은 DB 커넥션 풀을 통해 연결해야 함 (풀 우회 시 장애 위험)

Engineering — Incidents & Decisions.md


아키텍처 내 위치


관련 장애 이력

포스트모텀 — 2026-05-12 API 장애 (45분)에서 Postgres가 핵심 장애 원인과 직결되었습니다. 신규 엔드포인트가 DB 커넥션 풀을 사용하지 않고 요청마다 직접 DB 커넥션을 열어 Postgres의 최대 커넥션 수가 소진되었고, 결과적으로 API 타임아웃이 발생했습니다. Engineering — Incidents & Decisions.md

장애 후속 조치 (Postgres 관련)

  • 최대 커넥션의 80% 도달 시 알림 추가
  • 풀 외부 임시 커넥션 생성을 금지하는 린트(lint) 규칙 도입
  • 신규 엔드포인트 릴리스 전 부하 테스트 의무화

Engineering — Incidents & Decisions.md


운영 주의사항

배포 롤백 시 데이터베이스 스키마가 변경된 경우 앱만 단순 롤백해서는 안 됩니다. 반드시 마이그레이션 상태를 먼저 확인해야 합니다. 자세한 절차는 런북 — 잘못된 배포 롤백 절차를 참고하세요. Engineering — Incidents & Decisions.md


관련 페이지