본문 바로가기
스프링 부트3

스프링 부트 3의 애플리케이션 프로파일 관리

by 굿센스굿 2024. 12. 4.
반응형

 

스프링 부트 3에서는 애플리케이션 프로파일(Application Profile) 기능을 통해 개발, 테스트, 운영 등 환경별 설정을 효율적으로 관리할 수 있습니다. 프로파일은 애플리케이션이 실행되는 환경에 따라 다른 설정을 적용할 수 있도록 지원하며, 코드의 유연성과 재사용성을 높이는 데 핵심적인 역할을 합니다. 이번 글에서는 스프링 부트 3에서 애플리케이션 프로파일을 설정하고 활용하는 방법을 살펴보겠습니다.


1. 애플리케이션 프로파일이란?

애플리케이션 프로파일은 스프링 환경의 특정 실행 조건에 따라 별도의 설정을 적용할 수 있는 기능입니다. 프로파일을 통해 다음과 같은 상황에 맞는 설정을 분리 관리할 수 있습니다:

  • 개발 환경: 로컬 데이터베이스 및 디버깅 활성화.
  • 테스트 환경: 모의(Mock) 데이터베이스 및 테스트 전용 로깅.
  • 운영 환경: 실제 데이터베이스 및 최적화된 성능 설정.

스프링 부트 3에서는 기본적으로 application.properties 또는 application.yml 파일을 사용하며, 특정 프로파일에 따라 별도 파일(application-{profile}.properties)을 정의할 수 있습니다.


2. 프로파일 설정 방법

2.1 프로파일별 설정 파일 작성
스프링 부트는 src/main/resources 경로에 다음과 같은 방식으로 설정 파일을 관리합니다:

  • 기본 파일: application.properties 또는 application.yml
  • 개발용: application-dev.properties 또는 application-dev.yml
  • 운영용: application-prod.properties 또는 application-prod.yml

예시
application.yml (기본 설정):

server:
  port: 8080
logging:
  level:
    root: INFO

application-dev.yml (개발 설정):

server:
  port: 8081
logging:
  level:
    root: DEBUG

application-prod.yml (운영 설정):

server:
  port: 80
logging:
  level:
    root: WARN

2.2 프로파일 활성화
프로파일은 다음 세 가지 방법 중 하나로 활성화할 수 있습니다:

  1. 명령줄 인수 사용
    애플리케이션 실행 시 --spring.profiles.active 파라미터를 전달합니다.
  2. java -jar myapp.jar --spring.profiles.active=dev
  3. 환경 변수 설정
    시스템 환경 변수에서 SPRING_PROFILES_ACTIVE 값을 설정합니다.
  4. export SPRING_PROFILES_ACTIVE=prod
  5. application.properties에서 설정
    기본 설정 파일에 spring.profiles.active를 추가합니다.
    spring.profiles.active=dev
    
  6. application.properties:

3. 프로파일별 빈 구성

스프링에서는 @Profile 어노테이션을 사용하여 특정 프로파일에서만 활성화되는 빈을 설정할 수 있습니다.
예시:

@Configuration
public class DataSourceConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        return new HikariDataSource(); // 개발 환경용 데이터소스
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        return new DataSourceBuilder()
                .url("jdbc:mysql://prod-db:3306/myapp")
                .username("prod_user")
                .password("securepassword")
                .build(); // 운영 환경용 데이터소스
    }
}

이렇게 하면 프로파일이 dev로 활성화되었을 때는 개발 데이터소스를, prod일 때는 운영 데이터소스를 사용합니다.


4. 실제 활용 예제

4.1 개발 환경과 운영 환경 분리
1단계: application.yml 작성

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    username: sa
    password:
  profiles:
    active: dev

2단계: application-dev.yml 작성

spring:
  datasource:
    url: jdbc:h2:mem:devdb
    username: dev_user
    password: dev_password

3단계: application-prod.yml 작성

spring:
  datasource:
    url: jdbc:mysql://prod-db:3306/myapp
    username: prod_user
    password: securepassword

4단계: 실행 시 프로파일 지정

java -jar myapp.jar --spring.profiles.active=prod

운영 환경에서는 MySQL 데이터베이스, 개발 환경에서는 H2 메모리 데이터베이스를 활용하도록 설정이 분리됩니다.


5. 프로파일 관리 팁

  1. 기본값 설정
    프로파일이 명시되지 않은 경우 기본값으로 사용할 설정 파일을 지정하세요. 예를 들어, default 프로파일을 생성해 두면 좋습니다.
  2. 환경 변수 활용
    CI/CD 파이프라인에서 환경 변수로 프로파일을 설정하면 운영 환경의 보안성을 높일 수 있습니다.
  3. 설정 유효성 검증
    각 프로파일에서 사용하는 설정이 정확한지 검증 도구 또는 테스트를 통해 확인하세요.

결론

스프링 부트 3의 애플리케이션 프로파일 관리는 환경별 요구사항에 맞는 설정을 손쉽게 관리하고 애플리케이션의 유연성을 높이는 강력한 도구입니다. 이번 글에서 소개한 방법과 예제를 바탕으로 환경별 설정을 명확하게 분리하고 최적화된 애플리케이션을 개발해 보세요. 🚀

반응형