ADR-002 compose 파일 소유 경계 (⑤·⑦ 공동 수정 Single Writer)
상태
채택 (2026-07-03)
맥락
docker-compose.yml은 ⑧(본 과제, 앱·DB 편입)·⑤(옵저버빌리티 스택)·⑦(다중 인스턴스+LB)의 공동 수정 대상이다. 세 과제가 같은 파일을 쓰면 머지 충돌·드리프트가 난다.
결정
파일 단위로 소유 과제를 못박고, 병합은 실행 시 -f로만 한다.
| 파일 | 소유 |
|---|---|
docker-compose.yml(base), docker-compose.dev.yml, docker-compose.prod.yml, .env.dev, .env.prod | ⑧ |
docker-compose.observability.yml | ⑤ |
docker-compose.lb.yml | ⑦ |
- ⑤·⑦는 base·override를 절대 수정하지 않고 자기 파일만 추가
-f로 얹는다. - 데이터 인프라 단일 소유자 (senior-pm 정합 #4 확정): 데이터스토어(
mysql·mongodb·redis·kafka)·backend의 단일 소유자는 ⑧ base다. ⑤docker-compose.observability.yml은 exporter+관측 스택만 정의하고 데이터스토어·backend를 재정의하지 않으며 base 서비스를 exporter 대상으로 참조만 한다. 서비스 명명 SSOT는 base —mongodb(⑤ 구mongo아님), ⑤ exporter가 이 이름으로 접속. ⑤가 데이터스토어를 재정의하면-f병합 중복 충돌 → 금지. - ⑦의 다중 인스턴스는
docker-compose.lb.yml에서backend에deploy.replicas+ nginx upstream(infra/nginx/mcp.conf재사용) override로 실현.
대안과 미채택 사유
- 단일 파일에 모두 기술: 세 과제 동시 수정→충돌. ADR-001 profile안과 같은 결함.
결과
- 과제 간에도 Single Writer per File 성립. 실행 커맨드가
-f base -f <env> [-f observability] [-f lb]로 조합. - 본 과제 티켓의 compose 수정은 base·dev·prod override에 한정.