학습일지/Architecture

[Architecture] 서비스 디스커버리

Merge Log 2025. 9. 16. 15:30

특징

  • MSA 환경에서 각 서비스의 위치를 관리하고 조회하는 역할
  • 등록된 서비스들은 조회 및 통신이 가능하고 등록 서버에 자신의 위치를 등록한다
  • 헬스 체크, 서비스 조회/등록 등의 기능이 존재한다
  • 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성 보장
  • 넷플릭스에서 개발한 Eureka 가 대표적이다

서버 설정

  • application.properties 혹은 yml 을 통해 설정할 수 있다
server:
    port: 8761

eureka:
    client:
        register-with-eureka: false
    server:
        enable-self-preservation: false

클라이언트 설정

  • 각 서비스(예: 주문, 상품, 유저 등) 는 Eureka 에 자신을 등록해야함
  • 각 서비스는 spring-cloud-starter-netflix-eureka-client 의존성을 사용해야 하며 애플리케이션 이름만 설정파일에 있으면 자동으로 유레카에 등록됨
    spring:
     application:
          name: order

Eureka 고가용성 설정

  • 일반적으로 하나의 서버에 트래픽이 많이 요청되면 스케일 아웃, 클러스터 구성을 진행한다
  • Eureka 에서도 클러스터 구성을 할 수 있다
    • 다중 인스턴스로 등록
    • 각각의 인스턴스가 서로의 백업 역할을 한다 (피어로 등록되어 상호 백업 역할)
    • Eureka 서버를 다중 인스턴스로 구성할 때 각 서버의 피어 설정을 통해 서로 인식하고 백업할 수 있다

2개의 인스턴스와 1개의 Eureka 서버 테스트

Eureka 서버에서 두 인스턴스 확인 가능

테스트 코드