티스토리 뷰

아래는 한 서비스에서 쓰고 있는 application.yaml 파일이다.

 

30% 정도만 가져옴

위와 같이 길어진 이유는 서버의 종류가 엄청 많기 때문이다.

 

서버가 local/dev/stag/qa/prod 외에도 스케줄러가 붙어있어서 7~8개의 profile이 한 yml파일에 존재하게 됐다.

 

각각 서버의 profile은 아래와 같이 분리해서 application.yml 파일에 설정한다.

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

나눠 놓을 수는 것 까지는 좋다. 그런데 관리를 제대로 하지 않았다.

 

그래서 모든 서버에서 공통적으로 사용하는 부분을 분리하지 않아서 yaml 파일이 엄청나게 길어지게 된 것이다.

 

이런 식으로 보관하면, 모든 서버에서 사용할 공통요소를 추가할 때마다 모든 profile에 추가해야 하는 번거로움이 생긴다.

(매번 같은 설정을 같은 위치에 7~8번 붙여넣어야되서 실수도 많이 발생한다.)

 

이 문제를 해결하기 위해 spring에서는 profiles.group 기능을 제공한다.

 

사용방법은 간단하다.

spring:
  profiles:
    group:
      "local": "common, local"
      "dev":  "common, dev"
      "stag": "common, stag"
      "prod": "common, prod"

프로필 설정은 기존에 정의하던대로 사용하고, 각 서버 환경에서 사용할 profile을 그룹화해서 작성하면 된다.

 

위 예시에서는 공통적으로 처리할 내용은 common에서 관리하도록 했다.

 

profile의 이름은 알아서 지정하면 된다.

spring:
  profiles:
    group:
      "local": "common, local"
      "dev":  "common, dev"
      "stag": "common, stag"
      "prod": "common, prod"

---
spring:
  config:
    activate:
      on-profile: "common"

...
---
spring:
  config:
    activate:
      on-profile: "local"
...
---
spring:
  config:
    activate:
      on-profile: "dev"
...

아직 작은 시스템을 운영 중이라면 빨리 붙이자.

 

덩치가 커지면 수십번 copy & paste를 해야할 수도 있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함