개요
Event Driven Architecture는 MSA에서 Producer가 여러 Consumer 서비스를 직접 호출해야 했던 구조에서 Event Broker 하나에만 이벤트를 전송하면 되는 구조로 개선했다는 것이 가장 큰 특징이다. 이로 인해 서비스가 느슨하게 결합(Loosely Coupled)되고, 결합도가 낮아진다. 다음 문단부터 정리할 EDA의 장단점은 이러한 EDA의 특징 때문에 생기는 것이라고 이해할 수 있다.
장점
- 확장성
- 시스템에 부하가 증가할 때 Producer와 Consumer를 scale out(수평적 확장) 할 수 있다.
- Producer가 Counsumer를 직접 호출하지 않기 때문에 시스템을 크게 재설계하지 않아도 된다
- 유연성
- 새로운 이벤트나 처리 로직을 추가할 때 기존 컴포넌트에 미치는 영향을 최소화하면서 구현할 수 있다
- => Loosely Coupled (느슨한 결합) 기반
- Producer에 Consumer를 호출하는 코드를 추가하지 않아도 된다
- 새로운 이벤트나 처리 로직을 추가할 때 기존 컴포넌트에 미치는 영향을 최소화하면서 구현할 수 있다
- 복원력
- 장애 격리
- Consumer를 직접 호출하는 코드가 없기 때문
- 한 서비스에서 장애가 발생했을 때 전체 시스템에 미치는 영향을 최소화 할 수 있다
- 빠른 복구
- 시스템 다운타임 최소화
- 전체 시스템 가용성에 영향을 주지 않고도 시스템의 장애 조치 및 업그레이드 가능
- ex) 이커머스 서비스에서 광고 서비스에 장애가 발생했을 때 주문 서비스는 정상적으로 동작하는 시스템
- => 가용성 극대화
- 장애 격리
단점
EDA의 장점과 trade-off 관계
- 복잡성
- 비동기적 특성 및 분산으로 인해 구조적, 관리적 복잡성을 띄게 됨
- 책임, 역할 분리된 서비스가 loosely coupled하게 연결되었기 때문
- 시스템의 관리 포인트, 디버깅, 모니터링 비용이 동기식 시스템보다 높아진다
- 분산 아키텍처가 가지는 관리의 어려움, 설계 및 구현 비용 수반
- 비동기적 특성 및 분산으로 인해 구조적, 관리적 복잡성을 띄게 됨
- 데이터 일관성
- 여러 서비스에서 데이터 일관성을 보장해야 함
- 특정 서비스에서는 데이터가 변경되지 않는 문제
- 이벤트가 순서대로 처리되지 않을 수 있기 때문에 매우 어려운 과제
- ACID 속성을 EDA에서는 보장할 수 없음
- 데이터 원자성 등
- 여러 서비스에서 데이터 일관성을 보장해야 함
'MSA > Event Driven Architecture' 카테고리의 다른 글
[Kafka] 개요, 사용 목적, 특징, 구성 (0) | 2024.07.14 |
---|---|
[MSA] Event Driven Architecture (0) | 2024.04.21 |