Computer Science/Architecture

Monolithic Architecture vs MSA(Micro Service Architecture)

데비시 2023. 7. 3. 00:01

MSA 정의

  • MSA는 1개의 시스템을 독립적으로 배포 가능한 각각의 서비스로 분할한 것입니다.
  • 각 서비스는 API를 통해 데이터를 주고 받으며 1개의 큰 서비스를 구성합니다.
  • Monolithic Architecture(모놀리식 아키텍쳐)의 한계점을 극복하고자 등장하였습니다.
    • 실제로 모놀리식 아키텍쳐가 너무 커졌다면 MSA로 교체하는 것이 이로울 수 있습니다.
    • 대표적으로 넷플릭스, 아마존 등의 기업이 이 구조로 교체하고 서비스 속도 등에서 굉장한 이점을 보았습니다.

 

모놀리식 아키텍쳐의 장점

  • 손쉬운 배포 - 파일 또는 디렉토리가 하나이기 때문에
  • 쉬운 개발 - 하나의 코드 베이스를 이용하기 때문에 개발이 쉽고 디버깅이 쉽다.
  • 성능 - 단 하나의 API로 MSA의 여러 API가 수행하는 것처럼 기능을 수행할 수 있다.
  • 테스트 간소화 - 중앙집중장치이기때문에 더 빠른 테스트가 가능

 

모놀리식 아키텍쳐의 단점

  • 느린 개발 - 대규모 애플리케이션에서는 개발이 복잡해지고 느려집니다.
  • 확장성 - 개별 컴포넌트는 확장할 수 없습니다.
  • 안정성 - 모듈에 오류가 있다면 애플리케이션 전체가 가동되지 않을 수 있습니다.
  • 기술 채택의 장벽 - 언어와 프레임워크를 자유롭게 찍을 수 없습니다.
  • 배포 - 배포 시 전체 모놀리식 아키텍쳐를 다시 배포해야합니다.

 

MSA의 장점

  • 일부 서비스에 장애가 발생하여도 전체 서비스는 장애가 발생하지 않습니다.
  • 각 서비스는 서로 다른 언어와 프레임워크로 작성될 수 있습니다.
  • 서비스 확장의 용이합니다.

 

MSA의 단점

  • 서비스가 분리되어 있어, 테스팅과 트랜잭션 처리가 어렵습니다.
  • 서비스가 API로 통신하기 때문에 그에 따른 비용이 발생합니다.
  • 서비스 간의 호출이 연속적이기 때문에 디버깅 및 에러 트레이싱이 어렵습니다.

 

MSA가 모놀리식의 진화인가?

  • 둘은 다른 아키텍처 방식이지 진화의 전, 후라 보기는 어렵다.
  • 실제로, 프로젝트 규모에 따라서 모놀리식이 훨씬 효율적인 경우도 많고 MSA는 굉장히 복잡하고 어렵기 때문에 잘못 설계한 MSA를 운영하다 다시 돌아간 사례도 적지 않게 있다.
  • 그렇지만, MSA는 애자일 방식에 굉장히 적합하며 프로젝트 규모가 클수록 효율성과 속도가 높다. 시장이 원하는 흐름을 따라갈 수 있는 아키텍처이다.
  • 따라서, 프로젝트 규모가 크고 기업이 충분히 MSA를 이해하고 준비하였다면 바꾸는 것이 더 좋다 생각됩니다

 

참고문서

기술블로그, 이미지 출저 : https://mangkyu.tistory.com/88

atlassian, Monolithc vs MSA : https://www.atlassian.com/ko/microservices/microservices-architecture/microservices-vs-monolith

it daily, MSA vs Agile : http://www.itdaily.kr/news/articleView.html?idxno=208378