-
Service DiscoveryCloud 2025. 3. 13. 17:08728x90
MSA로 구성되어 있는 서비스들은 각자 다른 IP와 Port를 가지고 있다.
이러한 서로 다른 서비스들의 IP와 Port 정보에 대해서 저장하고 관리하는 것을 Service Discovery라고 한다.
Service Discovery
서비스 이름으로 서비스의 위치(IP 주소와 포트)를 동적으로 찾는 기능
뛰어난 확장성을 가진 환경에서는 단기간에 서비스가 추가되고 삭제되므로, 서비스 디스커버리의 역할은 사실상 필수적이다. 특히 Scale in/out이 자유로운 MSA 환경에서는 서비스 주소가 동적으로 변경될 수 있으므로 항상 언급되는 것이 일반적이다.
흐름
각 서비스는 서비스 레지스트리에 자신의 주소를 등록
필요한 서비스의 주소를 서비스 레지스트리에서 조회하여 호출
Client-Side Discovery
개별 서비스에서 디스커버리 및 호출 책임을 가진다.
해당 패턴은 클라이언트 코드 상에 디스커버리 기능을 구현하거나, 클라이언트와 함께 실행되는 프록시를 통해 구성된다.
중앙 컴포넌트를 사용하지 않기 때문에 부하 집중으로 인한 장애 발생 가능성이 적다는 장점이 있다.
Server-Side Discovery
게이트웨이 같은 중앙 컴포넌트에서 디스커버리 및 호출 책임을 가진다.
이 패턴은 서비스에 공통적인 제어를 적용하는 작업이 쉽고, 개별 서비스에서 직접 디스커버리 로직을 구현하지 않아도 된다는 장점이 있다.
Solutions
- Netflix Eureka
진입장벽이 낮아 Spring Cloud Application에 연동하기 쉬움
Peering을 통해 HA 구성을 제공하지만, 네트워크 단절 시 Split-brain 문제와 Anti-Entropy 메커니즘에 대한 고려가 필요하다
대규모 시스템 운영에 필요한 부가 기능이 부족하다.
- Apache Zookeeper
HA 구성을 제공하며, Leader-Follower 아키텍처와 Broadcast 방식의 동기화 메커니즘을 사용해 Split-brain 문제를 완화하고 일관성을 개선한다.
Spring Cloud Zookeeper로 애플리케이션을 연동할 수 있으나, 단일 노드에 Blue/Green 인스턴스를 배포하는 사내 환경에서는 사용이 어렵다.
- Hashicorp Consul
HA 구성을 제공하며, Leader-Follower 아키텍처와 Gossip Protocol을 사용해 높은 수준의 일관성을 보장한다.
Raft 알고리즘을 통해 새로운 Leader를 선출한다.
멀티 D/C 등 대규모 클러스터 운영 환경에서 유용한 기능들을 다수 보유하고 있다. Spring Cloud Consul로 애플리케이션 연동이 가능하며, 사내 Blue/Green 서비스 구성 방식에 적합하다.
728x90'Cloud' 카테고리의 다른 글
CGNAT (0) 2025.04.02 Session Clustering 방식 (0) 2025.02.26 [tomcat] Database 연동 (0) 2025.02.25 세션 (0) 2025.02.24 [Server] Mount (0) 2025.02.11