콘텐츠로 이동

프로파일·환경설정 (Profiles & Configuration)

환경(로컬/개발/프로덕션)마다 달라지는 설정을 코드에 하드코딩하지 않고 관리하는 것이 중요합니다. Spring Boot 의 application.yml/properties@Profile 기능으로 환경별 설정을 나누는 방법을 데이터스케쳐스 실무 관점에서 정리합니다.

application.yml 과 프로파일

  • src/main/resources/application.yml 기본 설정.
  • application-{profile}.yml 로 프로파일별 설정 분리 (예: application-dev.yml, application-prod.yml).
  • 실행 시 활성 프로파일 지정:
    java -jar app.jar --spring.profiles.active=prod
    SPRING_PROFILES_ACTIVE=prod ./gradlew bootRun
    
  • @Profile("prod") 애너테이션으로 특정 프로파일에서만 빈 등록/활성화할 수 있습니다.

외부 설정 우선순위

Spring Boot 는 여러 설정 소스를 우선순위로 합칩니다 (높을수록 우선):

  1. 커맨드라인 인자 (--key=value)
  2. 환경변수 / SPRING_APPLICATION_JSON
  3. 프로파일별 application-{profile}.yml
  4. application.yml
  5. 기본값

외부에서 덮어쓸 수 있으므로, 비밀값(DB 패스워드·API 키)은 코드에 두지 말고 환경변수/시크릿 매니저에서 공급하세요 (.env 나 가시 데스크톱 시크릿 참고).

데이터스케쳐스 실무 관점

  • 환경별 DB/외부 연동: D-SKET 서비스가 로컬(위키 DB 5433)과 프로덕션을 오갈 때 프로파일로 DSN·외부 URL을 분리해 실수로 운영 DB를 건드리지 않게 합니다.
  • 시크릿 분리: 키·패스워드는 application-{profile}.yml 에도 남기지 말고 환경변수/시크릿 매니저로 — 커밋에 들어가지 않게.
  • spring.config.import 로 외부 설정 파일을 합칠 수도 있습니다.

확인 필요

  • 설정 우선순위·특정 속성 세부는 Spring Boot 버전(현재 4.x)마다 다르므로, 사용 버전 공식 문서를 재확인하세요. (확인 필요)

더 알아보기