[MSA] 모놀리식 아키텍쳐와 MSA

Dawon Seo·2022년 8월 19일
0

MSA

목록 보기
1/4
post-thumbnail

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

  • 마이크로 서비스 아키텍쳐(MSA)와 반대되는 개념으로, MSA 개념이 등장하기 전 대부분의 웹 기반 애플리케이션은 모놀리식 아키텍처 형태로 개발되었다.
  • 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍쳐를 가질 때 모놀리식(Monolithic)하다고 한다.
  • 즉, 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태
  • 장점
      1. 개발 초기에 단순한 아키텍쳐 구조와 개발에 용이
      1. 어떤 서비스든지 개발되어있는 환경이 같아 복잡하지 않음
      1. End-to-End 테스트가 용이
  • 단점
      1. 프로젝트 규모가 커짐에 따라 애플리케이션 구동 시간이 늘어나고 빌드, 배포 시간도 길어짐
      1. 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포해야 함
      1. 많은 양의 코드가 몰려있어 유지 보수 힘듦
      1. 일부분의 오류가 전체에 영향을 미침
      1. 기능별로 알맞는 기술, 언어, 프레임워크를 선택하기 까다로움


마이크로 서비스 아키텍쳐(Micro Service Architecture, MSA)

  • 하나의 큰 애플리케이션을 여러 개의 작은 서비스 유닛으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처를 지칭
  • 각 마이크로 서비스는 상호 통신이 가능하며 이를 통해 전체 서비스를 구성
  • 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행됨
  • 장점
      1. 독립적인 서비스로 배포가 빠르고 모놀리식보다 가벼움
      1. 서비스별 개별 배포 가능하여 배포 시 전체 서비스의 중단이 없음
      1. 각 서비스에 따라 개별적으로 서버를 나눌 수 있어 메모리 및 cpu 관리에 효율적
      1. 각 서비스가 모듈화 되어있고 모듈끼리 RPC, Message-driven 이용하여 통신하기 때문에 각 서비스의 개발 속도가 증가
      1. 분리된 서비스로 개발할 수 있기 때문에 서비스마다 가장 적합한 기술 선택할 수 있음
      1. 서버 및 프로스 장애 시, 격리 및 복구가 쉬워 장애가 전체 서비스로 확장될 가능성 적음
  • 단점
      1. 각자 배포한 서비스에 대해 다른 서비스와 연계가 잘 되는지 확인해야 함
      1. 서비스 간 호출 시 REST API 사용으로 인한 통신 비용, Latency(지연시간)가 증가
      1. 서비스가 분산되어 있어 트랜잭션 관리, 장애 추적 및 테스트 등이 쉽지 않음
      1. 전체 서비스가 커짐에 따라 복잡도가 기하급수적으로 늘어날 수 있음

0개의 댓글