티스토리 뷰

Backend/Springboot

[MSA] MSA 전환 - Spring Cloud란?

단미라이프 2024. 10. 9. 19:33
반응형

 

 

 

 

Spring Cloud는 분산 시스템의 개발을 위한 프레임워크입니다. 마이크로서비스 아키텍처(MSA)와 클라우드 네이티브 애플리케이션을 구축하기 위해 필요한 다양한 기능을 제공합니다. Spring Cloud는 여러 컴포넌트와 도구를 통합하여 서비스 간의 통신, 구성 관리, 서비스 발견, 장애 처리, API 게이트웨이 등을 지원합니다. 이번 글에서는 Spring Cloud를 활용해 MSA를 구축하는 데 필요한 주요 개념과 기능을 살펴보겠습니다.

 


1. Spring Cloud의 필요성

모던 애플리케이션은 더 이상 단일 모놀리식 아키텍처로 구축되지 않고, 다양한 서비스가 서로 협력하여 동작하는 마이크로서비스 아키텍처로 발전하고 있습니다. 이러한 아키텍처에서는 다음과 같은 문제들이 발생합니다.

 

  • 여러 서비스가 서로 어떻게 통신할 것인가?
  • 각 서비스의 위치를 어떻게 찾을 것인가?
  • 각 서비스의 설정을 어떻게 중앙에서 관리할 것인가?
  • 서비스가 장애가 발생했을 때의 대처 방안은 무엇인가?
  • 서비스 간의 통신을 어떻게 안전하게 할 것인가?

Spring Cloud는 이러한 문제를 해결하기 위한 다양한 기능과 패턴을 제공합니다.

 


2. Spring Cloud의 주요 구성 요소

 

https://spring.io/cloud

 

 

 

Spring Cloud는 여러 모듈로 구성되어 있으며, 각 모듈은 특정한 기능을 제공합니다. 주요 구성 요소는 다음과 같습니다.



2.1. 서비스 등록 및 발견
Eureka : Spring Cloud의 Eureka는 서비스 등록 및 발견 기능을 제공합니다. 각 서비스는 Eureka 서버에 자신을 등록하고, 다른 서비스들은 이를 통해 필요한 서비스의 위치를 찾아 호출할 수 있습니다. 이를 통해 서비스 간의 통신이 원활해집니다. 예를 들어, A라는 서비스가 B라는 서비스에 요청을 보내고 싶다면, A는 Eureka에 B의 위치를 등록하고, B는 Eureka에서 자신의 위치를 찾습니다. 이렇게 하면 서비스가 추가되거나 변경될 때도 쉽게 관리할 수 있습니다.

 

 


2.2. 부하 분산
Ribbon 및 Spring Cloud LoadBalancer : 많은 사용자가 동시에 서비스를 사용할 때, 특정 서비스에 부하가 걸리지 않도록 요청을 여러 서비스에 나누어 줄 수 있습니다. 이를 통해 시스템의 안정성과 성능을 향상시킬 수 있습니다.

 

 


2.3. API 게이트웨이
Spring Cloud Gateway : API 게이트웨이는 모든 외부 요청이 통과하는 진입점으로, 요청을 적절한 서비스로 라우팅하고 인증, 모니터링 등의 기능을 수행합니다. 이렇게 하면 보안과 관리가 더 쉬워집니다. 예를 들어, 소셜 미디어 플랫폼에서 모든 API 호출이 Gateway를 통해 처리되어 인증과 라우팅을 간편하게 할 수 있습니다.

 

 


2.4. 중앙 집중식 구성 관리
Spring Cloud Config : 중앙 집중식 구성 관리 기능을 제공하여 여러 서비스의 설정을 일관되게 관리할 수 있습니다. 이를 사용하면 데이터베이스 정보나 API 키와 같은 설정을 중앙에서 관리하고, 각 서비스가 필요할 때 이 정보를 가져올 수 있습니다. 

 

 


2.5. 분산 추적
Sleuth 및 Zipkin : 마이크로서비스 간의 호출 흐름을 추적하고 모니터링할 수 있는 기능을 제공합니다. 이를 통해 성능 문제를 진단하고 시스템의 상태를 파악하는 데 유용합니다.  예를 들어, 물류 관리 시스템에서 주문 처리 과정이 여러 서비스에 걸쳐 이루어질 때, 호출 흐름을 시각화하여 문제를 쉽게 찾아낼 수 있습니다.

 

 


2.6. 회로 차단기
Hystrix : 서비스 호출이 실패할 경우 시스템의 안정성을 유지하기 위해 회로 차단기 패턴을 적용합니다. 이를 통해 서비스 장애가 전파되는 것을 방지할 수 있습니다.

 

 


2.7. 메시징
Spring Cloud Stream : 이벤트 기반 아키텍처를 지원하여 서비스 간의 비동기 통신을 쉽게 구현할 수 있습니다. 사용자의 메시지를 Kafka와 같은 메시징 시스템으로 전송하고, 다른 사용자에게 실시간으로 전달할 수 있습니다. 예를 들어, 실시간 채팅 애플리케이션에서 메시지를 비동기적으로 처리합니다.

 


3. 마무리


Spring Cloud는 마이크로서비스 아키텍처 및 클라우드 네이티브 애플리케이션을 구축하는 데 필요한 다양한 도구와 기능을 제공합니다. 이를 통해 개발자는 복잡한 분산 시스템을 보다 쉽게 관리하고, 유연하고 확장 가능한 애플리케이션을 구축할 수 있습니다.

이후에는 Spring Cloud의 기능을 활용하여 MSA를 구축하는 구체적인 과정을 소개할 예정입니다. 각 기능이 어떻게 실제로 적용되는지 살펴보며, 효과적으로 마이크로서비스 아키텍처를 구현하는 방법을 함께 알아보겠습니다.

 

 

 

 

참고

스프링 클라우드 docs : https://spring.io/projects/spring-cloud

반응형
댓글
반응형
공지사항