본문 바로가기

공부내용 정리/스프링

[SpringBoot, MSA #1] 마이크로서비스 아키텍쳐, MSA란?

오늘은 예전에 정리해놓았던 내용을 다시 상기할겸 블로그에 재정리해보려고 합니다.

순서는 MSA 의 개념부터, 제가 테스트로 구현하고 설계해본 내용 정리입니다.

MSA란? Micro Service Architecture 마이크로서비스 아키텍쳐입니다.

예전에는 개발 방식이 하나의 애플리케이션에 모든 서비스를 모아놓은 모놀리틱 아키텍쳐스타일의 형태였다면 요즘은 클라우드 기반의 MSA 방식으로 변화하고 있습니다.

클라우드 서비스란? : https://www.redhat.com/ko/topics/cloud-computing/what-are-cloud-services

 

클라우드 서비스란? 현재 기술과 트렌드로 알아보는 솔루션 소개

클라우드 서비스: 클라우드 시스템과 플랫폼, 최신 트렌드 및 클라우드 서비스 이점으로 더 자세하게 유용한 정보 알아보기

www.redhat.com

 

MSA를 간단하게 설명하면 기존 애플리케이션이 모든 기능을 하나로 뭉쳐놓았던 것을 서비스 역할별로 분리한 것입니다.

이해를 위한 그림1
이해를 위한 그림2

그렇다면 기존의 모놀리틱 아키텍쳐 스타일과 MSA 방식의 비교점은?

  • 모놀리틱 아키텍쳐는 시스템의 특정 모듈을 수정하면 애플리케이션 전체에 영향이 있다.
  • 모놀리틱 아키텍쳐는 사용량의 증가로 트래픽이 증가할 경우 시스템 전체를 확장해야 한다.
  • 모놀리틱 아키텍쳐는 작업도중 특정부분에서 지연이 발생될 경우 애플리케이션 전체 서비스가 중지될 수 있다.
  • MSA는 서비스별 독립적인 개발로 빠른 확장이 가능해지고 CI/CD 프로세스에 적합하다.
  • MSA는 서비스별 스케일 조정이 가능하여 클라우드 환경에서 운영시 자원 사용을 최적화 할 수 있다.

물론 MSA 방식이 무조건 모놀리틱 아키텍쳐보다는 좋다는 것이 아님.

  • 서비스 단위로 개발되어 설계, 분리가 어려우며 분산되어있기때문에 테스트 환경 구축의 어려움
  • 분산되는 만큼 서비스별 네트워크 통신량의 증가로 성능저하가 발생할 수 있음.

 

다음글은 스프링클라우드 개념 설명부터 실제로 구현해본 코드를 설명해볼게요!

끝.