스프링부트에서 Profiles를 통한 환경별 설정 관리

날아올라돼지야·2024년 8월 27일
0
post-thumbnail

이번엔 Spring Boot에서 Profiles 개념을 활용하여 환경별로 다른 설정을 관리하는 방법을 다뤄보겠습니다.
이 접근법을 통해, 동일한 코드베이스로 다양한 환경에서 애플리케이션을 실행할 수 있으며, 각 환경에 맞는 설정을 적용할 수 있습니다.

Profiles 소개

Spring Boot에서 Profiles는 설정과 속성을 그룹화하여 각기 다른 환경에서 애플리케이션을 실행할 수 있도록 하는 도구입니다.
기본적으로 Spring Boot는 모든 설정을 application.properties 또는 application.yml 파일에 저장하며, 이는 기본 프로파일로 간주됩니다.

환경별 설정 파일 생성

다른 환경(예: 개발, 테스트, 운영)에 맞는 별도의 설정 파일을 생성할 수 있습니다.

예를 들어, application_dev.yml, application_qa.yml, application_prod.yml 파일을 생성하여 각 환경에 맞는 설정을 정의합니다.

Profile 활성화

특정 환경에서 실행될 때 활성화할 프로파일을 지정할 수 있습니다.
이를 위해 spring.profiles.active 속성을 사용하며, 예를 들어 prod 프로파일을 활성화하려면 spring.profiles.active=prod를 설정합니다.
여러 프로파일을 동시에 활성화할 수도 있으며, 이때는 쉼표로 구분하여 프로파일을 지정합니다.

코드 재빌드 없이 환경 전환

프로파일을 사용하면 코드베이스를 재빌드하지 않고도 다양한 환경에서 애플리케이션을 실행할 수 있습니다.
이렇게 하면 코드베이스를 여러 번 빌드하고 이미지를 생성하는 번거로움을 피할 수 있습니다.

실습

(1) 환경별로 변경되는 속성 식별

서버 포트(server.port)와 H2 데이터베이스 관련 설정은 모든 환경에서 동일하게 유지되므로 기본 프로파일에 남겨두고, 환경에 따라 변경될 속성만 별도로 관리합니다.
build version과 accounts 관련 속성만 환경별로 변경됩니다.

(2) 환경별 프로파일 파일 생성

application_qa.yml과 application_prod.yml 파일을 생성하여 각 환경에 맞는 속성을 정의합니다.
각 파일에는 동일한 속성 이름을 사용하지만, 값은 환경에 따라 다르게 설정합니다.
예를 들어, QA 환경에서는 build.version을 2.0으로, 운영 환경에서는 1.0으로 설정합니다.

(3) 프로파일 활성화 설정

각 프로파일 파일(application_qa.yml, application_prod.yml)에 spring.config.activate.on-profile 속성을 추가하여 해당 프로파일이 활성화될 때 해당 설정 파일이 로드되도록 합니다.
예를 들어, application_qa.yml에는 on-profile: qa를, application_prod.yml에는 on-profile: prod를 설정합니다.

(4) 기본 설정 파일에서 프로파일 지정

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"

(5) 프로파일 활성화 테스트

프로파일을 설정한 후 애플리케이션을 빌드하고 실행하여, 각 프로파일이 활성화될 때 올바른 설정 값이 적용되는지 확인합니다.
Postman을 사용해 API 요청을 보내고, 응답에서 각 프로파일에 맞는 설정 값이 적용되었는지 확인합니다.

profile
무슨 생각하며 사니

0개의 댓글