본문 바로가기
백엔드 공부

[Java Spring 설계] MSA + Spring Cloud Eureka 개념

by CSEGR 2025. 1. 17.
728x90

 

1. MSA + Spring Cloud Eureka

설계 예시 + 출처 https://techblog.lotteon.com/%EB%89%B4%EC%98%A8%EC%9D%B4%EB%93%A4%EC%9D%98-%EC%B2%AB-msa-%EC%84%9C%EB%B9%84%EC%8A%A4-%EB%8F%84%EC%A0%84%EA%B8%B0-d336186a7e31

동작 과정

  1. 서비스 등록
    - 마이크로 서비스는 실행시, Eureka Server에 등록
    - 등록시 서비스의 이름/IP 주소/포트 번호 정보 제공, Eureka Server의 레지스트리에 저장
  2. 앱/웹 에서의 요청
  3. Spring Cloud API Gateway 애플리케이션 수신
  4. 마이크로 서비스 간 요청 (Feign Client를 이용한 통신)
    - 한 마이크로서비스가 다른 마이크로서비스에 요청시 Eureka Server에서 대상 서비스의 네트워크 정보 조회
    - Feign Client는 호출할 서비스의 이름(예: 을 기반으로 Eureka에서 해당 서비스의 정보를 조회합니다.

2. 참고 개념 정리

MSA(Micro Service Architecture)

: 독립적으로 배포가능한 각각의 기능을 수행하는 서비스로 구성된 소프트웨어 설계 방식

  • 서비스의 end-point 을 API 형태로 외부에 노출하고, 실질적인 세부사항은 외부에 모두 추상화함.
  • 즉, 클라이언트는 API를 통해서만 해당 서비스 호출 가능함.

Spring Cloud Eureka

: 서비스 레지스트리, 서비스 디스커버리를 지원하기 위한 라이브러리로 동적 인프라(클라우드 환경)에서 서비스 간 통신 문제를 해결하는데 주로 쓰임.

  • 사용하는 이유
    : REST API를 통해 다른 서비스를 호출할 때, 호출 대상 서비스 인스턴스의 네트워크 정보(IP 주소 및 포트)를 알아야함. 그러나 MSA 환경에서는 각 서비스가 독립적으로 배포되며, IP 주소나 포트가 동적으로 변경되는 특징이 있음. 따라서, 클라이언트나 API Gateway가 동적으로 변경되는 서비스의 위치를 찾기 위해 서비스 디스커버리(Service Discovery)라는 매커니즘이 필요함. 

 

  • 서비스 레지스트리 / 디스커버리
서비스 레지스트리 각 서비스의 위치와 상태 정보를 저장하고 관리 중앙 데이터베이스 역할
  • 서비스 등록
    : 각 마이크로서비스는 실행 시 서비스의 위치(IP와 포트) 매핑하여 저장
  • 상태 모니터링
    : 각 서비스의 상태 지속적으로 모니터링
서비스 디스커버리 클라이언트나 API Gateway가 호출할 서비스를 찾도록 돕는 역할
  • 호출 대상 서비스 탐색 및 반환
    : 서비스 레지스트리에서 호출 대상 서비스의 정보를 조회하여 반환
 
  • Eureka Server / Client
Eureka Server 모든 마이크로서비스의 위치를 저장하는 중앙 레지스트리 역할
Eureka Client 각 마이크로 서비스는 Eureka Client로 동작하며, Eureka Server에 등록하고 정보를 조회함.
  • Spring Cloud API Gateway
    : 클라이언트(Application) 와 마이크로서비스 사이에 위치하여 모든 요청을 중앙에서 관리함.
    • 주로 요청 라우팅, 로드 밸런싱, 요청/응답 데이터 변환 역할을 함.

Feign Client

: 마이크로서비스 간의 통신을 쉽게 만들어 주는 HTTP 클라이언트

  • Eureka와 통합되어, 서비스 이름만으로 호출가능하며 내부적으로 HTTP 요청을 생성함.

 

+ 참고 자료

 

신입사원 개발 정복기 #2. KOKODO의 첫 MSA 서비스 도전기

들어가며

techblog.lotteon.com

 

728x90