모노리틱 아키텍처 요약
- 하나의 어플리케이션 내에 모든 로직이 들어가있는 통짜 구조를 의미
- 전체 애플리케이션이 하나로 되어있어 보통 동일한 개발 툴을 사용
장점
- 배포 및 테스트도 하나의 앱만 하면 되기 때문에 개발 및 환경 설정이 간단
- 각 컴포넌트들이 함수로 호출되기 때문에 성능에 제약이 덜하고 운영 관리가 용이
- 작은 볼륨의 시스템을 개발할 때는 매우 유용
단점
- 빌드 테스트 시간이 길어집니다.
작은 수정에도 시스템 전체를 빌드해야 하며, 테스트 시간도 길어집니다.
요즘처럼 CI/CD가 강조되는 시점에서는 큰 문제가 될 수 있습니다. - 선택적인 확장이 불가능합니다.
- A를 수정하면 B, C, D 모두 수정해야 합니다.
- 이벤트 서비스에 트래픽이 몰려 해당 서버가 죽으면 다른 모든 서비스가 마비될 수 있습니다.
CI/CD : 앱 개발 단계에 자동화를 통합하는 앱 제공 방식
MSA(Micro Service Architecture)
- 여러 소프트웨어의 기능들을 독립적이고 느슨한 결합성으로 서비스를 제공하는 아키텍처
기존에 모노리틱 아키텍처에서 컴포넌트로 구분되던 기능들은 서비스라는 형태로 분리합니다.
그리고 API 를 통해 타 서비스와 통신하는 방식입니다.
배포시에도 의존성 없이 독립적인 배포가 가능합니다.
MSA 장점
서비스가 변경될 때 변경이 있는 부분만 따로 배포가 가능합니다.
MSA 단점
기본적으로 API 통신을 통해 서비스를 호출하기 때문에 모노리틱 아키텍저에 비해 시간이 소요됩니다.
또한 각 서비스가 독립된 서버로 분할 배치되기 때문 중복배치되는 모듈에 대해서는 그만큼 메모리 사용량이 증가합니다.
문제가 발생했을 시 여러개의 시스템을 동시에 살펴봐야 하기 때문에 프로젝트 테스트의 복잡성이 증가합니다.
모노리틱과 MSA 의 DB
- 모노리틱 서비스 : 하나의 통 데이터 베이스 (보통 RDBMS) 를 사용하는 경우 존재
- MSA(마이크로 서비스 아키텍쳐) : 수직 분할 원칙(Vertical Slicing) 에 따라서 독립된 DB 를 가집니다.
MSA는 다른 데이터베이스를 사용할 수도 있지만
다른 컴포넌트의 데이터를 API 통신을 통해서만 가져오기 때문에 성능상 문제를 야기할 수 있습니다.
이 기종 데이터베이스간의 트렌젝션을 묶을 수 없는 문제점이 발생할 수 있습니다.