대부분은 아래의 그림처럼 설정 정보는 자신의 서버에서 관리한다.
서비스의 개수가 적다면 설정 정보 변경에 큰 힘이 들지 않는다.
하지만 서비스가 많아진다면
? 굉장히 번거로워질 것이고 이는 유지보수를 어렵게
만든다.
그렇다면 모든 서비스의 설정 정보를 한 데 모아 중앙 집중식으로 관리
한다면 어떻게 될까?
이것이 Config. Store의 시작
이다.
위 그림은 Gartner 그룹에서 정의한 MSA 인프라 필수 구성 요소이다. 그리고 Config. Store
는 MSA의 필수 요소이다.
Spring Cloud Config는 이를 가능하게 해주는 시스템이다. MSA 환경에서 설정 정보를 위한 서버와 클라이언트를 제공한다.
Spring Cloud Config Server는 설정 정보를 모아서 저장해놓은 것을 제공하는 주체이다.
Spring Cloud Config Client는 서버에서 제공하는 설정 정보를 사용할 수 있도록 지원한다.
Config Server의 장점은 뭘까?
- 설정 파일 수정사항을 서버 재배포 없이 반영 가능하다.
서버 재배포가 필요없다는 건 강력한 장점이다. 서비스 중단을 최소화할 수 있기 때문에 부정적인 사용자 경험을 최소화할 수 있다.
단점도 존재한다.
- 중앙 집중식이기 때문에 장애가 전파될 수 있다.
- 설정 파일 우선 순위로 인해 설정 정보가 덮어쓰여질 수 있다.
하지만 단점은 서로를 상쇄할 수 있다. 장애가 발생하면 우선 순위를 활용해 예비 설정 파일을 사용할 수 있도록 설계함으로써 보완이 가능하다.
이제 Config Server가 무엇인지 알아보았으니, 어떻게 구축하는지 알아보자.