본문 바로가기

MicroService Architecture

Spring Cloud란?

Spring Cloud 개념

  • 분산 시스템을 구축하고 운영하기 위한 스프링 프레임 기반 라이브러리의 모음
  • 마이크로서비스 아키텍처(MSA)를 구현할 때 주로 사용
  • 서비스 디스커버리, 로드 밸런싱, 분산 설정 관리, 분산 추적, API 게이트웨이 등 다양한 기능을 포함하며, 통합과 확장이 가능하고 이를 통해 유연성을 높일 수 있음

 

spring.io

 

Spring Cloud가 제공하는 기능

  • API 게이트웨이(API Gateway)
    • MSA에서 클라이언트와 백엔드 서비스 간의 통신을 중앙에서 관리하는 서버
    • 클라이언트 애플리케이션이 서비스에 요청을 보낼 때 API 게이트웨이가 서비스 간 통신을 관리하고 모니터링함으로써 이를 조정하고 보안 검사를 수행하는 데 사용
    • API Gateway는 주로 라우팅, 인증, 보안, 로드 밸런싱, 캐싱 등의 기능을 담당하여 MSA를 더 효과적으로 관리하고 사용할 수 있도록 도움
  • 서비스 디스커버리(Service Discovery)
    • 서비스들의 위치와 상태를 자동으로 찾고 관리하는 기능
    • 서비스 디스커버리의 과정
      1. 서비스는 자동으로 디스커버리 시스템에 등록
      2. 서비스가 종료되면 등록 정보가 자동으로 해제
      3. 클라이언트 애플리케이션은 이것을 통해 동적으로 사용 가능한 서비스를 검색하고 선택
      4. 이를 통해 클라이언트는 부하 분산을 수행하고 요청을 적절히 분배 가능
  • 분산 설정(Distributed Configuration)
    • MSA에서 필요한 설정중앙에서 관리하고 업데이트할 수 있도록 하는 기능
    • 서비스는 이 서버에서 설정을 동적으로 가져와 사용
    • 서비스가 실행 중일 때 설정을 변경하고, 변경된 설정을 즉시 적용 가능
      서비스를 중지를 하지 않고설정을 변경하여 유연한 구성이 가능
  • 분산 추적 (Distributed Tracing)
    • 트랜잭션 추적을 위한 기능
    • 스프링 클라우드는 분산 추적을 위한 Spring Cloud Sleuth을 제공
    • 발생한 작업을 트레이스와 스팬으로 기록하여 마이크로서비스 간의 요청과 응답을 추적하고 모니터링하는 데 사용
    • 이를 통해 서비스 간의 통신이 어떻게 이루어지고 있는지를 시각적 확인 가능
  • 로드 밸런싱 (Load Balancing)
    • 여러 서버에게 들어오는 트래픽을 균등하게 분배하여 부하를 분산시키는 기술
    • 세션 유지, 스케일 아웃과 같은 기능을 통해 네트워크 트래픽을 효과적으로 관리
  • 회로 차단기 (Circuit Breaker)
    • 서비스 간의 통신에서 발생할 수 있는 장애에 대응하는 메커니즘
    • 서비스 간의 통신이 실패할 경우 회로 차단기는 일시적으로 연결을 차단하여 전체 시스템에 영향을 최소화하고, 일정 시간이후다시 시도하거나 다른 대체 서비스를 호출

 

스프링에서 사용하는 도구

 

  • API Gateway구성에는 Spring Cloud Gateway를 활용
    • 이는 경량의 도구로서 API 라우팅, 필터링, 로드 밸런싱과 같은 역할을 효과적으로 수행
  • 서비스 디스커버리 단계에서는 Spring Cloud Discovery를 사용
    • 서비스 인스턴스의 등록, 검색, 상태 감지 등을 자동화하고 효과적으로 관리
  • 분산 시스템에서의 설정 관리를 위해 Spring Cloud Config를 도입
    • 중앙 집중식으로 애플리케이션의 설정을 관리하고 배포할 수 있는 기능을 제공