Spring Cloud Config
Spring Cloud Config 는
분산 시스템에서 설정 정보(application.yml) 를 외부에 보관할 수 있도록 지원해주는 서비스이다.
이러한 Spring Cloud Config 를 이용했을 때 얻을 수 있는 장점은 다음과 같다.
- 여러 서버의 설정 파일을 중앙 서버에서 관리할 수 있다.
- 각 서비스(서버)를 재배포 하지 않고 설정 파일의 변경사항을 반영할 수 있다.
- 애플리케이션 배포 파이프라인을 통해 DEB-UAT-PROD 환경에 맞는 구성 정보 사용가능
실제로 설정파일이 저장되는 Config 저장소(Git Repository, File System 등)가 있고,
이러한 저장소와 연결되어 설정파일을 관리해주는 Spring Cloud Config Server 가 있다.
마지막으로 Spring Cloud Config 를 이용하고 싶은 다양한 Client 들이 존재한다.
Client 가 Spring Cloud Config Server 에게 설정값을 요청하면 Server 는 설정파일이 저장된 Config 저장소에 접근해 조건에 맞는 영역을 탐색한다. 탐색한 결과로 가져온 최신 설정값을 가지고 Client 에게 전달하게 된다.
위 과정은 최초 Client 구동시이고 운영중인 상태에 바뀐 설정 값을 갱신하고 싶다면 /actuator/refresh API 를 호출함으로써 가능하다. Client 가 Server 에게 설정값을 요청하고 이렇게 가져온 최신의 설정 값을 Client 에게 전달하고 이를 통해 변경된 설정정보를 갱신하게 된다.
즉, /actuator/refresh API 를 사용해 서버를 재배포하지 않고도 설정정보를 갱신하는 것이다.
하지만 Spring Cloud Config 를 이용하는 Client 수가 엄청나게 많다고 했을 때 /actuator/refresh API 를 일일히 호출하는 것은 매 어플리케이션 서비스마다 각각 실행 시켜줘야해서 불편하다.
이는 Spring Cloud Bus 를 사용해 이러한 문제를 개선할 수 있다.