![[코드가 환경을 모르는 구조 2/7] 배포 코드가 환경을 모르는 구조](https://cdn.sanity.io/images/v31psllp/production/58ae2e178769ca25361200fed07c9ecb06c62d2a-1684x1030.png)
데브옵스
[코드가 환경을 모르는 구조 2/7] 배포 코드가 환경을 모르는 구조
두줄요약
배포 코드를 환경별로 갈라 쓰지 않고, 템플릿과 값의 층을 분리해 환경을 외부에서 주입하는 구조를 설명했습니다. GitOps와 Jenkinsfile에도 같은 규율을 적용해 배포 이력을 Git에 남기는 방법을 다뤘습니다.
핵심 내용
- 배포 코드를 환경별로 분기하지 않고, 템플릿과 값의 층을 분리해 환경을 외부에서 주입하는 구조
- Helm 값 3층 구조로 기본값, 환경값, 변종값을 분리하고, 템플릿은 앱과 매니페스트 형태만 담당
- GitOps와 ArgoCD, App-of-Apps로 Git 브랜치가 곧 배포 이력이 되도록 구성
- Jenkinsfile도 같은 규율을 적용해 환경 조건을 코드에 박지 않고 파라미터로 받는 방식 유지
적용해볼 점
- 배포 코드에서 환경명 직접 참조 제거
- 환경별 차이는 values나 외부 입력으로만 관리
- 예외 분기는 파이프라인이 아니라 설정 층으로 이동
