티스토리 뷰

서비스 디스커버리 ( Service Discovery )

 

 

Service Discovery 란?

MSA: Micro Service Architecture 에서는 다양한 Micro Service에 상호작용을 통해 작동하고, 이러한 Micro Service 들은 서로 다른 IP와 Port를 가진다. 서비스들은 서로 원격 호출을 통해 상호작용을 하는데 원격 호출을 위해서는 IP와 Port가 필요하고 때문에 Key-Value 형태로 IP와 Port를 저장및 관리하며 Micro Service간의 상호작용에 도움을 주는 역할을 한다.

 

그 구조만 보면 마치 DNS 와 유사하여, 각 서비스의 위치를 기억하고 찾아준다. Java 진영에서는 대표적으로 Service Discovery 로 유레카(Eureka) 를 사용한다.

 

 

 

 

 

Netflix Eureka 

Spring Cloud에서 Service Discovery 역할을 하고있어, Micro Service 들의 Instance Id / IP / Port 를 저장하고, Rest 기반으로 동작한다. Client-Server 방식으로 구성되어 Eureka Server와 Client로 구분하고 Server에 Client를 등록하여 관리하는 방식을 취하고 있다.

 

 

 

Eureka Server

Eureka Server는 일종의 Domain Name Server와 같은 역할을 한다. 각 Micro Service 들의 유닛들을 저장하고 관리한다.

 

1. Spring Initializr 에서 프로젝트 생성

 

2.  @EnableEurekaServer 어노테이션을 활용하여 Eureka Server 지정

 

3. Eureka Server 설정 ( .yml or .applications )

 

 

Eureka Client

Service Discovery에 등록된 각각에 Micro Service를 의미한다.

 

 

1. Eureka Client 의존성 추가 ( Gradle 기준 )

 

2. Eureka Client 등록

 

3. Eureka Client 설정 ( .yml or .applications )

 

 

 

Eureka Client 등록 확인

http://127.0.0.1:8761 에 접속

Instances Currently registered with Eureka 섹션을 통해 등록된 Eureka Client를 확인할 수 있다.

 

 

예제 코드

참조

- Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

- https://mangchhe.github.io/springcloud/2021/04/07/ServiceDiscoveryConcept/

 

 

댓글