無테고리 인생살이

[아키텍처] MSA 등장배경을 이해하고, 모놀리식 아키텍처와 장단점 비교해보자 본문

기타

[아키텍처] MSA 등장배경을 이해하고, 모놀리식 아키텍처와 장단점 비교해보자

無격 2022. 11. 8. 15:46

Monolithic Architecture  vs MicroService Architecture

출처:https://velog.io/@1996yyk/MSA-%EB%9E%80

 

MSA 이란?

 = MicroService Architecture
컴포넌트 별로 서비스를 작게 나눈 형태
즉, 하나의 큰 애플리케이션을 다수의 작은 애플리케이션으로 모듈화한 형태


MSA 도입 전 주로 사용했던 아키텍처는?

Monolithic Architecture (모놀리식 아키텍처)

사전적 의미로는 단일체의, 한 덩어리로 뭉친

 

출처:http://clipsoft.co.kr/wp/blog

 

특징 

  • 전체 애플리케이션이 하나로 통합되어 있으므로, 빌드/테스트/배포가 하나의 애플리케이션에서 수행된다. 
    (웹 개발로 예를 들자면, 하나의 WAR 파일로 패킹됨)
  • 여러 컴포넌트가 하나의 서비스에 강하게 결합되어 있으므로 속도가 빠르다.
  • 비교적 적은 컴포넌트로 이루어진 소규모의 프로젝트에서 사용된다.


다수의 컴포넌트가 추가되어 프로젝트가 커졌을 경우, 모놀리식 아키텍처는 다음과 같은 문제가 발생한다. 

  • 빌드/테스트/배포의 수행 시간이 길어진다.
  • 한 컴포넌트 서비스에서 대용량 트래픽이 발생했을 시, 프로젝트 전체의 서버를 확장해야만 한다.
    (부분적 scale-out이 불가능하다 -> 리소스 낭비)
  • 한 컴포넌트에서만 문제가 발생하더라도, 서비스 전체를 사용할 수 없다. (서비스 전체 다운타임)

이러한 문제를 해결하기 위해,

MSA 등장

 

출처:http://clipsoft.co.kr/wp/blog

 

특징

  • 하나의 컴포넌트가 하나의 서비스 형태로 구현되며, 독립된 서버를 가질수 있고 독립적인 배포가 가능하다.
  • 컴포넌트 별로 서버를 구축할 수 있으므로, 각각 서비스의 부하에 따라 개별적 scale-out(부분적 확장)이 가능하다.
  • 하나의 DB에 데이터를 집중하지 않고, 각 서비스 별 DB를 운영할 수 있다.
    (이렇게 데이터가 분산되어 있으므로, 서비스를 독립적으로 개발, 배포, 운영 할 수 있다)

문제점

  • 서비스가 모두 세분화(분산)되어 있기 때문에, API를 통해서 서비스간 호출이 이루어지고 성능 문제가 발생할수 있으며 속도가 느리다.
  • 통합 테스트와 배포가 어렵고 복잡하다.