프로파일·환경설정 (Profiles & Configuration)¶
환경(로컬/개발/프로덕션)마다 달라지는 설정을 코드에 하드코딩하지 않고 관리하는 것이 중요합니다. Spring Boot 의 application.yml/properties 와 @Profile 기능으로 환경별 설정을 나누는 방법을 데이터스케쳐스 실무 관점에서 정리합니다.
application.yml 과 프로파일¶
src/main/resources/application.yml기본 설정.application-{profile}.yml로 프로파일별 설정 분리 (예:application-dev.yml,application-prod.yml).- 실행 시 활성 프로파일 지정:
@Profile("prod")애너테이션으로 특정 프로파일에서만 빈 등록/활성화할 수 있습니다.
외부 설정 우선순위¶
Spring Boot 는 여러 설정 소스를 우선순위로 합칩니다 (높을수록 우선):
- 커맨드라인 인자 (
--key=value) - 환경변수 /
SPRING_APPLICATION_JSON - 프로파일별
application-{profile}.yml application.yml- 기본값
외부에서 덮어쓸 수 있으므로, 비밀값(DB 패스워드·API 키)은 코드에 두지 말고
환경변수/시크릿 매니저에서 공급하세요 (.env 나 가시 데스크톱 시크릿 참고).
데이터스케쳐스 실무 관점¶
- 환경별 DB/외부 연동: D-SKET 서비스가 로컬(위키 DB 5433)과 프로덕션을 오갈 때 프로파일로 DSN·외부 URL을 분리해 실수로 운영 DB를 건드리지 않게 합니다.
- 시크릿 분리: 키·패스워드는
application-{profile}.yml에도 남기지 말고 환경변수/시크릿 매니저로 — 커밋에 들어가지 않게. spring.config.import로 외부 설정 파일을 합칠 수도 있습니다.
확인 필요¶
- 설정 우선순위·특정 속성 세부는 Spring Boot 버전(현재 4.x)마다 다르므로, 사용 버전 공식 문서를 재확인하세요. (확인 필요)
더 알아보기¶
- 1차(공식): Spring Boot — Profiles
- 1차(공식): Spring Boot — Externalized Configuration