Search
Duplicate

Service Discovery

Created
2024/01/21 07:03
tags
📟Backend
🛠️Infrastructure
Service Discovery(서비스 디스커버리)는
Micro Service Architecture(MSA)와 같이 여러 서버가 있는 환경에서는 서버(서비스)가 새로 생기거나 사리지는 일이 많다. 이 때 서로 서버(서비스)간의 연결 정보(Host, Port 등)를 알 수 있는 방법이 없는데 이를 해결하기 위해 연결 정보를 관리하는 역할을 한다.
연결 정보와 관련 API(추가, 삭제, 조회 등)를 제공하는 주체를 Service Registry라고 한다.
기본적인 작동 개념은 Heatlh Check를 통해 서비스 상태를 확인하고 정상이면 Service Registry에 추가하고 비정상이면 삭제하는 방식이다.
서비스 정보를 어떻게 얻는지에 따라 두 가지 방법으로 나뉜다.
Client-side Discovery
서비스 연결 정보 조회와 로드밸런싱을 클라이언트에서 담당하는 방식이다.
클라이언트가 Service Registry에 요청을 하여 서비스 주소를 얻고
로드밸런싱을 통해 서비스를 호출하는 방식이다.
Server-side Discovery
반대로 로드밸런싱과 연결 정보 조회를 서버에서 담당하는 방식이다.
클라이언트가 로드밸런을 호출하면
로드밸런서가 Service Registry에서 가능한 서비스를 찾고 라우팅한다.
Netflix Eureka, 등의 프로젝트가 오픈소스로 Service Discovery 기능을 제공하고 etcd, Apache Zookeeper 프로젝트에서 Service Registry 기능을 제공한다.

Reference