서비스 디스커버리(Eureka)

 

서비스 디스커버리는 마이크로서비스 아키텍처에서 필수적인 구성 요소 중 하나입니다.

서비스 디스커버리는 동적으로 변화하는 네트워크 환경에서 서비스의 위치를 자동으로 식별하고 클라이언트에게 제공하는 역할을 합니다.

Netflix에서 개발한 Eureka는 Spring Cloud에서 널리 사용되는 서비스 디스커버리 도구입니다.

 

Eureka의 주요 개념

  1. Eureka Server
  • 서비스의 등록 정보를 관리하고 서비스 인스턴스의 상태를 추적하는 서버입니다.
  • 등록된 서비스의 정보를 주기적으로 갱신하고, 클라이언트에게 서비스 위치 정보를 제공합니다.
  1. Eureka Client
  • 마이크로서비스 인스턴스로, Eureka Server에 자신의 위치와 상태 정보를 등록합니다.
  • 주기적으로 Eureka Server에 HeartBeat 신호를 보내 자신이 정상 작동 중임을 알립니다.
  • 다른 서비스를 호출할 때 Eureka Server로부터 해당 서비스의 위치 정보를 받아옵니다.
  1. Service Registry
  • Eureka Server에 등록된 서비스 인스턴스의 메타데이터 저장소입니다.
  • 서비스 ID, IP 주소, 포트 번호 등의 정보를 포함합니다.

 

Eureka 동작 과정

  1. 서비스 등록
  • 마이크로서비스 인스턴스가 시작될 때, Eureka Server에 자신의 정보를 등록합니다.
  • 등록 정보에는 서비스 ID, IP 주소, 포트 번호 등이 포함됩니다.
  1. 서비스 검색
  • 클라이언트(다른 마이크로서비스 인스턴스)는 필요한 서비스의 위치 정보를 얻기 위해 Eureka Server에 요청을 보냅니다.
  • Eureka Server는 해당 서비스의 가용한 인스턴스 목록을 반환합니다.
  1. HeartBeat
  • 마이크로서비스 인스턴스는 주기적으로 Eureka Server에 HeartBeat 신호를 보냅니다.
  • HeartBeat 신호를 통해 서비스 인스턴스의 가용성을 확인할 수 있습니다.
  1. 서비스 제거
  • 마이크로서비스 인스턴스가 종료되거나 네트워크에서 분리되면, Eureka Server에서 해당 인스턴스의 정보를 제거합니다.

 

Eureka 구성 예시 (Spring Boot)

1. Eureka Server 구성

1
2
3
4
5
6
7
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
cs

 

2. Eureka Client 구성

1
2
3
4
5
6
7
@EnableEurekaClient
@SpringBootApplication
public class ServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(ServiceApplication.class, args);
    }
}
cs

 

3. application.yml 설정

1
2
3
4
5
6
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    preferIpAddress: true
cs

 

Eureka는 마이크로서비스 아키텍처에서 서비스 간의 느슨한 결합을 가능하게 하고, 동적인 서비스 검색과 로드 밸런싱을 제공합니다. 하지만 Eureka는 단일 실패 지점(Single Point of Failure)이 될 수 있으므로, 고가용성을 위해 Eureka Server의 클러스터링 구성이 필요할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다