2.6 KiB
2.6 KiB
314 인프라 설정 SSOT 원칙
상위 원칙: 0_VALUE Infrastructure SSOT Principle
1. 목적
- 인프라 핵심 설정(IP, 포트, 업스트림, 공통 URL, 환경별 엔드포인트)을 단일 출처(Single Source of Truth)로 관리한다.
- 값 변경 1건이 다수 코드/설정/문서 수정을 유발하는 구조를 제거한다.
1.1 상위 원칙 관계
- 상위 공통 원칙의 SSOT는
0_VALUE/02_Governance/infrastructure-ssot-principle.md다. - 본 문서는 robeing 운영 구조에 맞춘 구체화 문서다.
- 원칙 충돌 시 상위 원칙을 먼저 검토하고, 예외가 필요하면 사용자에게 먼저 보고한 뒤 본 문서에 예외를 남긴다.
2. 원칙
2.1 단일 출처
- 런타임 설정의 기준 파일은
/home/admin/infra-config/runtime.env단일 파일로 한다. - 민감 정보의 기준 파일은
/home/admin/infra-config/secrets.env단일 파일로 한다.
2.2 분리 원칙
runtime.env: 비민감 운영값만 포함한다.- 예: 내부 IP, 포트, 서비스 호스트, 모니터 URL, 기능 플래그
secrets.env: 인증/암호/키 등 민감값만 포함한다.- 예: JWT secret, OAuth secret, DB password 포함 URL
2.3 참조 원칙
- 서비스 컨테이너는
docker-compose.yml의env_file에서 위 2개 파일을 우선 참조한다. - 서비스별
.env는 “임시 로컬 오버라이드” 용도로만 사용한다. - 운영 기본값은 코드 하드코딩으로 두지 않는다.
2.4 네트워크 표현 원칙
- 컨테이너 간 통신은 서비스 DNS 이름을 우선 사용한다.
- 호스트 접근이 필요한 경우에만
host.docker.internal또는 운영 표준 호스트 값을 사용한다. - 고정 IP 직접 참조는 불가피한 경계 구간에서만 허용하고, 반드시 SSOT 변수로 선언한다.
2.5 보안 원칙
runtime.env와secrets.env는 git에 커밋하지 않는다.- 권한 최소화:
runtime.env640 이하secrets.env600- 디렉터리 권한 제한(예: 750)
2.6 문서 원칙
- 트러블슈팅 문서는 “사실/조치/검증”만 기록한다.
- 영구 규칙 변경은 본 원칙 문서에만 반영한다.
- 운영 주소 변경 시, 개별 문서에 직접 IP를 추가하지 말고 SSOT 변수명을 사용한다.
3. 적용 기준
- 신규 서비스: 최초 구성부터 본 원칙을 강제 적용한다.
- 기존 서비스: 장애 영향도가 높은 서비스부터 단계적으로 이전한다.
- 변경 검증:
docker compose config, health check, 실제 API 경로 응답을 모두 통과해야 적용 완료로 본다.