Spring Eureka | Service Discovery | Service Registry

2024. 2. 15. 15:26

들어가기 전에

Spring Eureka 에 대한 이해를 위해 작성한 글입니다. 이쁘게 봐주세요

 

Service Discovery & Service Registry  필요성 

MSA 의 장점 중 하나가 부하량에 따라 인스턴스 개수를 동적으로 조절할 수 있다는 점이다.
덕분에 MSA 의 마이크로 서비스들의 인스턴스의 개수가 가변적이고 그에 따라 각각의  서비스들의
위치 파악이 힘들다. 

효과적인 마이크로 서비스들의 관리 및 운영을 위해 필요한 것이 
서비스 디스커버리와 서비스 레지스트리이다.

 

Service Discovery

서비스 디스커버리는 MSA 에서 마이크로 서비스들의 위치를 찾기 위한 매커니즘이다.

즉 방법 같은 거다.
- 클라이언트가 서비스 레지스트리를 조회
- 특정 프로토콜을 이용

클라이언트 어플리케이션이 필요한 서비스의 위치를 동적으로 찾아오는 역할을 수행한다.

 

Service Registry

MSA에서 마이크로 서비스들의 메타 정보 ( 동적으로 할당되는 IP, 프로토콜, 해당 마이크로 서비스들의 위치 등등 ) 를  저장하고 관리하는 메커니즘  

서비스가 시작되거나 종료 될 때 마다 변경사항을 갱신하여 
서비스의 가용성을 추적한다. 

 

 

MSA 에 요청 특정 서비스를 요청 할 때, 서비스들의 위치를 파악하기 위해서 사용 한다.
그렇다면 Spring Eureka 는 뭘까?

 

Spring Cloud Eureka

Spring Cloud 를 사용하여 MSA 를 구축할 때, 서비스 디스커버리, 서비스 레지스트리 역할을 수행하는 라이브러리

Netflix 에서 MSA 를 위해 Spring Cloud 에 기부한 OpenSource 
서비스 디스커버리, 서비스 레지스트리 역할을 수행하기 위해서 
Eureka Server, Eureka Client 로 나뉘며 
REST 기반으로 작동한다.

 

Eureka Server

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
마이크로서비스에서 서비스의 인스턴스의 등록과 상태를 관리하는 서비스 디스커버리 서버

즉, 마이크로 서비스들 중에서 클라이언트의 요청에 맞는 서비스를 연결해주는 서버 

- REST API 기반
- 사용 가능한 서비스들의 목록을 볼 수 있음 ( 30초 마다 갱신 ) 
- 서비스 이름을 기준으로 탐색하며, 로드밸런싱을 위해서 내부적으로 RIBBON 을 사용 
- 일정 주기로 Client 로 부터 PING 을 받아서 가용한 인스턴스인지 확인 ( 응답 없으면 제외 시킴 )
- 서비스 인스턴스들은 ( Eureka Client ) 는 Eureka Server 에 등록하여 해당 서비스의 메타데이터들을 제공한다.

 

Eureka  Client 

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
마이크로 서비스를  서비스 디스커버리 및 서비스 레지스트리에 등록하고 , 다른 서비스를 찾는 기능이 포함된 모듈

해당 dependency 가 선언된 서비스 인스턴스들은 
- 서비스 시작 시 Eureka Server 에 해당 인스턴스를 등록 한다. 서비스 이름, 인스턴스 ID, 서비스 엔드 포인트 )
- 주기적으로 Eureka Server 에 PING 을 보내서 상태를 갱신하여 가용성 모니터링이 가능하다.
- Eureka Server 로 부터 주기적으로 Eureka Server 에 등록된 서비스 목록을 가져와 캐시에 저장 한다.
( 이를 통해 마이크로 서비스들 간에 소통 가능 ) 

 

정리 

Service Discovery 
- 마이크로 서비스들의 위치를 찾아서 연결해주는 MSA 매커니즘 
- 클라이언트 어플리케이션이 필요한 서비스의 위치를 동적으로 찾는다.

Service Registry
- 마이크로 서비스들의 정보를 저장하고 관리하는 메커니즘 
- 각 마이크로 서비스의 이름, 인스턴스ID, 엔드포인트 및 기타 메타 데이터를 서비스 레지스트리에 저장

Spring Cloud Eureka 
- Spring Cloud 를 이용하여 Service Discovery & Service Registry 를 구현할 수 있게 도와주는 라이브러리 


Spring Cloud Eureka Server
- Eureka 에서 서비스의 인스턴스들을 등록하고 관리하는 서비스 디스커버리 서버 

Spring Cloud Eureka Client
- 마이크로 서비스들이 서비스 레지스트리에  저장되고 다른 서비스들을 찾는 기능을 수행하는 모듈 

BELATED ARTICLES

more