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
- 마이크로 서비스들이 서비스 레지스트리에 저장되고 다른 서비스들을 찾는 기능을 수행하는 모듈
'SpringBoot > Spring Cloud' 카테고리의 다른 글
Spring Cloud Gateway - 간단하게 알아보자 (0) | 2024.02.27 |
---|---|
Eureka Serve & Eureka Client 어플리케이션 만들어보기 | Eureka YML 설정 (0) | 2024.02.16 |