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
'개발 > Spring Cloud' 카테고리의 다른 글
[Spring Cloud] Config Server 설정 정보의 암호화 처리 (0) | 2023.06.20 |
---|---|
[Spring Cloud] Config Server 구축하기 (busrefresh 하기) (1) | 2023.06.19 |
[Spring Cloud] Spring Cloud Gateway 구축하기 (0) | 2023.06.12 |
[Spring Cloud] Eureka Client 구축하기 (0) | 2023.06.05 |
[Spring Cloud] Eureka Server 구축하기 (0) | 2023.06.05 |