Spring Cloud는 MSA의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구상할 수 있도록 지원하는 Spring Boot 기반 프레임워크.
즉, MSA 구성을 지원하는 Springboot 기반 Framework
분산 시스템 상에 필요한 여러 패턴들을 표준 패턴화 시켜 손쉽게 개발할 수 있도록 지원
Spring Cloud Netflix Zull(Gateway)
- Spring Reactive 생태계에 구현된 API Gateway
- Gateway Handler Mapping으로 들어오는 요청들을 적절한 대상으로 라우팅
작동 방식
- 논블로킹, 비동기 방식으로 Netty Server 사용 > 서블릿 컨테이너나 WAR로 빌드 시 동작 X
- 3가지 핵심 단위
1. Route : 대상 URI, 조건부 집합(Predicates), 각종 필터들로 이루어진 요청 > 라우팅 대상
2. Predicate : 라우팅에 필요한 조건, request header의 특정 키-값을 조건으로 사용 가능
3. Filter : 요청 전후로 요청/응답을 추가/수정할 수 있음
기능
- Service Request 라우팅
- Service Load Balancing
- Service Request에 대한 EndPoint 단일화
- Service Filtering
- 인증, 모니터링 등
Eureka(LB)
- 동적 서비스 등록, 발견
- MSA의 서비스들의 목록과 위치(IP, Port)가 동적으로 변하는 환경에서 서비스들을 효율적으로 관리하기 위한 Service Discovery Server/Client
- 서버 개수 동적 조절
서비스 제공자 관점 프로세스
새로운 서비스 시작 시 중앙 서비스 레지트스리에 등록
장애 발생 시, 서비스 레지스트리 제외
레지스트리는 항상 최신 정보
hystrix
: Software 기반 Circuit Breaker, 장애 상황을 견딜 수 있도록 해주는 Spring Cloud component
특징
- 다른 서비스 실패에 따른 서비스 지연 또는 실패 방지
- 분산 시스템의 복잡한 연쇄 실패 방지
- 빠르게 실패하고 빠르게 복구
- Fallback과 Gracefully dergrade(완벽한 마무리)
- real-time에 유사한 모니터링과 알람
기능
- Container(Tomcat 등)의 thread 직접 사용 X
- Queue로 대기열 사용하지 않고 빠르게 실패
- 실패로부터 서비스 보호 -> fallback 제공
- Thread timeout, 장애 등을 설정해 장애 정해진 루트를 진행
- 미리 정해진 임계치를 넘으면 장애가 있는 로직을 실행하지 않고 우회
ribbon EOS(Ribbon Client)
- Netflix OSS 라이브러리
- 클라이언트 로드밸런서
- Load Balancer를 대신해 L7 Layer에서 Client Side Load Balancer 역할 담당
> 여러 서버를 라운드로빈 방식의 부하 분산 기능 제공]
- RestTemplate 대신 FeignClient를 사용하여 Ribbon 기능 사용
장점
- REST API를 호출하는 서비스에 탑재되는 SW 모듈(클라이언트)
- 매우 다양한 설정 가능(서버 선택, 실패 시 Skip 시간, Ping 체크 등)
- Retry 기능 내장
- Eureka와 사용 시 매우 강력하다.
단점
- 새로운 서버가 추가되고 제거되는 것이 재빌드/배포 필요 -> 무중단 사용 시 Eureka와 함께 사용
Spring Config(Spring 환경설정 서버)
: Spring Cloud Config 서버를 사용하여 Spring Boot Application의 환경설정 파일을 한 곳에 저장,
해당 서버에 접근하여 환경 설정 정보를 가져옴
장점
- 모든 Application의 환경 설정 정보를 한 곳에서 관리
- 환경 설정이 변경되어도 전체를 다시 빌드하지 않아도 됨
** Circuit Breaker
MSA에서 특정 MSA 서비스 장애로 인해 다른 MSA 서비스에도 장애를 일으킬 수 있는 가능성을 방지하는 것.(연쇄 방지)
** 라운드 로빈
그룹 내에 있는 모든 요소들을 합리적인 순서에 입각해 뽑는 방식
대게 리스트의 맨 위에서 아래로 가며 하나씩 뽑고, 끝나면 다시 맨 위로 돌아가는 방식
"기회를 차례대로 받기"
** API Gateway
MSA의 각 서비스들의 IP와 Port 번호에 대한 단일화된 엔트포인트를 제공
인증, 모니터링, 오케스트레이션, 사용량 제어, 요청/응답 등의 기능을 포함한 향상된 Reverse Proxy
참고 사이트 : https://honeywater97.tistory.com/205