[Spring] Spring Cloud

배창민·2025년 11월 4일
post-thumbnail

Spring Cloud – Eureka 정리

Spring Cloud는 마이크로서비스 아키텍처(MSA)를 구축할 때 필요한
서비스 디스커버리, 로드 밸런싱, 설정 관리, 게이트웨이 등을 제공하는 Spring 기반 확장 모음이다.

그중 Eureka는 서비스 등록/발견(Discovery)을 담당하는 핵심 컴포넌트다.


1. Eureka란?

Netflix가 만든 서비스 등록(Registry) + 서비스 발견(Discovery) 서버

  • 각 마이크로서비스는 Eureka 서버에 자신을 등록
  • 다른 서비스는 Eureka 서버를 통해 대상 서비스의 위치(IP/Port) 를 조회
  • 클라이언트 측 로드 밸런싱, 장애 감지 등과 함께 사용되며
    Spring Cloud Netflix(Eureka, Ribbon 등)와 자주 조합된다.

2. 전체 구조 개념 정리

Eureka를 사용하는 전형적인 흐름을 역할별로 나누면 다음과 같다.

2-1. 클라이언트와 API Gateway

  • 클라이언트는 각 서비스에 직접 호출하지 않고
    API Gateway를 단일 진입점으로 호출

  • API Gateway 역할

    • URL/Path 기반 라우팅
    • 인증/인가, 로깅, 모니터링 같은 공통 기능 처리
    • 외부에 보이는 공개 API를 한곳으로 모아 제공

2-2. Service Discovery – Eureka

  • Eureka Server

    • 각 마이크로서비스 인스턴스가 자신을 등록하는 중앙 서버
    • 현재 살아 있는 서비스 인스턴스 목록 및 상태를 유지
  • Eureka Client

    • 각 서비스 인스턴스(A, B, C…)는 Eureka Client로 동작
    • 기동 시 Eureka 서버에 자신의 정보(IP/Port/상태) 를 등록
    • 주기적으로 헬스 체크(Heartbeat) 를 보내며 상태를 갱신
  • 장점

    • 서비스 인스턴스가 동적으로 늘고 줄어도 위치를 자동으로 관리
    • API Gateway나 다른 서비스가 “서비스 이름”만 알고 있어도 호출 가능

2-3. Load Balancer

  • 클라이언트 → API Gateway → 로드 밸런서 → 서비스 인스턴스

  • 로드 밸런서는 Eureka에서 받은 인스턴스 목록을 이용해

    • 트래픽을 여러 인스턴스에 분산
    • 헬스 체크 결과를 바탕으로 죽은 인스턴스는 제외
  • 효과

    • 특정 인스턴스에만 부하가 몰리지 않도록 부하 분산
    • 일부 인스턴스 장애가 나도 서비스 전체는 계속 동작

2-4. Service Instances

  • 서비스 인스턴스 A, B, C …

    • 각각 서로 다른 포트/서버에서 동작
    • 실제 비즈니스 로직을 수행하는 주체
  • 트래픽 증가 시

    • 동일 서비스를 여러 인스턴스로 수평 확장(scale-out)
    • Eureka에 자동으로 등록되며 로드 밸런서 대상에 포함

2-5. 전체 요청 흐름 요약

  1. 클라이언트가 특정 기능 호출 → API Gateway에 요청
  2. API Gateway는 필요한 서비스 이름으로 Eureka 서버에 조회
  3. Eureka 서버는 해당 서비스의 인스턴스 목록을 응답
  4. 로드 밸런서가 그중 하나를 선택해 요청 전달
  5. 선택된 서비스 인스턴스가 비즈니스 로직 수행 후 응답
  6. 응답은 다시 API Gateway를 통해 클라이언트에게 반환

핵심 정리

Spring Cloud의 Eureka는 서비스가 어디에 떠 있는지 찾는 주소록 역할,
API Gateway는 입구, Load Balancer는 분배기,
각 서비스 인스턴스는 실제 일꾼이라고 보면 전체 그림이 한 번에 잡힌다.

profile
개발자 희망자

0개의 댓글