1) Service Discovery 개념
클라우드 환경에서는 AutoScaling 이나 컨테이너 기반의 배포 등으로 인해 서비스의 IP가 동적으로 계속 변경 될 수 있다.
따라서 클라이언트가 호출할 서비스를 찾는 매커니즘(서비스 등록,검색)이 필요하며,
이를 Service Discovery 라고 한다.
요약
- 서비스의 등록과 검색을 해주는 서비스이다.
- Service Discovery에는 어떤 서비스인지, 그리고 위치값(IP, Port)가 저장되어 있다.
2) Service Discovery 구현 방법
Client Side Discovery
- Service Client가 Service Registry에 Query를 통해 서비스의 위치를 물어보고 호출하는 방식
- 대표적으로 Netflix Eureka가 있다.
장점
- 클라이언트가 사용 가능한 서비스 인스턴스에 대해 알고 있기 때문에 각 서비스별 로드밸런싱 방법을 선택할 수 있다.
단점
- 클라이언트와 서비스 레지스트리 사이의 의존성이 생긴다.
- 서비스 클라이언트에서 각 프로그래밍 언어 및 프레임워크에 대해서 클라이언트 측 Service Discovery 로직을 구현해야한다.
Server Side Discovery
- 호출되는 서비스 앞에 Load Balancer를 넣는 방식
- Service Client가 Load Balancer를 호출하면 Load Balancer가 Service Registry로 서비스의 위치를 물어보고 가용할 수 있는 서비스 인스턴스를 라우팅한다.
- 대표적으로 AWS ELB, Kubernetes가 있다.
장점
- Discovery의 기능이 클라이언트로부터 분리되어 있어 의존성이 낮아지고, 클라이언트는 단순히 로드밸런서에 요청만 하면 된다.
- 클라이언트 측에서 각 프로그래밍 언어 및 프레임워크에 대한 검색 로직을 구현할 필요가 없다.
단점
- 로드밸런서가 배포 환경에 포함되어야한다.
3) Service Registry
- Service Discovery의 핵심 부분
- 서비스 인스턴스와 네트워크 location을 포함하는 데이터베이스와 같음
- 종류 : Netflix Eureka, Apache Zookepper, etccd 등
참고
'Spring Cloud' 카테고리의 다른 글
Service Discovery - Spring Cloud Netflix Eureka 설정 (0) | 2024.03.11 |
---|---|
Spring Cloud Gateway 개념 및 설정 방법 (0) | 2024.03.11 |
Spring Cloud Config (2) - Actuator refresh (0) | 2024.03.11 |
Spring Cloud Config (1) - 개념 및 설정 방법 (0) | 2024.03.11 |
Spring Cloud 개념 (0) | 2024.03.11 |