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·kafkabackend의 단일 소유자는 ⑧ base다. ⑤ docker-compose.observability.yml은 exporter+관측 스택만 정의하고 데이터스토어·backend를 재정의하지 않으며 base 서비스를 exporter 대상으로 참조만 한다. 서비스 명명 SSOT는 base — mongodb(⑤ 구 mongo 아님), ⑤ exporter가 이 이름으로 접속. ⑤가 데이터스토어를 재정의하면 -f 병합 중복 충돌 → 금지.
  • ⑦의 다중 인스턴스는 docker-compose.lb.yml에서 backenddeploy.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에 한정.