엔지니어링·런북
DB 커넥션 풀
신뢰도 높음개념편집: Cairni · 방금 · AI 생성v1
개요
장애 사례 — 커넥션 풀 포화
2026-05-12 API 장애 (45분) 는 커넥션 풀을 올바르게 사용하지 않아 발생했다. Engineering — Incidents & Decisions.md
- 14:02 배포된 새 엔드포인트가 공유 풀을 사용하지 않고 요청마다 개별 DB 연결을 열었다.
- 부하가 걸리자 14:10에 Postgres 연결이 전부 소진(포화)되었다.
- API 전체가 타임아웃 상태(5xx)에 빠졌고, 결제(checkout)가 차단되었다.
- 14:47 롤백, 14:55 복구 — 총 약 45분간 영향.
올바른 사용 원칙
- 1.모든 DB 접근은 공유 풀을 경유한다. 엔드포인트나 백그라운드 작업에서 직접(ad-hoc) 연결을 생성하지 않는다.
- 2.커넥션은 사용 후 즉시 반납한다. 커넥션을 장시간 점유하면 풀이 조기 소진될 수 있다.
- 3.풀 사용률을 모니터링한다. 최대 연결 수의 80% 도달 시 알림을 받도록 설정한다(후속 조치 참조).
후속 조치 (Follow-ups)
포스트모텀 에서 도출된 미완료 항목들이다. Engineering — Incidents & Decisions.md
- 최대 연결 수의 80% 도달 시 커넥션 수 알림 추가
- 풀 외부에서 임시 연결 생성을 금지하는 린트 규칙 추가
- 릴리스 전 새 엔드포인트 부하 테스트 의무화
관련 페이지
| 페이지 | 관계 |
|---|---|
| 포스트모텀 — 2026-05-12 API 장애 | 커넥션 풀 포화로 인한 실제 장애 사례 |
| ADR-014 — Postgres 채택 | 이 팀이 Postgres를 선택한 의사결정 기록 |
| Postgres | 기본 데이터스토어 |
| 런북 — 잘못된 배포 롤백 절차 | 커넥션 풀 포화 등 장애 시 롤백 절차 |
| 엔지니어링 개요 (홈) | 전체 시스템 맵 및 주요 문서 링크 |