728x90
Service Discovery는 분산 시스템에서 서비스 간의 통신을 가능하게 하기 위해 서비스의 위치를 동적으로 찾는 메커니즘을 말한다. 이는 마이크로서비스 아키텍처에서 특히 중요한 개념으로 서비스가 동적으로 생성되고 종료되는 환경에서 안정적이고 효율적인 통신을 가능하게 한다.
주요 개념
- 서비스 등록 (Service Registration)
- 서비스가 시작되면 자신의 정보를 서비스 디스커버리 시스템에 등록한다.
- 정보에는 서비스의 이름, IP 주소, 포트 등이 포함된다.
- 서비스 조회 (Service Lookup)
- 클라이언트가 다른 서비스를 호출하기 전에 디스커버리 시스템에서 대상 서비스의 위치를 조회한다.
동작 방식
- 중앙 집중형 서비스 디스커버리
- 별도의 디스커버리 서버(레지스트리)가 서비스를 등록하고 조회하는 역할을 수행한다.
- 예: Consul, Eureka, Zookeeper
- 분산형 서비스 디스커버리
- 각 서비스가 스스로 정보를 공유하거나 P2P 방식으로 디스커버리 기능을 제공한다.
- 예: Kubernetes DNS-based Service Discovery
Service Discovery의 구성 요소
- 서비스 레지스트리 (Service Registry)
- 모든 서비스의 정보를 저장하는 데이터베이스 역할을 한다.
- Consul, Eureka, Zookeeper 등이 자주 사용된다.
- 서비스 제공자 (Service Provider)
- 서비스 레지스트리에 자신을 등록하는 서비스이다.
- 서비스 소비자 (Service Consumer)
- 서비스 레지스트리에서 정보를 조회하여 필요한 서비스를 호출하는 클라이언트이다.
Service Discovery의 구현 방식
- 클라이언트 사이드 디스커버리 (Client-Side Discovery)
- 클라이언트가 서비스 레지스트리에서 직접 조회하고 적절한 인스턴스를 선택하여 요청을 보낸다.
- 장점 : 유연성, 단순한 구조.
- 단점 : 클라이언트에 로드 밸런싱 로직이 필요함.
- 예 : Netflix Eureka + Ribbon
- 서버 사이드 디스커버리 (Server-Side Discovery)
- 클라이언트는 단순히 요청을 서버(로드 밸런서)로 보내고 서버가 서비스 레지스트리를 조회하여 적절한 인스턴스로 요청을 전달한다.
- 장점 : 클라이언트는 단순해짐.
- 단점 : 추가적인 로드 밸런서가 필요.
- 예 : AWS Elastic Load Balancer, Kubernetes Services
Service Discovery의 장점
- 동적 확장 : 서비스의 동적 생성 및 제거를 처리.
- 중앙 집중 관리 : 네트워크 주소를 중앙에서 관리 가능.
- 장애 복구 : 실패한 인스턴스를 제외하고 정상 인스턴스로 트래픽을 전달.
주요 도구 및 기술
- Netflix Eureka : Spring Cloud와 잘 통합됨.
- Consul : 서비스 디스커버리와 함께 키-값 저장소 제공.
- Apache Zookeeper : 분산 시스템의 코디네이터로 많이 사용됨.
- Kubernetes Service : 클러스터 내에서 DNS 기반 서비스 디스커버리 제공.
이 개념은 특히 마이크로서비스 아키텍처에서 서비스 간의 안정적인 통신과 확장성을 보장하는 데 매우 중요하다.
반응형
'Architecture' 카테고리의 다른 글
BFF 패턴의 개념 (1) | 2024.12.20 |
---|---|
API 게이트웨이 패턴이란? (2) | 2024.12.20 |
캐시 스탬피드(Cache Stampede) 개념과 해결 방법 (1) | 2024.11.28 |
트랜잭셔널 메시징 (0) | 2024.11.26 |
Layered Architecture (계층형 아키텍처) (0) | 2024.06.20 |