본문 바로가기

Framework/Spring

[ Spring ] Spring cloud - 스프링 클라우드 알아보기

반응형

🌱 Spring Cloud란?

Spring Cloud는 마이크로서비스 아키텍처(MSA) 환경에서 자주 사용되는 공통 문제들을 해결할 수 있도록 도와주는 스프링 프로젝트 모음입니다.
서비스 간 통신, 구성 관리, 장애 대응, 로드 밸런싱, 서비스 등록/탐색 등 클라우드 기반 애플리케이션을 쉽게 구축하고 운영할 수 있도록 지원합니다.


 

1. 주요 목적

  • 마이크로서비스 간 서비스 디스커버리 및 라우팅
  • 중앙 집중형 설정 관리
  • 장애 복구, 분산 추적, 보안, 모니터링 등 다양한 클라우드 환경 대응
  • Netflix OSS 및 다양한 클라우드 벤더(AWS, Azure 등)와 통합

 

2. 구성 요소

모듈 설명
Spring Cloud Config 중앙 서버에서 설정 파일을 관리하고 각 서비스에 전달
Spring Cloud Netflix Eureka 서비스 등록 및 탐색 (Service Discovery)
Spring Cloud Gateway API 게이트웨이 역할, 요청 라우팅 및 필터 처리
Spring Cloud OpenFeign 서비스 간 HTTP 통신을 인터페이스 기반으로 쉽게 구현
Spring Cloud Circuit Breaker 장애가 발생한 서비스 호출을 차단하고 대체 로직 처리 (Hystrix, Resilience4j 기반)
Spring Cloud Sleuth 로그에 trace ID를 붙여 분산된 로그 추적 가능
Spring Cloud Bus 설정 변경 정보를 여러 서비스에 브로드캐스트 (RabbitMQ/Kafka 사용)
Spring Cloud Stream 메시지 기반 마이크로서비스를 위한 통합 메시징 지원
Spring Cloud Security OAuth2, JWT 기반 보안 구성 지원

 

3. 예시 시나리오

  1. 클라이언트가 /user 요청
  2. Gateway가 요청을 받아서 내부 서비스로 전달
  3. Gateway는 Eureka를 통해 실제 사용자 서비스의 위치를 파악
  4. Feign Client를 통해 다른 서비스와 통신
  5. Circuit Breaker가 실패 상황을 감지해 대체 응답 처리
  6. Config Server에서 설정 파일을 받아 서비스에 적용
  7. 모든 요청은 Sleuth + Zipkin으로 추적 가능

 

4. 실제 구성 예

[Config Server]
      ↓
[Discovery Server (Eureka)]
      ↓
[Gateway]
  ├──> User Service
  └──> Order Service
         └──> Feign → Payment Service

 

5. 장점

  • MSA 시스템 구축 시 복잡한 인프라 기능을 쉽게 구성할 수 있음
  • 대부분의 기능이 Spring Boot 기반으로 간편하게 연동 가능
  • 다양한 오픈소스 프로젝트(Netlix OSS, HashiCorp, RabbitMQ 등)와 통합 지원
  • 클라우드 네이티브 아키텍처에 최적화

Spring Cloud는 마이크로서비스 환경에서 인프라 구성 부담을 줄이고, 서비스 간 연결성과 유연성을 높여주는 핵심 도구입니다.
복잡한 분산 시스템을 좀 더 쉽게 관리할 수 있게 해주며, 스프링 생태계에서 자연스럽게 녹아들 수 있는 장점이 있습니다.

반응형