Page 17 -
P. 17
서 수정 사항에 대한 버전 정보는 태그를 달아 여러 환경(개발, 스테이징, 운영 환경 등)에 배
포할 수 있다.
4. 관리하는 구성 정보가 변경되면 애플리케이션 구성 데이터를 사용하는 서비스는 변경 사항을
통지받고 애플리케이션 데이터 복제본을 갱신해야 한다.
지금까지 우리는 구성 관리 패턴의 여러 부분과 이들이 어떻게 통합되는지 보여 주는 개념적 아키
텍처를 살펴보았다. 이제 구성 관리를 위한 다양한 솔루션을 살펴본 후 구체적인 구현 방법을 알
아보자.
5.1.2 구현 솔루션 선택
다행히 시장에서 검증된 많은 오픈 소스 프로젝트를 선택해서 구성 관리 솔루션을 구현할 수 있
다. 표 5-1에서 선택 가능한 후보군을 살펴보고 비교해 보자.
표 5-1 구성 관리 시스템 구현을 위한 오픈 소스 프로젝트
프로젝트 이름 설명 특징
etcd Go 언어로 작성된 오픈 소스 프로젝트로 •매우 빠르며 확장 가능
서비스 디스커버리와 키-값 관리에 사용 •분산 가능
된다. 분산 컴퓨팅 모델을 위해 raft 프로토 •명령줄 기반
콜(https://raft.github.io)을 사용한다. •사용 및 설치 용이
유레카(Eureka) 넷플릭스가 만들었으며 엄격한 실전 테스 •분산형 키-값 저장소
트를 거쳤다. 서비스 디스커버리와 키-값 • 유연하지만 구축하는 데 공수 소요
관리에 사용된다. • 기본적으로 클라이언트의 동적 갱신 기능 제공
콘술(Consul) 하시코프(HashiCorp)가 만들었다. etcd •빠르다.
나 유레카와 유사하지만 분산 컴퓨팅 모델 • 직접 DNS와 통합해서 네이티브 서비스 디스커
에 다른 알고리즘을 사용한다. 버리 기능을 제공한다.
• 클라이언트 동적 갱신은 기본 기능에 포함하지
않는다.
주키퍼(Zookeeper) 아파치 프로젝트로 분산 잠금(distributed • 가장 오래되어 실전에서 검증된 솔루션이다.
locking) 기능을 제공한다. 주로 키-값 데 •사용하기 가장 복잡하다.
이터를 액세스하는 구성 관리 솔루션으로 • 구성 관리에 사용 가능하지만 이미 아키텍처에
사용된다. 서 사용 중일 때만 고려해야 한다.
스프링 클라우드 구성 오픈 소스 프로젝트로 다양한 백엔드와 함 •비분산형 키-값 저장소
서버(Spring Cloud 께 전반적인 구성 관리 솔루션을 제공한다. • 스프링 및 스프링이 아닌 서비스와 긴밀한 통합
Configuration • 구성 데이터 저장을 위해 공유 파일 시스템, 유
Server) 레카, 콘술, 깃 등 다양한 백엔드 사용 가능
168
macrospring_06.indd 168 2022-06-20 오후 1:09:03