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) |
오픈 소스 프로젝트로 다양한 백엔드와 함께 전반적인 구성 관리 솔루션을 제공한다. |
• 비분산형 키-값 저장소 • 스프링 및 스프링이 아닌 서비스와 긴밀한 통합 • 구성 데이터 저장을 위해 공유 파일 시스템, 유레카, 콘술, 깃 등 다양한 백엔드 사용 가능 |