MSA - Spring Cloud 에 대해 알아보기

twonezero·2024년 7월 31일
0

MSA - Spring Cloud

목록 보기
1/3
post-thumbnail
post-custom-banner

MSA 란?

  • 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일
  • 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장될 수 있음
  • 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐

주요 특징

  • 독립적인 배포 가능성 : 다른 서비스에 영향을 주지 않고 업데이트 가능
  • 기술 스택의 다양성 : 각 서비스는 다른 기술 스택으로 구성 가능

모놀리식 & MSA

Monolithic Architecture

모놀리식 아키텍쳐

  • 위와 같이 모든 서비스가 하나의 어플리케이션 안에 존재함
  • 장점:
    • 간단한 배포
    • 단일 데이터베이스: 하나의 데이터베이스를 사용하여 데이터 일관성을 쉽게 유지할 수 있음
  • 단점:
    • 확장성 부족
    • 긴 개발 주기: 작은 변경 사항도 전체 애플리케이션을 다시 배포해야함
    • 유연성 부족: 새로운 기술 도입이 어렵고, 특정 모듈에 종속적임

MicroService Architecture

MSA

  • 여러 개의 독립적인 서비스로 구성된 애플리케이션
  • 장점:
    • 확장성: 특정 서비스만 확장하여 성능을 최적화할 수 있음
    • 독립적 배포: 개별 서비스의 변경 사항을 독립적으로 배포할 수 있음
    • 유연성: 서비스별로 적합한 기술 스택을 선택할 수 있음
  • 단점:
    • 복잡성 증가: 서비스 간 통신, 데이터 일관성 유지 등의 복잡성이 증가
    • 운영비용 증가: 각 서비스의 모니터링, 로깅 등을 개별적으로 관리해야 함

빠르게 개발이 필요한 신규 프로젝트에서는 MSA 보다 모놀리식 아키텍쳐를 적용, 개발하는 것이 더 효율적일 수 있다. 서비스 concept 에 맞는 아키텍쳐를 고민하는 것이 필요함

Spring Cloud

  • Spring Cloud는 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장
  • 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다.

주요 기능

  • 서비스 등록 및 디스커버리: Eureka, Consul, Zookeeper
  • 로드 밸런싱: Ribbon, Spring Cloud LoadBalancer
  • 서킷 브레이커: Hystrix, Resilience4j
  • API 게이트웨이: Zuul, Spring Cloud Gateway
  • 구성 관리: Spring Cloud Config
  • 분산 추적: Spring Cloud Sleuth, Zipkin
  • 메시징: Spring Cloud Stream

MSA 서비스 기본적인 구성도
Spring cloud 의 주요 기능들을 전반적으로 나타내 본 그림

  • EurekaRibbon, 서킷브레이커인 Resilience4j 등이 MSA 를 구성하는 데 있어 필수적인 요소이다.
  • Spring Gateway 또한 MSA 에서는 필수적인 역할을 한다.
    • 루팅 및 필터링: 요청을 받아 특정 서비스로 라우팅하고 필요한 인증 및 권한 부여를 수행
      • 특히 Auth Check Filter 등을 구성하여 각 서비스를 호출 하기 전에 권한 요소를 확인 할 수 있다.
    • 보안: 외부 요청으로부터 애플리케이션을 보호하고, 보안 정책을 적용함
    • 효율성: 마이크로서비스 아키텍처에서 필요한 요청 처리 및 분산 환경의 관리를 효율적으로 수행

앞으로 실제 프로젝트를 구성하며 Spring Cloud 의 기능을 하나씩 살펴보자.

profile
소소한 행복을 즐기는 백엔드 개발자입니다😉
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 8월 1일

TIL 너무 잘 작성해주셨군요! 앞으로도 꾸준히 작성해보아요~!

답글 달기