✔️ Spring Cloud란?
- 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는
스프링 프레임워크의 확장
- 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
현업에선 Hystrix, Zuul로 개발된 상태가 꽤 많음. Spring은 버전 계속 업데이트됨.
현업에선 버전을 계속 올리는 게 고려사항이 많기 때문에 무리가 있음.(잘 돌아가는 것을 바꾸는 게 쉽지 않음)
✔️ Spring Cloud 주요 모듈
➤ 서비스 등록 및 디스커버리
▫️ Eureka
- 넷플릭스가 개발한 서비스 디스커버리 서버
- MSA에서 각 서비스의 위치를 동적으로 관리
- 주요 특징
- 서비스 레지스트리 : 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소
- 헬스 체크 (Health check) : 서비스 인스턴스의 상태를 주기적으로 확인 -> 가용성 보장
➤ 로드 밸런싱
▫️ Ribbon
- 넷플릭스가 개발한 로드 밸런서
- 서비스 인스턴스 간의 부하를 분산
- 주요 특징
- 서버 리스트 제공자, 로드 밸런싱 알고리즘, Failover
➤ 서킷 브레이커
▫️ Hystrix
- 넷플릭스가 개발한 서킷 브레이커 라이브러리
- 서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성 유지
- 주요 특징
- 서킷 브레이커 상태, Fallback, 모니터링
▫️ Resilience4j
- 자바 기반 경량 서킷 브레이커 라이브러리
- 넷플릭스 Hystrix의 대안으로 개발됨
- 주요 특징
- 서킷 브레이커, Fallback, 타임아웃 설정, 재시도
✔️ Spring Cloud 구성 요소의 활용
➤ API 게이트웨이
▫️ Zuul
- 넷플릭스가 개발한 API 게이트웨이
- 모든 서비스 요청을 중앙에서 관리
- 주요 특징
- 라우팅, 필터, 모니터링
▫️ Cloud Gateway
- 스프링 클라우드에서 제공하는 API 게이트웨이
- MSA에서 필수적인 역할
- 주요 특징
- 루팅 및 필터링, 보안, 효율성
➤ 구성 관리
▫️ Spring Cloud Config
- 분산된 환경에서 중앙 집중식 설정 관리 제공
- 주요 특징
- Config 서버, Config 클라이언트, 설정 갱신