이번엔 Spring Boot에서 Profiles 개념을 활용하여 환경별로 다른 설정을 관리하는 방법을 다뤄보겠습니다.
이 접근법을 통해, 동일한 코드베이스로 다양한 환경에서 애플리케이션을 실행할 수 있으며, 각 환경에 맞는 설정을 적용할 수 있습니다.
Spring Boot에서 Profiles는 설정과 속성을 그룹화하여 각기 다른 환경에서 애플리케이션을 실행할 수 있도록 하는 도구입니다.
기본적으로 Spring Boot는 모든 설정을 application.properties 또는 application.yml 파일에 저장하며, 이는 기본 프로파일로 간주됩니다.
다른 환경(예: 개발, 테스트, 운영)에 맞는 별도의 설정 파일을 생성할 수 있습니다.
예를 들어, application_dev.yml, application_qa.yml, application_prod.yml 파일을 생성하여 각 환경에 맞는 설정을 정의합니다.
특정 환경에서 실행될 때 활성화할 프로파일을 지정할 수 있습니다.
이를 위해 spring.profiles.active 속성을 사용하며, 예를 들어 prod 프로파일을 활성화하려면 spring.profiles.active=prod를 설정합니다.
여러 프로파일을 동시에 활성화할 수도 있으며, 이때는 쉼표로 구분하여 프로파일을 지정합니다.
프로파일을 사용하면 코드베이스를 재빌드하지 않고도 다양한 환경에서 애플리케이션을 실행할 수 있습니다.
이렇게 하면 코드베이스를 여러 번 빌드하고 이미지를 생성하는 번거로움을 피할 수 있습니다.
서버 포트(server.port)와 H2 데이터베이스 관련 설정은 모든 환경에서 동일하게 유지되므로 기본 프로파일에 남겨두고, 환경에 따라 변경될 속성만 별도로 관리합니다.
build version과 accounts 관련 속성만 환경별로 변경됩니다.
application_qa.yml과 application_prod.yml 파일을 생성하여 각 환경에 맞는 속성을 정의합니다.
각 파일에는 동일한 속성 이름을 사용하지만, 값은 환경에 따라 다르게 설정합니다.
예를 들어, QA 환경에서는 build.version을 2.0으로, 운영 환경에서는 1.0으로 설정합니다.
각 프로파일 파일(application_qa.yml, application_prod.yml)에 spring.config.activate.on-profile 속성을 추가하여 해당 프로파일이 활성화될 때 해당 설정 파일이 로드되도록 합니다.
예를 들어, application_qa.yml에는 on-profile: qa를, application_prod.yml에는 on-profile: prod를 설정합니다.
application.yml 파일에서 spring.config.import 속성을 사용하여 다른 프로파일 파일(application_qa.yml, application_prod.yml)을 포함시킵니다.
spring:
config:
import:
- "application_qa.yml"
- "application_prod.yml"
기본적으로 활성화할 프로파일을 spring.profiles.active 속성에 설정할 수 있습니다.
예를 들어, spring.profiles.active=qa로 설정하면 QA 환경의 설정이 활성화됩니다.
spring:
profiles:
active:
- "qa"
프로파일을 설정한 후 애플리케이션을 빌드하고 실행하여, 각 프로파일이 활성화될 때 올바른 설정 값이 적용되는지 확인합니다.
Postman을 사용해 API 요청을 보내고, 응답에서 각 프로파일에 맞는 설정 값이 적용되었는지 확인합니다.