-
MSA와 Event-Driven 아키텍처📖 개발 공부 2023. 9. 3. 16:03
MSA(Microservice Architecture)는 무엇인가
- 시스템을 독립적인 단위의 작은 서비스들로 분리한다. (크기보다는 독립성이 중요)
⇒ 독립적인 단위: 다른 서비스와 다른 이유로 변경되고, 다른 속도로 변경되는 단위 - 격리된 환경에서 각자의 역할을 수행한다.
- 각 서비스들은 API(인터페이스)를 통해서만 통신한다.(다른 서비스의 DB 접근 불가)
기존의 Monolithic 아키텍처
모든 기능들이 한 서버 안에 들어가 있고, 공유 데이터베이스를 사용한다.
MSA 아키텍처
기능 별로(도메인 별로) 서버가 나뉘어있고, 각자의 데이터베이스를 사용하며 API를 이용하여 통신한다.
MSA로 얻으려는 것
- 모듈성(높은 응집도, 낮은 결합도)
- 서비스 별로 독립적인 개발과 배포가 가능하다.
- 서비스(코드) 크기가 작아져 이해가 쉽고 유지보수가 용이하다.
- 더 빠른 개발/테스트/배포가 가능하다.
- 확장성(서비스 별로 개별 확장이 가능하다.)
- 결함 격리(일부 서비스 실패가 전체 시스템 실패로 이어지지 않는다.)
MSA 단점
분산 시스템의 단점을 그대로 가진다.
- 통합 테스트가 어렵다.
- 모니터링과 디버깅의 복잡도 증가한다.
- 트랜잭션 관리의 어려움
- 서비스간 통신 구조에 대한 고민이 필요하다.
⇒ 동기 vs 비동기, 프로토콜, 통신 브로커 사용 등
Event-Driven 아키텍처란?
- 분산 시스템에서의 통신 방식을 정의한 아키텍처로, 이벤트의 생성/소비 구조로 통신이 이루어진다.
- 각 서비스들은 이벤트 저장소인 Even-broker와의 의존성만 가진다.
Event-Driven 아키텍처의 모습
각 서버들은 Event Broker에 이벤트를 생산/소비함으로써 통신한다.
Event-Driven 아키텍처의 장점
- 이벤트 생산자/소비자 간의 결합도가 낮아짐(공통적인 Event-broker에 대한 결합만 있다.)
- 생산자/소비자의 유연한 변경(서버 추가, 삭제 시에 다른 서버를 변경할 필요가 적어진다.)
- 장애 탄력성(이벤트를 소비할 일부 서비스에 장애 발생해도 이벤트는 저장되고 이후에 처리된다.)
Event-Driven 아키텍처의 단점
- 시스템의 예측가능성이 떨어진다. (느슨하게 연결된 상호작용에서 기인한다)
- 테스트가 어렵다.
- 장애 추적이 어렵다.
728x90반응형'📖 개발 공부' 카테고리의 다른 글
[MongoDB] Replica Set (레플리카셋) (0) 2023.09.05 [MongoDB] MongoDB 배포형태 (Standalone/Replica Set/Shared Cluster) (0) 2023.09.05 [개발일지] MongoSocketException 이슈 해결기 (0) 2023.08.30 [Cloud Design Patterns] Asynchronous Request-Reply pattern 비동기 요청/응답 패턴 (feat. HTTP 폴링, 웹소켓) (0) 2023.08.29 What's Wrong with Layers? (계층형 아키텍처의 문제점) (0) 2023.08.23 - 시스템을 독립적인 단위의 작은 서비스들로 분리한다. (크기보다는 독립성이 중요)