Spring Boot Project, MSA 적용하기(Nginx, Gateway, Eureka)

Jihu Kim·2025년 1월 7일
post-thumbnail

MSA 적용하는 방법에 대해서 알아보자.


위의 그림은 MSA를 적용한 프로젝트의 시스템 아키텍처이다.
Nginx, Gateway(Service registry), Eureka는 MSA에서 자주 사용된다.

흐름은 다음과 같다.

  1. 클라이언트가 Nginx에 요청을 보냄.
  2. Nginx는 요청을 Gateway로 전달.
  3. Gateway는 Eureka를 통해 대상 마이크로서비스의 위치를 확인.
  4. Gateway는 요청을 마이크로서비스로 전달.
  5. 마이크로서비스는 응답을 Gateway로 변환.
  6. Gateway는 응답을 Nginx를 거쳐 클라이언트로 전달.

클라이언트 → Nginx → Gateway → Eureka 조회

MSA

MSA (마이크로서비스 아키텍처)는 애플리케이션을 여러 개의 작은 독립적인 서비스로 분리하여 개발하는 소프트웨어 아키텍처입니다.

Nginx

역할: 리버스 프록시 및 로드 밸런서.

  • 클라이언트 요청을 마이크로서비스 또는 Gateway로 전달.
  • 정적 리소스 제공 및 SSL 종료 처리.
    • 클라이언트와 서버 간 통신을 HTTPS로 암호화할 때, Nginx가 암호화를 해제(복호화)해 백엔드 서버로는 HTTP 요청을 전달하는 방식
    • SSL : 데이터를 안전하게 전송하기 위해 암호화하는 기술(보안 프로토콜)
  • 대규모 트래픽을 효율적으로 분산.

Gateway (Spring Cloud Gateway)

역할: API Gateway로서 클라이언트와 마이크로서비스 간의 중간 관문 역할.

  • 요청 라우팅: 클라이언트 요청을 적절한 마이크로서비스로 전달.
  • 인증/인가, 로깅, 필터링, 로드 밸런싱 기능 수행.
  • Eureka와 통합하여 동적으로 마이크로서비스의 위치를 확인.

Eureka

역할: 서비스 디스커버리 서버.

  • 마이크로서비스들이 자신의 위치(IP, 포트)를 등록(서비스 레지스트리).
  • Gateway나 다른 서비스들이 동적으로 서비스 위치를 조회해 통신.
profile
Jihukimme

0개의 댓글