![Spring Cloud Config 을 이용한 빠른 YAML 리펙터링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxVaTB%2Fbtshz1iiFJh%2F31gD2H4R3NwzBPb8Et5MVk%2Fimg.png)
보통 yaml 파일을 리펙터링하면 서버를 재기동하면서 제대로 설정됐는지를 확인한다
내 노트북 같은 경우 보통 재기동하면 40초 ~ 2분 정도의 시간이 걸린다... 참으로 답답하지 않을 수 없다
Spring Cloud Config 을 이용하면 변경한 yaml 파일을 동적으로 반영해서, 빠르게 리펙터링을 해나갈 수 있다
우선 아래 정보를 참고해서 Spring Cloud Config을 설정한다 (설명이 친절하지 않아서 미안...)
- Section 7: Cloud Configuration (tistory.com)
- Section 8, 9: Cloud Bus, 암호화 (tistory.com)
아래와 같은 상황이 있다고 가정해보자 (내 상황이었음)
정~말 긴 yml 파일이 있는데... route 설정 정보로 인해 다른 정보를 확인하기가 어렵다 (108 line)
그래서 파일 2개로 분리하면서 리펙터링을 했다
결과적으로 잘됐으나, 문제는 제대로 됐는지를 확인하기 위해 대여섯번을 재기동을 했어야 한다는 것
시간으로는 10여분의 손실이지만... 중간중간의 오버헤드가 집중력을 잃기에 좋은 시간이다 (다른걸 하기엔 애매함)
저걸 Config Server에게 위임하면 실시간으로 작업내용을 bus-refresh를 통해서 확인하면서 할 수 있다 ... ^^
내가 한 방식을 간단히 설명하자면... (생략한 내용은 위 포스팅에 있다)
기존의 yaml을 config 이 바라보는 디렉터리에 넣고 원 서비스의 yaml을 제거한다
그리고 bootstrap은 위에 처럼 작성한다
그럼 아래와 같이 이동한것이다
- (API Gateway) application.yml -> (Config Server's Directory) api-gateway.yml
이제, [config server] -> [대상 서비스] 순서로 기동해서 아래 알고리즘으로 리펙터링하면 된다
알고리즘
1. Config Server가 참조하는 서비스의 yaml 파일 변경
2. 재기동X, Bus-Refresh 호출
3. 변경 올바르게 되었는지 확인
위 1~3을 반복하면 된다... 정말 편하다... 진작할껄
Config Server Yaml, 포함관계로 리펙터링
api-gateway가 api-gateway-route-and-filters를 포함하게 하려면 아래와 같이 하면 된다
spring:
profiles.include: api-gateway-route-and-filters
만일 프로필 이름이 'api-gateway-'를 생략한 'route-and-filter'로 하면 아래와 같은 오류가 발생한다 (한참 헤맴 ㅠ)
혹은 아래 설정도 가능하다 (.yml 생략가능)
spring:
config.import: classpath:api-gateway-route-and-filtersconfig.yml
그리고 재귀적으로 포함을 할 수 있어서 grand-parent.yml -> parent.yml -> child.yml 등의 관계가 가능하다
최종적으로 나는 아래처럼 설정했다
api-gateway.yml
spring:
profiles.include: api-gateway-route-and-filters
api-gateway-route-and-filters.yml
spring:
profiles.include:
- route-user-service
- route-etc
cloud.gateway.default-filters:
...
(여기서 중요한건 이곳에선 'api-gateway-' 접두사를 안붙여도 동작한다)
api-gateway-route-user-service.yml
spring.cloud.gateway.routes:
## 회원 가입
- id: user-service
uri: lb://USER-SERVICE
predicates:
- Path=/user-service/users
...
'Back-end > Spring Cloud, MSA' 카테고리의 다른 글
Spring Cloud Gateway 테스트 코드와 리펙터링 (Kotlin-DSL) (0) | 2024.01.14 |
---|---|
Eureka 시나리오별 등록 과정 + 빠른 배포하기 (0) | 2023.12.18 |
실전에서 마주한 MSA에 대한 생각 - 희망편 (0) | 2023.11.26 |
실전에서 마주한 MSA에 대한 생각 - 절망편 (2) | 2023.11.23 |
hi hello... World >< 가장 아름다운 하나의 해답이 존재한다
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!