본문 바로가기
MSA

2 - Spring Cloud

by 젼젼39 2026. 2. 23.

1. Spring Cloud 개요

  • 정의: 마이크로서비스 아키텍처(MSA) 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장
  • 목적: MSA를 구현하고 운영할 때 발생하는 복잡한 문제들을 표준화된 패턴으로 해결하도록 도움
  • 주요 기능 구성:
    • 서비스 등록 및 디스커버리: Eureka, Consul, Zookeeper
    • 로드 밸런싱: Ribbon, Spring Cloud LoadBalancer
    • 서킷 브레이커: Hystrix(기존), Resilience4j(신규)
    • API 게이트웨이: Zuul(기존), Spring Cloud Gateway(신규)
    • 구성 관리: Spring Cloud Config
    • 분산 추적: Spring Cloud Sleuth, Zipkin
    • 메시징: Spring Cloud Stream

2. Spring Cloud 주요 모듈 상세

2-1) 서비스 등록 및 디스커버리 (Service Discovery)

  • Eureka: 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로서비스 위치를 동적으로 관리함
  • 주요 특징:
    • 서비스 레지스트리: 모든 서비스 인스턴스의 위치 정보를 저장하는 중앙 저장소 역할
    • 헬스 체크(Health Check): 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장
    • 클라이언트 구조: 각 마이크로서비스 애플리케이션들은 유레카 클라이언트가 되어 동작함

2-2) 로드 밸런싱 (Load Balancing)

  • Ribbon: 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로, 서비스 인스턴스 간 부하를 분산
  • 주요 특징:
    • 서버 리스트 제공자: Eureka로부터 서비스 인스턴스 리스트를 제공받아 로드 밸런싱에 활용함
    • 알고리즘 지원: 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱 알고리즘을 제공함
    • Failover: 요청 실패 시 다른 인스턴스로 자동 전환하여 가용성을 높임

2-3) 서킷 브레이커 (Circuit Breaker)

  • Hystrix: 넷플릭스 개발 라이브러리로, 서비스 간 호출 실패를 감지하고 시스템 안정성을 유지함
    • 상태 관리: 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리함
    • Failback: 호출 실패 시 대체 로직을 제공하여 시스템 전체가 무너지는 것을 방지
    • 모니터링: Hystrix Dashboard를 통해 실시간 상태 확인이 가능함
  • Resilience4j: Hystrix의 대안으로 개발된 자바 기반의 경량 서킷 브레이커 라이브러리임
    • 핵심 기능: 호출 차단뿐만 아니라 타임아웃 설정, 재시도(Retry) 기능을 지원함
    • 안정성: 일시적인 네트워크 문제 등에 유연하게 대응할 수 있도록 설계됨

3. Spring Cloud 구성 요소의 활용

3-1) API 게이트웨이 (API Gateway)

  • Zuul: 모든 서비스 요청을 중앙에서 관리하는 넷플릭스 기반 게이트웨이임
    • 라우팅/필터: URL에 따른 요청 전달 및 필터 체인을 통한 전후 작업 수행함
  • Spring Cloud Gateway: 스프링 클라우드에서 제공하는 차세대 API 게이트웨이
    • 라우팅 및 필터링: 요청을 받아 특정 서비스로 전달하고 인증/권한 부여를 수행함
    • 보안: 외부 요청으로부터 애플리케이션을 보호하고 통합 보안 정책을 적용함
    • 효율성: 분산 환경의 요청 처리와 관리를 매우 효율적으로 수행함

3-2) 구성 관리 (Spring Cloud Config)

  • 정의: 분산된 환경에서 중앙 집중식 설정 관리를 제공
  • 주요 특징:
    • Config 서버: 중앙에서 설정 파일을 관리하고 각 서비스에 배포
    • Config 클라이언트: 서버에서 설정을 받아 사용하는 서비스 인스턴스
    • 설정 갱신: 설정 변경 시 서비스 재시작 없이 실시간으로 반영이 가능

4. Spring Cloud 적용 사례: 넷플릭스 (Netflix)

4-1) 배경 및 MSA 전환 이유

  • 배경: 사용자 급증에 따라 기존 모놀리식 구조로는 급격한 트래픽과 요구사항 감당이 어려워짐
  • 확장성(Scalability): 글로벌 서비스를 위해 수백만 명의 동시 접속을 감당할 인프라가 필요했음
  • 신뢰성(Reliability): 한 부분의 장애가 전체 시스템에 영향을 미치지 않도록 격리가 필요했음
  • 개발 속도: 새로운 기능을 빠르게 배포하고 독립적인 팀 단위 협업 환경이 필요했음

4-2) 전환 과정과 결과

  • 전환 과정:
    • 모놀리식 애플리케이션을 독립적인 여러 마이크로서비스로 분리
    • CI/CD 파이프라인을 구축하여 빌드, 테스트, 배포 과정을 자동화
    • Hystrix, Eureka, Ribbon 등 자체 도구를 개발하여 서비스 통신과 복구를 최적화
    • AWS 클라우드 인프라를 활용하여 확장성을 극대화
  • 결과:
    • 수천 개의 서비스를 운영하며 글로벌 사용자 증가에 유연하게 대응하게 됨
    • 서비스 장애 시 독립적인 복구가 가능해져 높은 가용성을 확보함
    • 신속한 기능 개발과 배포 주기를 통해 사용자 요구에 빠르게 대응 중

'MSA' 카테고리의 다른 글

6 - API 게이트웨이  (0) 2026.02.23
5 - 서킷브레이커  (0) 2026.02.23
4 - 로드밸런싱  (0) 2026.02.23
3 - 서비스 디스커버리 (Eureka)  (0) 2026.02.23
1 - MSA 개요  (0) 2026.02.23