Build Artifact Config Profile
3줄 요약
- Build Artifact Config Profile은 같은 소스 코드가 어떤 jar/image로 고정되고, 어떤 설정과 Secret을 외부에서 받아, 어떤 profile로 운영에서 실행되는지 다룬다.
- 핵심은 “빌드가 됐다”가 아니라 장애 중 배포 버전, 설정 출처, Secret 주입 경로, profile 조합을 재현하고 되돌릴 수 있는가다.
- Spring 백엔드 개발자는 artifact, release note, environment, config drift, 배포 전 설정 체크리스트를 통해 운영자가 같은 버전을 같은 조건으로 다시 띄울 수 있게 해야 한다.
핵심 정리
- Artifact는 실행 가능한 결과물이다. Spring Boot jar, Docker image, image digest, Git SHA가 연결되어야 rollback과 장애 회고가 가능하다.
- Release는 artifact 하나만이 아니라 artifact version, migration 여부, profile, 환경 변수, Secret 참조, 검증 항목, rollback 조건을 묶은 운영 단위다.
- Spring profile은 단순 환경 이름이 아니라 datasource, cache, logging, external API, actuator 노출 범위 같은 의존성 조합을 바꾸는 장치다.
- Config는 환경별로 달라지는 값이고 Secret은 노출되면 안 되는 값이다. 둘을 코드, image layer, CI log, Git history에 섞지 않아야 한다.
- Config drift는 문서, repository, 서버 환경 변수, 운영 콘솔 값이 서로 달라지는 문제다. drift가 있으면 같은 artifact도 환경마다 다르게 실패한다.
- 배포 전 설정 체크리스트는 명령 모음이 아니라 “어떤 값이 어디서 오고, 누가 바꿨고, 실패하면 어떻게 되돌릴지”를 확인하는 절차다.
헷갈리는 지점
- build 성공을 release 성공으로 착각하기 쉽다.
- 핵심은 build는 artifact를 만드는 단계이고 release는 그 artifact를 특정 설정과 검증 조건으로 운영에 내보내는 단위라는 점이다.
- profile을
local, dev, prod 이름만으로 이해하기 쉽다.
- 핵심은 profile이 어떤 bean, 설정 파일, property source, 외부 의존성을 활성화하는지 알아야 한다는 점이다.
- Secret을 환경 변수로 빼면 분리가 끝났다고 생각하기 쉽다.
- 핵심은 값이 어디에 저장되고, 누가 읽을 수 있고, 어떻게 회전하며, 로그에 노출되지 않는지까지 봐야 한다는 점이다.
확인 질문
- 배포된 Spring 서비스의 release 단위를 설명하려면 어떤 정보가 필요한가?
- Git SHA, jar/image tag, image digest, active profile, 주요 환경 변수 출처, Secret 참조, migration 포함 여부, smoke test 결과, rollback 대상이다.
- Config drift가 장애를 만드는 방식은 무엇인가?
- 같은 artifact라도 서버마다 환경 변수나 운영 콘솔 값이 달라져 특정 인스턴스만 다른 DB, 다른 timeout, 다른 외부 API를 바라보게 만들 수 있다.
- 배포 전 설정 체크리스트가 확인해야 하는 가장 중요한 것은 무엇인가?
- 운영에 적용될 실제 값과 문서/코드에 기대한 값이 일치하는지, 그리고 실패 시 안전하게 되돌릴 수 있는지다.