MSA 프로젝트 진행을 위한 Spring Cloud 정리
Spring Cloud란?
Spring Cloud는 분산 시스템 개발을 위한 포괄적인 프레임워크로, 마이크로서비스 아키텍처(MSA) 구축에 필요한 다양한 패턴과 도구를 제공 </br></br> Spring Boot 기반으로 구축되어 있어 빠르고 쉽게 분산 시스템을 개발 가능
주요 특징
1. 서비스 디스커버리 (Service Discovery)
- 마이크로서비스 간 동적 서비스 탐색
- 서비스 인스턴스의 자동 등록 및 해제
- 클라이언트 측 로드 밸런싱
2. 라우팅 (Routing)
- API Gateway 패턴 구현
- 동적 라우팅 및 필터링
- 요청/응답 변환
3. 서비스 간 호출 (Service-to-Service Calls)
- 선언적 REST 클라이언트
- 로드 밸런싱된 서비스 호출
- 서킷 브레이커 패턴
4. 부하 분산 (Load Balancing)
- 클라이언트 측 로드 밸런싱
- 다양한 로드 밸런싱 알고리즘 지원
- 헬스 체크 기반 인스턴스 선택
Spring Cloud 주요 프로젝트
Spring Cloud Config
- 분산 시스템의 외부 설정을 중앙에서 관리
- Git, SVN, 파일시스템 등 다양한 저장소 지원
- 설정 변경 시 애플리케이션 재시작 없이 반영 가능
Spring Cloud Gateway
- WebFlux 기반의 리액티브 API Gateway
- 라우팅, 필터링, 속도 제한, 서킷 브레이커 등 제공
- Netty 런타임 위에서 동작하는 비동기/논블로킹 아키텍처
Spring Cloud Netflix
Netflix는 자사의 대규모 분산 시스템 운영 경험을 바탕으로 다양한 오픈소스 프로젝트를 공개했고, Spring Cloud는 이를 Spring 생태계에 통합됨.
Spring Cloud Consul
- HashiCorp Consul 기반 서비스 디스커버리
- 분산 설정 관리
- 헬스 체크 및 키-값 저장소
프로젝트 진행 시 유의할 점
Netflix와 Consul의 현황
Netflix
- Spring Cloud Greenwich Release Train (2018년 12월)부터 일부 컴포넌트가 Maintenance Mode로 전환
- Netflix 내부에서도 2016년경부터 일부 컴포넌트의 활발한 개발이 중단됨
- Spring Cloud Ilford Release Train에서 Ribbon, Hystrix, Zuul 완전 제거 예정
Consul
- ✅ 완벽하게 지원됨
- Spring Cloud Consul은 리액티브 환경을 완전히 지원
- WebFlux 기반 Spring Cloud Gateway와 원활하게 통합
프로젝트 진행 시 Spring Cloud Netflix의 경우, Eureka외의 컴포넌트가 Maintenance mode로 전환된 것을 알고 진행할 필요가 있을 듯 하다.
Spring Cloud 2025 현황
최신 버전
- Spring Cloud 2025.0.0 (Northfields) 출시
- Spring Boot 3.5.0과 호환
- Spring Framework 6.x 기반
주요 변화
- Gateway 모듈 재구성
spring-cloud-gateway-server-webflux(리액티브)spring-cloud-gateway-server-webmvc(서블릿)
- LoadBalancer 개선
- Spring Cloud LoadBalancer가 기본 로드 밸런서로 확립
- Ribbon 완전 제거 권장
- Resilience4j 통합 강화
- Hystrix 대체로 Resilience4j 사용 권장
- Circuit Breaker, Rate Limiter, Retry, Bulkhead 등 지원
참고 자료
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.