본문 바로가기

따라해보자/엑스플랫폼

이벤트 기초 - EDA (이벤트 기반 아키텍처)

반응형
이벤트에 대한 내용은 기초가 부족하면 어느 단계에 가서 한계에 도달하게 됩니다.
일반적인 웹 프로그래밍 모델에 익숙해져 버리면
이벤트를 적절히 사용하기 보다는 기존에 익숙한 방법을 사용하게 됩니다.
하지만 이렇게 되는 경우 최적의 성능을 담보할 수 없으며 심지어는
잘못된 시점에 이벤트를 처리해서 돌이킬 수 없는 문제를 양산하곤 합니다.
(특히 이런 문제는 테스트 중에는 발견되지 않습니다. 이런 시나리오를 고민하지 않고
테스트 케이스를 만들거든요).

엑스플랫폼 애플리케이션은 EDA를 기본으로 하고 있다고 합니다.
이벤트 기반 아키텍처(Event Driven Architecture)의 약자로 프로그래밍에 한정되는 개념은 아니고
좀 더 범용적인 개념입니다.
위키피디아의 정의를 보면 자동차에 대한 예를 들고 있습니다.

판매중(for sale)인 자동차가 고객이 구매해서 판매됨(sold)으로 상태가 바뀌게 되면
자동차의 상태 변화를 감지한 시스템에서 이벤트를 발생하게 되고
재무, 마케팅, 관련 부서 시스템에 자동으로 전송되어지게 됩니다.
그리고 전송된 이벤트는 각 시스템의 요구에 따라 적절한 처리 과정을 거치게 됩니다.

http://onepixelahead.com/2010/08/11/leveraging-event-driven-architectures/

http://onepixelahead.com/2010/08/11/leveraging-event-driven-architectures/

 
여기서 중요한 것은 분산된 시스템간에 이벤트가 생성되고 전송되어 필요에 따라 처리되는 시스템 아키텍처라는 점입니다.
그리고 각 이벤트는 주목할 만한 상태의 변화(notable thing)를 의미합니다.

EDA를 구성하는 요소는 크게 3가지로 구분됩니다.
이벤트 생성자(Event generator), 이벤트 채널(Event channel), 이벤트 처리 엔진(Event processing engine)
이벤트 생성자는 시스템의 상태 변화를 감지하여 표준화된 형식의 이벤트를 생성합니다.
이벤트 채널은 이벤트를 각 시스템에 전달하는 역할을 합니다.
그리고 이벤트 처리 엔진에서는 수신된 이벤트를 적절하게 처리하고 필요에 따라 이벤트를 발생시키기도 합니다.

EDA를 적용하는 것은 서로 다른 트랜잭션을 연결해줄 수 있으며 이벤트 처리에 따른 흐름을 가지게 되어
익숙한 워크플로우 모델을 떠올리게 합니다.
EDA를 같이 이야기하면서 따라오는 것이 약결합(loosely coupled)에 대한 이야기입니다. 이벤트 생성자는 생성된 이벤트의 처리에 대한 책임을 지거나 관리하지 않습니다. 이벤트의 발생과 처리가 분리가 된 상태이며 이에 따른 유연성을 보장할 수 있습니다.

이 정도 기초적인 개념을 가지고 엑스플랫폼의 이벤트 모델을 접근한다면
좀 더 쉽게(?) 이해할 수 있지 않을까 싶습니다. 

참조
http://cafe.naver.com/xplatform101/33 
728x90