2023년 2월 19일
이벤트 기반 아키텍처 (Event Driven Architecture)
1. 이벤트 기반 아키텍처(Event Driven Architecture)의 개념 및 원칙
개념 | 원칙 | |
---|---|---|
분산 시스템 간 이벤트를 생성/수신 및 처리하여 이벤트 기반 상호작용하는 시스템 아키텍처 | Individually | 각 이벤트는 개별 전송 |
Push | 이벤트 생성자가 Push 방식 전달 | |
Immediacy | 실시간 응답 및 대응 처리 | |
One-Way | 생성자 → 수신자 단방향 전달 |
- 이벤트 객체는 메시지 형태로 전달, 여러 컴포넌트가 여러 이벤트에 대응하여 실행되도록 구조화
- 이벤트 기반 아키텍처를 활용한 서비스로 Apache Kafka 등이 대표적
2. 이벤트 기반 아키텍처의 메커니즘 및 구성요소
(1) 이벤트 기반 아키텍처의 이벤트 처리 메커니즘
- 이벤트에 대한 감지(Sense) 및 대응(Respond) 모델이며, 이벤트가 동시에 여러 곳으로 비동기 방식으로 전달
(2) 이벤트 기반 아키텍처의 구성요소
구분 | 구성요소 | 기능 |
---|---|---|
이벤트 처리 요소 측면 | Producer (Publisher) | – 이벤트 생성 및 전달하는 이벤트 생성자 |
Consumer (Subscriber) | – Topic을 구독하여 이벤트를 처리하는 수신자 | |
Event Broker | – 전달 필요한 이벤트를 Topic 별 구분하여 전달 | |
Topic | – Producer/Consumer 맵핑 위한 이벤트 구분자 | |
Event | – 상태나 데이터의 변경, 생성, 삭제(CUD)의 변화 | |
이벤트 처리 스타일 측면 | Simple Event Processing | – 각 이벤트가 직접 수행할 Action에 맵핑, 처리 |
Event Stream Processing | – 이벤트 중요도로 필터링하여 수신자에게 전송 | |
Complex Event Processing | – 평시 이벤트 패턴 감지, 복잡 이벤트 발생 추론 |
- 이벤트 기반 아키텍처는 Event Producer와 Consumer 간 독립적으로 이벤트 기반 상호작용하므로 시스템 간 관계와 무관하게 Micro Service 단위로 분리하여 확장성과 탄력성을 제공하여 MSA 기반 환경을 제공
3. 이벤트 기반 아키텍처의 장점 및 한계점
장점 | 한계점 |
---|---|
– 시스템 간 Decoupling으로 의존성 배제 가능 – 시스템 무관 약속된 메시지로 정보 교환 – Micro Service 단위 분리, 확장성, 탄력성 제공 | – Message Broker 장애 시 전체 장애 발생 가능 – Transaction 단위 격리, Retry/Rollback 고려 – 전체 Flow 파악 및 모니터링, 디버깅 어려움 |
- 이벤트 기반 아키텍처는 MSA 구조, 자원 상태 모니터링, 이기종 시스템 통합 등에 적합하지만, 신규 도입 시 이벤트 소스의 내구성, 이벤트 흐름 추적 등 Application 설계 방식 적합성 고려 필요
[참고]
- TIBCO, “이벤트 중심 아키텍처(EDA)”
- Carrey`s 기술블로그, “Event-Driven-Architecture란?”