5.Spring Cloud의 하위 프로젝트들
1-1. Spring Cloud Config
분산된 서비스들 간에 공유되는 설정 정보(Environment)를 git repository와 같은 저장소를 통해 중앙 집중화하여 관리, 버전 관리를 통해 설정의 변경 이력을 추적하며 롤백하는 기능을 제공
서비스들이 동일한 구성 값을 공유하고, 변경 사항이 발생할 때 신속하게 전파할 수 있음
1-2. Spring Cloud Netflix Eureka
Netflix OSS의 구성요소들을 통합한 프로젝트
서비스 디스커버리 역할을 수행하는 Eureka, Zuul 등이 대표적 서비스 등록과 탐색(Service Registration and Discovery) 기능을 제공함
마이크로서비스 아키텍처에서 각 마이크로 서비스들이 자신의 위치(IP, 포트 등)와 기능 정보를 등록하고, 다른 서비스들은 이 정보를 사용하여 필요한 서비스를 찾아 호출할 수 있도록 정보를 제공해주는 기능
이를 통해 서비스들 간의 통신이 용이해지고, 유연하고 확장 가능한 아키텍처를 구성할 수 있게됨
1-3. Spring Cloud Gateway
사용자의 요청에 따라 적절한 마이크로서비스를 호출할 수 있도록 Routing 처리 역할을 수행하는 기능을 제공하는 프로젝트
예를 들어, 특정 URL 패턴에 따라 다른 서비스로 요청을 라우팅하거나, 로드 밸런싱을 적용하여 트래픽을 분산시킬 수 있음
1-4. Spring Cloud Sleuth & Zipkin
애플리케이션 동작 과정에서 발생한 로그 기록을 수집하고 분산 환경에서 발생할 수 있는 서비스들의 동작 기록을 추적하여 제공해주는 프로젝트
1-5. Spring Cloud Stream
여러 서비스들 간에 비동기적(Asynchronous)으로 메시지를 주고받는 기능을 제공하는 프로젝트 이를 통해 느슨하게 결합된 서비스들이 효과적으로 상호 작용하고, 이벤트 기반 아키텍처를 구현할 수 있음
2. 스프링 클라우드 하위 프로젝트 요약
| 패턴 구분 | 기능 | 기술 스택 |
|---|---|---|
| 개발 패턴 | 기본 마이크로서비스 패턴 | Spring Boot |
| 구성 정보 저장 및 관리 | Spring Cloud Config | |
| 비동기 메시징 처리 | Spring Cloud Stream | |
| 라우팅 패턴 | 서비스 디스커버리 | Spring Cloud Discovery Spring Cloud Netflix Eureka |
| 서비스 라우팅 | Spring Cloud API Gateway | |
| 로깅 패턴 | 로그 상관관계 | Spring Cloud Sleuth, Micrometer |
| 로그 수집 | Spring Cloud Sleuth / ELK / Prometheus | |
| 분산 추적 | Spring Cloud Sleuth / OpenZipkin | |
| 인증/인가 패턴 | 인증/인가 | Spring Cloud Security / Oauth2 / JWT 등 |
| 빌드/배포 패턴 | CI(Continuous Integration) | Jenkins |
| 컨테이너 기반 서버 관리 | Docker, Kubernetes | |
| 회복성 패턴 | 클라이언트 요청 부하 분산 | Spring Cloud Load Balancer |
| 회로 차단기, 폴백, 벌크헤드 | Resilience4j |