[MSA] Spring Cloud

SW Development
[MSA] 스프링 클라우드
Posted on Aug. 8, 2024, 5:54 p.m. by SANGJIN
random_image

Here is a summary of key terms related to Spring Cloud for MSA development. Spring Cloud offers similar functionalities on AWS or GCP but is composed of modules that can be quickly and easily applied within the Spring Framework. The main modules and their key features are as follows:

  • Eureka: Plays a crucial role in dynamically locating services within MSA. It stores the locations of services (instances) and periodically checks the status of these instances. If a failure occurs, it removes the service from the list to prevent access.

  • FeignClient: Provides functionality for declaratively calling services by receiving the service (instance) list from Eureka. It integrates with Ribbon (a client-side load balancer) to automatically perform load balancing.

  • Ribbon: A client-side load balancer that provides load distribution among instances within MSA. It receives a list from Eureka and offers various load balancing algorithms and failover capabilities.

    • *Here, the term "client" refers to a client service within MSA that calls other services, not a PC or mobile device.
  • Resilience4j: Provides functionalities to improve system reliability, including a circuit breaker that detects failures and blocks additional traffic (Closed, Open, Half-Open), fallback logic for handling failures, and other features like timeouts and retries.

  • Spring Cloud Gateway: Serves as an API Gateway offering various filtering capabilities, including dynamic routing, filtering, monitoring, authentication, and authorization. It can apply Pre-filters and Post-filters based on the request timing. As an API Gateway, it acts as a single entry point between the client and services, handling functions such as routing, authentication and authorization, load balancing, monitoring, logging, validation, and transformation.

  • Spring Cloud Config: Provides centralized configuration management for distributed environments. It manages settings for multiple Config clients from the Config server and can update configurations in real-time.

  • Zipkin: A distributed tracing tool that collects and visualizes trace data within an MSA environment. It helps in understanding the call relationships between services, request paths, time spent per service, and identifying performance bottlenecks.

    • *A span represents an individual unit of work and the time taken by a service to process a request.

===

MSA 개발을 위한 Spring Cloud 관련 몇가지 주요 용어를 정리해 보았다. Spring Cloud는 AWS 또는 GCP에서도 유사한 기능ㅇ르 제공하지만, Spring Framework에서 빠르고 쉽게 적용 가능한 모듈로 구성되어 있다. 주요 모듈들과 주요 기능은 아래와 같다.

  • Eureka : MSA에서 서비스의 위츠를 동적으로 찾아주는 중요한 역할을 한다. 서비스(인스턴스)의 위치를 저장하고, 주기적으로 인스턴스의 상태를 확인한다. 장애 발생시 해당 서비스를 리스트에서 제거하여 접근을 차단한다.

  • FeignClient :HTTP클라이언트Eureka 로부터 서비스(인스턴스) 리스트를 받아 선언적으로 서비스를 호출 할 수 있는 기능을 제공한다. Ribbon(클라이언트 사이드 로드밸런서) 가 통합되어 있어 자동으로 로드밸런싱을 수행한다.

  • Ribbon: 클라이언트사이드 로드밸런서로, MSA에서 인스턴스간 부하를 분산하는 기능을 제공한다. Eureka 로부터 리스트를 제공받아 다양한 로드밸런싱 알고리즘과 Failover 기능을 제공한다.

    • *여기서 클라이언트의 의미는 PC나 모바일 단말기가 아닌 MSA에서 다른 서비스를 호출하는 클라이언트 서비스를 뜻한다.
  • Resilience4j: 실패를 감지하면 추가적인 유입을 차단(Closed, Open, Half-Open)하는 서킷 브레이커, 실패 시 대체 로직을 수행하는 Failback, 그밖에 타임아웃이나 재시도 기능 등 시스템 안전성을 위한 기능을 제공한다

  • Spring Cloud Gateway: API Gateway로써 동적라우팅, 필터링, 모니터링, 인증 및 인가 등 다양한 필터링 기능을 수행한다. 요청 시점에 따라, Pre필터와 Post필터를 적용할 수 있다. API Gateway 역할로 클라이언트와 서비스 사이에 단일 진입점 역할을 하며 다양한 역할을 수행한다. 라우팅, 인증 및 인가, 로드밸런싱, 모니터링, 로깅, 검증, 변환 등 의 기능을 처리할 수 있다.

  • Spring Cloud Config: 분산환경에서 중앙 집중식 구성관리 기능을 제공한다. Config 서버에서 다수의 Config 클라이언트 설정을 관리하고 실시간으로 갱신할 수 있다.

  • Zipkin: MSA 환경에서 추적 데이터를 수집하고 시각화하는 기능을 제공하는 분산 추적 툴이다. 서비스간의 호출관계, 서비스 요청 경로, 서비스별 소요 시간, 성능 병목 등을 확인하는데 활용할 수 있다.

    • *스팬(span)은 수행된 개별 작업 단위와 서비스가 요청을 처리하는 데 소요되는 시간을 나타낸다

Spring(Java) MSA

Leave a Comment: