이벤트 기반 아키텍처 (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란?”

 

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^