Spring Cloud

종원유·2022년 7월 11일
0

MSA

목록 보기
3/5

Spring Cloud

Spring Cloud는 MSA의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구상할 수 있도록 지원하는 Spring Boot 기반 프레임워크.
즉, MSA 구성을 지원하는 Springboot 기반 Framework
분산 시스템 상에 필요한 여러 패턴들을 표준 패턴화 시켜 손쉽게 개발할 수 있도록 지원

Spring Cloud 중요 컴포넌트

  • 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

profile
개발자 호소인

0개의 댓글