EDA(Event Driven Architecture)란?

고승우·2023년 6월 14일
0
post-thumbnail

EDA(Event Driven Architecture)

Event Driven은 IT 영역에서 오래 사용된 키워드며, 현재도 그 영향력이 대단하여 2018년 Gather에서 선정한 유망한 기술 트렌드 중 하나로 뽑히기도 했다. EDA는 event 기반의 microservice들이 느슨하게 결합된(loosely coupled) 시스템이다. 많은 event들은 시스템에 의해 published(발행) 되고 이러한 event들은 subscribes에 의해 소비된다. 즉, 분산된 시스템 간에 이벤트를 생성, 발행 (publishing)하고 발행된 이벤트를 필요로하는 수신자에게 전송된다.!
업로드중..

각각 application끼리의 의존성은 다르다. 몇몇은 매우 significant(중요), vital(필수적)할 수 있고, 몇몇은 몇가지 feature만이 필요할 수 있다. 독립적인 특징을 나누는 것이 유리할 수 있다.


event란?

message는 한 시스템이 다른 시스템에 보내는 처리되어야 할 데이터의 모든 요구 사항을 포함한 request이다. 이러한 이유로 message에는 다양한 타입들이 존재한다.
event는 일종의 message이다. event는 시스템에서 현재 일어나고 있는 일을 묘사한다.

  • service1: 주문이 들어왔어
  • service2: 내가 주문은 받았어 너가 돈을 좀 받아
  • service3: 응, 내가 돈 받을게

EDA의 구성요소

  • Event generator: 시스템 내,외부의 상태 변화를 감지하여 표준화된 형식의 이벤트를 생성
  • Event channel: 이벤트를 필요로 하는 시스템까지 발송
  • Event processing engine: 수신한 이벤트를 식별, 적절한 처리

Event Processing Style

Simple event processing

각각의 이벤트가 직접적으로 수행해야할 action과 매핑되어 처리 된다.
실시간으로 작업의 흐름을 처리할 때 사용되며, 이벤트 처리 시간과 비용의 손실이 적다.

Event stream processing

이벤트를 중요도에 따라 필터링하여 걸러진 이벤트만을 수신자에게 전송.
실시간으로 정보의 흐름을 처리할 때 사용되며, 기업에 적용될 경우 신속한 의사 결정을 가능케한다.(BAM)

Complex event processing

일상적인 이벤트의 패턴을 감지하여 더 복잡한 이벤트의 발생을 추론하는 것.
예를 들어 ‘주식의 등락’이라는 일상적인 이벤트의 패턴을 감지하여 ‘투자 적기’라는 상위의 이벤트를 추론해 낼 수 있다.


EDA의 장단점

장점

  • Decoupling - 시스템 간의 느슨한 결합이 가능하므로 분산 시스템, Microservice 환경에서 의존성을 배제 할 수 있다.
  • 다른 시스템의 정보를 알 필요가 없다. - 약속된 Event message를 가지고 상호 정보를 교환한다.
  • micro service 단위로 시스템을 분리하기 쉽기 때문에 확장성, 탄력성을 고려하기 쉽다.

단점

  • Broker Dependency - Event를 전송하기 위한 Message Broker에 대한 의존성이 커지기 때문에, Message Broker 장애 상황시 전체 장애로 이어질 수 있다.
  • Transaction 단위가 격리되기 때문에 서비스 장애 발생시 retry/rollback을 고려해야 한다.
  • 시스템 전체 Flow를 파악하기 어렵다. - 명확한 Flow를 보기 위해서는 시스템을 모니터링하여야 한다.
  • 디버깅이 어렵다.
profile
٩( ᐛ )و 

0개의 댓글