모노리틱 아키텍처와 MSA 차이점 정리

|

모노리틱 아키텍처 요약

모노리틱 아키텍처 요약
  • 하나의 어플리케이션 내에 모든 로직이 들어가있는 통짜 구조를 의미
  • 전체 애플리케이션이 하나로 되어있어 보통 동일한 개발 툴을 사용

장점

  • 배포 및 테스트도 하나의 앱만 하면 되기 때문에 개발 및 환경 설정이 간단
  • 각 컴포넌트들이 함수로 호출되기 때문에 성능에 제약이 덜하고 운영 관리가 용이
  • 작은 볼륨의 시스템을 개발할 때는 매우 유용

단점

  • 빌드 테스트 시간이 길어집니다.
    작은 수정에도 시스템 전체를 빌드해야 하며, 테스트 시간도 길어집니다.
    요즘처럼 CI/CD가 강조되는 시점에서는 큰 문제가 될 수 있습니다.
  • 선택적인 확장이 불가능합니다.
  • A를 수정하면 B, C, D 모두 수정해야 합니다.
  • 이벤트 서비스에 트래픽이 몰려 해당 서버가 죽으면 다른 모든 서비스가 마비될 수 있습니다.

CI/CD : 앱 개발 단계에 자동화를 통합하는 앱 제공 방식

MSA(Micro Service Architecture)

MSA 요약
  • 여러 소프트웨어의 기능들을 독립적이고 느슨한 결합성으로 서비스를 제공하는 아키텍처

기존에 모노리틱 아키텍처에서 컴포넌트로 구분되던 기능들은 서비스라는 형태로 분리합니다.
그리고 API 를 통해 타 서비스와 통신하는 방식입니다.

배포시에도 의존성 없이 독립적인 배포가 가능합니다.

MSA 장점

서비스가 변경될 때 변경이 있는 부분만 따로 배포가 가능합니다.

MSA 단점

기본적으로 API 통신을 통해 서비스를 호출하기 때문에 모노리틱 아키텍저에 비해 시간이 소요됩니다.
또한 서비스가 독립된 서버로 분할 배치되기 때문 중복배치되는 모듈에 대해서는 그만큼 메모리 사용량이 증가합니다.

문제가 발생했을 시 여러개의 시스템을 동시에 살펴봐야 하기 때문에 프로젝트 테스트의 복잡성이 증가합니다.

모노리틱과 MSA 의 DB

  • 모노리틱 서비스 : 하나의 통 데이터 베이스 (보통 RDBMS) 를 사용하는 경우 존재
  • MSA(마이크로 서비스 아키텍쳐) : 수직 분할 원칙(Vertical Slicing) 에 따라서 독립된 DB 를 가집니다.

MSA는 다른 데이터베이스를 사용할 수도 있지만
다른 컴포넌트의 데이터를 API 통신을 통해서만 가져오기 때문에 성능상 문제를 야기할 수 있습니다.

이 기종 데이터베이스간의 트렌젝션을 묶을 수 없는 문제점이 발생할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다