서비스 디스커버리(Service Discovery)란?
서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스의 물리적 위치(IP 주소 및 포트)를 동적으로 조회할 수 있게 해주는 중요한 패턴입니다. 이를 통해 서비스 간 통신이 가능해지며, 서비스가 새롭게 배포되거나 확장될 때 클라이언트가 자동으로 이를 인식할 수 있게 됩니다.
서비스 디스커버리(Service Discovery)의 이점
- 동적 확장성: 서비스 인스턴스가 추가되거나 제거될 때 자동으로 레지스트리가 업데이트됩니다.
- 로드 밸런싱: 클라이언트 측 로드 밸런싱을 통해 서비스 인스턴스 간에 트래픽을 분산할 수 있습니다.
- 장애 복원력: 특정 서비스 인스턴스에 장애가 발생해도 다른 인스턴스로 자동 전환됩니다.
- 서비스 위치 추상화: 클라이언트는 서비스의 물리적 위치를 알 필요 없이 서비스 이름만으로 통신할 수 있습니다.
넷플릭스 유레카(Netflix Eureka)를 사용한 서비스 디스커버리
Netflix Eureka는 Spring Cloud 프로젝트의 일부로, 서비스 디스커버리를 구현하기 위한 도구입니다. Eureka는 크게 두 가지 컴포넌트로 구성됩니다.
- Eureka Server: 모든 마이크로서비스가 자신의 정보를 등록하는 레지스트리 역할을 합니다.
- Eureka Client: 각 마이크로서비스에 적용되어 Eureka Server에 자신의 정보를 등록하고, 다른 서비스의 정보를 조회할 수 있게 합니다.
주요 특징
- 자동 서비스 등록 및 발견: 서비스가 시작되면 자동으로 Eureka 서버에 등록되고, 다른 서비스들은 이를 발견할 수 있습니다.
- 고가용성: Eureka는 여러 존(zone)에 걸쳐 서비스 디스커버리를 제공할 수 있어 가용성과 내구성이 향상됩니다.
- 상태 모니터링: 각 서비스의 상태를 주기적으로 확인하여 비정상적인 서비스를 탐지합니다.