목표
- Spring Cloud Config에 대해 이해한다.
- Spring Cloud Config를 이용하여 실습한다.
Spring Cloud Config
- 분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 Framework이다.
- 구성 설정 변경 시 변경 사항이 애플리케이션 실행 중에도 실시간으로 반영된다.
실습 (1)
- client 패키지 하위에 config 프로젝트를 생성하고 server 프로젝트의 Gradle에 해당 프로젝트를 추가한다.
- 강의 내용에 따라 설정을 작성한다.
- 필자가 별도로 찾아 보니, 아래의 application.yml의 설정은 '/actuator/refresh' end-point를 활성화한다고 한다.
- 강의 자료: application.yml (product-service)
management:
endpoints:
web:
exposure:
include: refresh
- server, config, product 순서대로 애플리케이션을 실행시킨 후 'http://localhost:19083/product'에 GET 요청을 보낸다.
- product-service에서 설정한 port 값 0과 default message 대신 config-service의 config-repo/product-service-local.yml 파일에 설정한 server.port와 message 값이 반환되었음을 확인할 수 있다.
[그림 1] - GET 'http://localhost:19083/product'

- 아래의 [그림 2]처럼 message 내용에 " update"를 추가하였다.
[그림 2]

- config 애플리케이션을 재실행시킨 후 'http://localhost:19083/actuator/refresh'에 POST 요청을 보낸다.
[그림 3]

- 현재 왜 작동하지 않는지 원인을 파악하는 중이다.
실습 2
Trouble Shooting
- 구글링해본 결과, Spring Cloud Config에서 /actuator/refresh end-point를 노출하는 방식에 변화가 있었다.
- management.endpoint.refresh.enabled = true 설정을 추가해줘야 한다.
[강의 자료] application.yml (product-service)
management:
endpoints:
web:
exposure:
include: refresh
[실습 코드] application.yml (product-service)
management:
endpoints:
web:
exposure:
include: refresh
endpoint:
refresh:
enabled: true
- Postman에서 API를 테스트했을 때 강의 내용에서처럼 정상정으로 반환된 것을 확인할 수 있다.
[그림 3]

[그림 4]
