July 15, 2021 By Bogeun Kim ([email protected])

웹 프로젝트 개발을 하다보면, 소스는 stateless 이되 환경별로 다르게 적용되어야 하는 자원들이 발생한다. (Database, Redis, Domain, ...)

개발 환경에서는 개발 DB 로 접근해야하고, 프로덕션 환경에서는 프로덕션 DB 로 접근해야 하듯이.

Spring Boot 에서는 이를 위해 Profiles 설정을 제공하고 있으며 프로퍼티 (application.properties, application.yml) 로 관리할 수 있다.

YAML 포맷을 활용하여 가독성이 좋으면서도 환경별로 구분되어야 할 것을 지정할 수 있다.

application.yml (Spring Boot 2.5.2)

# Common
management:
  endpoints:
    web:
      exposure:
        include: health

---
spring:
  config:
    activate:
      on-profile: local

---
spring:
  config:
    activate:
      on-profile: kr-development

---
spring:
  config:
    activate:
      on-profile: kr-staging

---
spring:
  config:
    activate:
      on-profile: kr-production

실제 프로젝트를 구성하고 프로덕션 수준에서 운영하다보니 로컬 > 개발 > 스테이징 > 프로덕션 수준의 단계가 필요하였다. 각 환경별로 필요한 자원을 지정하여 활용할 수 있다.

공통 자원은 상단에 공통으로 설정하면 된다.

실제로 잘 적용되었는지 출력하여 확인해보자.

프로젝트를 Run 하고 수행 시점에 따라 해당 프로퍼티를 읽어드리는 구간과 아닌 구간이 있으니 주의하자.