Spring & SpringBoot
MSA 환경에서 Spring Clound의 Role
창따오
2025. 4. 15. 10:13
728x90
☁️ MSA에서 Spring Cloud는 별도로 배포될까?
마이크로서비스 아키텍처(MSA)를 구성할 때, Spring Cloud를 함께 사용하는 경우가 많습니다.
그런데 한 가지 궁금한 점이 생기죠:
“Spring Cloud는 마이크로서비스처럼 따로 배포해야 하나요?”
결론부터 말하자면:
✅ Spring Cloud는 별도로 배포되는 게 아니라, 각 서비스에 라이브러리로 포함되어 사용됩니다.
🔍 Spring Cloud란?
Spring Cloud는 마이크로서비스 아키텍처에서 필요한 기능(예: 설정 관리, 서비스 디스커버리, 게이트웨이, 로드 밸런싱 등)을 쉽게 구현할 수 있도록 도와주는 라이브러리 집합입니다.
자주 사용되는 Spring Cloud 기능들은 다음과 같습니다:
| 기능 | 설명 | 배포 방식 |
|---|---|---|
| Config Server | 설정 중앙 관리 | 별도 배포 (예: config-service) |
| Eureka Server | 서비스 디스커버리 | 별도 배포 (예: discovery-service) |
| Spring Cloud Gateway | API Gateway 역할 | 별도 배포 (예: gateway-service) |
| Feign, LoadBalancer | 서비스 간 통신 | 각 서비스에 포함 |
| Zipkin, Sleuth | 분산 추적 | 서버는 별도, 클라이언트는 포함 |
📦 Spring Cloud는 어떻게 사용될까?
Spring Cloud는 대부분 아래처럼 구성됩니다:
[config-service] ← Spring Cloud Config Server (별도 배포)
[discovery-service] ← Eureka Server (별도 배포)
[gateway-service] ← API Gateway (별도 배포)
[order-service] ← 마이크로서비스 (Spring Cloud 라이브러리 포함)
[member-service] ← 마이크로서비스 (Spring Cloud 라이브러리 포함)
[zipkin-server] ← 분산 추적 수집기 (별도 배포)
즉, order-service, member-service 등은 Spring Cloud 라이브러리를 의존성으로 추가하여 사용하는 것이고, 따로 띄우거나 배포하지 않습니다.
💡 Spring Cloud 구성요소 배포 정리
| 구성요소 | 배포 여부 | 설명 |
|---|---|---|
spring-cloud-starter-openfeign |
❌ | Feign 클라이언트 라이브러리. 각 서비스에 포함됨 |
spring-cloud-starter-config |
❌ / ✅ | 클라이언트는 포함, 서버는 별도로 배포 |
spring-cloud-starter-netflix-eureka-client |
❌ | 서비스 디스커버리 클라이언트. 서비스에 포함 |
spring-cloud-starter-netflix-eureka-server |
✅ | Eureka 서버는 별도 서비스로 배포 |
spring-cloud-starter-gateway |
✅ | Gateway도 독립 서비스로 배포 |
📌 정리하면...
- Spring Cloud는 대부분 라이브러리 형태로 포함되어 사용된다.
- Config Server, Discovery Server, Gateway 등은 독립적으로 배포된다.
- 각 마이크로서비스는 필요에 따라 Spring Cloud의 다양한 기능을 의존성으로 가져온다.
🧠 마무리
Spring Cloud는 MSA 환경에서 매우 강력한 도구입니다.
하지만 그 자체가 배포 대상은 아니라는 점, 그리고 어떤 기능이 별도 배포가 필요한지를 구분하는 게 중요합니다.