요즈음 사내, 사이드 프로젝트에서 환경 분리를 위해 profiles 를 많이 사용하고 있습니다.
겉핥기 정도로 알고있었던 profiles 에 대해 정리하고 넘어가려합니다.
Spring Profiles 은 애플리케이션 구성의 일부를 분리하여 특정 환경에서만 사용할 수 있도록 하는 방법을 제공합니다. - 스프링 공식 문서
아래의 환경 속성을 사용해 활성화된 프로파일을 지정할 수 있습니다.
spring:
profiles:
active: "dev,hsqldb"
활성화된 프로파일이 없는 경우 기본 프로파일이 활성화 됩니다.
기본 프로파일의 이름은 default 이며, 아래와 같은 환경 속성을 통해 설정할 수 있습니다.
spring:
profiles:
default: "none"
# 유효한 설정
spring:
profiles:
active: "prod"
---
# 잘못된 설정
spring:
config:
activate:
on-profile: "prod"
profiles:
active: "metrics"
위에 active 속성을 사용해 활성화 된 프로파일을 설정한다고 했습니다.
active 속성은 다른 속성과 동일한 정렬 규칙을 따릅니다.
즉, .yaml 파일에 active 속성을 dev 라고 설정하고 애플리케이션 실행 시 명령줄 인자로 active 속성을 prod 로 설정한다면,
명령줄 인자가 더 높은 우선순위를 가지므로 prod 프로파일이 활성화 됩니다.
이번에는 활성화 된 프로파일을 대체하는 방법이아닌 추가하는 방법을 알아보겠습니다.
spring:
profiles:
include:
- commin
- local
위 속성들을 설정 후 애플리케이션이 실행되면 명령줄 인자를 사용해 실행되는 경우에도 common 와 local 프로파일이 활성화 됩니다.
# 유효한 설정
spring:
profiles:
include:
- common
- local
---
# 잘못된 설정
spring:
config:
activate:
on-profile: "prod"
profiles:
include:
- common
- local
애플리케이션에서 정의하고 사용하는 프로파일이 너무 세분화되어 사용하기 번거로운 경우가 있습니다.
이를 돕기위해 프로파일 그룹을 정의할 수 있습니다.
spring:
profiles:
group:
production:
- prod-db
- prod
명령줄 인자, 또는 속성에 production 을 사용해 애플리케이션을 시작하면 prod, prod-db 환경을 한 번에 활성화 할 수 있습니다.