본문 바로가기
개발/Spring Cloud

[Spring Cloud] Client Side Load Balancer & API Gateway 개념 정리

by baau 2023. 6. 11.

Client Side Load Balancer

Netflix Ribbon

  • Client Side Load Balancer : 클라이언트에 탑재되어 있는 Load Balancer
  • Hardware 가 필요 없이 Software 로만 가능 
  • IP와 PORT가 아닌 서비스 이름으로 호출 (서비스 디스커버리 기능 지원)
  • 비동기 처리를 지원하지 않고, 동기적인 방식으로 요청을 전송한 후 해당 요청에 대한 응답을 기다리는 동안 블로킹된다.
    • Blocking방식의 HttpClient인 RestTemplate만 지원
  • Spring Boot 2.4부터 maintenance 상태
  • 대안책 : Spring Cloud LoadBalancer

 

Spring Cloud LoadBalancer 👍🏻

  • Client Side Load Balancer : 클라이언트에 탑재되어 있는 Load Balancer
  • RestTemplate뿐 아니라, Non-blocking 방식을 지원하는 Spring WebClient도 지원
  • Ribbon보다 더 경량화되고 유연한 구조를
  • 최신 Spring Cloud 프로젝트와의 통합성과 계속해서 개발되는 지속적인 유지보수를 제공

 

API Gateway

  • 모든 서버로의 요청을 단일지점을 거쳐서 처리
  • 사용자가 설정한 엔드포인트로 외부 요청을 라우팅 하는 역할
    • 클라이언트는 직접 마이크로 서비스에 요청을 보내지 않고, API Gateway에게 요청을 하게 된다.
    • 클라리언트 사이드에서 마이크로 서비스 서버의 엔드포인트에 직접 접근한다면, 서버의 엔드포인트가 변경될 때마다 클라이언트의 변경이 필수적이다.
    • 따라서 API Gateway를 통해서만 마이크로 서비스에 접근할 수 있도록 하는 것이 좋다.
  • 기능
    • 인증 및 권한 부여
    • 서비스 검색 통합
    • 응답 캐싱
    • 라우팅
    • 속도 제한, 부하 분산
    • 로깅 추적
    • 공통 로직 처리

 

Netflix Zuul

  • API Gateway 역할
  • 동기적인 방식으로 요청을 처리하며, 비동기 처리를 지원하지 않았다.
    • Zuul 2는 Netty 기반으로 재구축되어 비동기 처리를 제공하도록 설계했지만 완전히 안정화되지 않았다.
    • Zuul 1과 구조와 사용법이 다르다.
  • Spring Boot 2.4 부터 maintenance 상태
  • 대안책 : Spring Cloud Gateway

 

Spring Cloud Gateway 👍🏻

  • 스프링 기반 API Gateway
  • 마이크로서비스 아키텍처에서 라우팅, 로드 밸런싱, 필터링 등 역할을 수행
  • Spring 5, Project Reactor를 기반으로 구축되어 비동기 및 논블로킹 기능 지원
  • Netty 서버를 사용하여 높은 성능을 제공

MSA 공부

(1) Eureka Server 구성
(2) Eureka Client 구성
(3) Client Side Load Balancer & API Gateway 개념 정리
(4) Spring Cloud Gateway 구현

참고 강의 : https://www.inflearn.com/course/스프링-클라우드-마이크로서비스/dashboard