이벤트 기반 아키텍처란?
EDA(이벤트 기반 아키텍처)는 거래나 방치된 장바구니 등 비즈니스에서 중요한 '이벤트'를 감지하여 실시간으로 조치를 취하는 통합 모델입니다.
이벤트 기반 아키텍처 개요
비즈니스의 거의 모든 이벤트는 시간이 중요합니다. 고객이 온라인 구매를 할 때 센서가 임박한 오작동을 알리거나 주가가 하락하거나 보안 침해가 감지되면 즉각적인 조치를 취해야 합니다. EDA(이벤트 기반 아키텍처)가 바로 이때 활용됩니다. EDA는 이벤트 발생 시 이벤트를 생성, 탐지, 대응하여 고객 경험부터 운영 효율성 및 민첩성까지 모든 것을 개선할 수 있도록 지원합니다.
이벤트란?
우선, 몇 가지 기본 사항을 알아보겠습니다. 이벤트는 비즈니스에 중요한 모든 작업 또는 상태 변경을 의미합니다. 예를 들어, 신용 카드를 스와이프하거나 항공편 체크인을 하거나 비밀번호를 재설정할 때 또는 창고에서 재고를 업데이트할 때 등이 이에 해당합니다. 이벤트는 모든 조직에서 모든 산업에서 항상 발생합니다. 기업은 이벤트가 발생하는 즉시 포착하고 이에 대응할 수 있을 때 '이벤트 주도형'이 됩니다.
이벤트 기반 아키텍처란?
EDA(이벤트 기반 아키텍처)는 분산 시스템 전반에서 이벤트를 실시간으로 게시, 캡처, 처리, 대응할 수 있도록 구축된 통합 모델입니다. 한 애플리케이션에서 이벤트가 발생하면 이를 알아야 하는 다른 모든 애플리케이션에 자동으로 메시지가 전송되어 차례대로 조치를 취할 수 있습니다.
이벤트 기반 아키텍처는 분리되어 있으므로, 애플리케이션이 정보를 공유하고 작업을 완료하기 위해서는 서로에 대해 알아야 합니다. 이벤트 정보 또는 메시지는 앱 간에 자유롭게 자동으로 이동할 수 있습니다. 결과적으로 EDA 모델은 한 애플리케이션이 다른 애플리케이션에 필요한 특정 정보를 요청하고 다음 작업으로 넘어가기 전에 응답을 기다려야 하는 기존의 요청/응답 모델보다 훨씬 빠릅니다. 또한 EDA의 분리 특성으로 인해 마이크로서비스 통신의 선진사례로 널리 간주됩니다.
EDA는 어떻게 작동하나요?
이벤트 기반 아키텍처에서 애플리케이션은 이벤트 생산자(이벤트를 생성하거나 캡처하는 앱) 또는 이벤트 소비자(이벤트를 처리하고 조치를 취하는 앱) 역할을 합니다. 생산자는 메시징 지향 미들웨어라고도 하는 브로커를 통해 실시간으로 이벤트를 소비자에게 전송합니다. 그러면 소비자는 이벤트를 처리하고 다른 작업, 워크플로 또는 자체 이벤트를 트리거할 수 있습니다
생산자와 소비자가 서로 직접 통신하는 매우 단순한 아키텍처의 경우 브로커가 선택 사항일 수 있습니다. 그러나 대부분의 기업에서는 여러 소스가 여러 소비자에게 이벤트를 전송하므로 브로커 또는 브로커 네트워크('이벤트 메시'라고도 함)가 필요합니다. 브로커 또는 이벤트 메시를 사용하면 애플리케이션의 '느슨한 결합'이 생성됩니다.
이벤트 기반 아키텍처 패턴
이벤트 기반 아키텍처에서 이벤트의 전송에는 게시/구독과 이벤트 스트리밍이라는 두 가지 주요 패턴이 있습니다.
게시/구독(“pub/sub”) – 펍/섭(pub/sub)을 사용하는 경우 이벤트 생산자가 게시한 메시지와 채널을 이벤트 소비자가 구독합니다. 이벤트가 게시되면 브로커를 통해 모든 구독자에게 직접 전송됩니다. 중복을 방지하기 위해 이벤트는 한번 소비된 후에는 다시 재생하거나 액세스할 수 없으며, 브로커에 의해 삭제됩니다.
이벤트 스트리밍 – 이벤트 스트리밍을 사용하는 경우 생산자가 브로커에 이벤트의 전체 스트림을 게시합니다. 소비자는 스트림을 구독하고 스트림의 모든 부분을 읽을 수 있으며, 자신과 관련된 이벤트만 소비합니다. 이 패턴을 사용하면 이벤트가 소비된 후에도 브로커가 이벤트를 보관합니다.
이벤트 처리에 대한 3가지 접근법
이벤트가 소비자에게 도달한 후 처리하는 방식에는 단순 이벤트 처리, 복합 이벤트 처리, 이벤트 스트림 처리 등 세 가지 접근법이 있습니다.
- 단순 이벤트 처리: 소비자는 각 이벤트가 수신되는 대로 처리합니다.
- 복합 이벤트 처리: 소비자는 일련의 이벤트를 처리하여 패턴을 감지하고 그 결과에 따라 작업을 수행합니다.
- 이벤트 스트림 처리: 소비자는 데이터 스트리밍 플랫폼을 사용하여 실시간으로 일정한 데이터 흐름(이동 중 데이터)을 처리하고 이에 따라 조치를 취합니다.
기업은 개별적인 요구와 적용 사례에 따라 이벤트 처리에 대한 접근법을 선택합니다.
이벤트 기반 아키텍처의 적용 사례 및 예시
이벤트 기반 아키텍처는 은행부터 소매업에 이르기까지 모든 산업에서 적용 사례가 다양합니다. 요식업 사례:
한 대학생이 우버 이츠(Uber Eats)와 같은 음식 배달 앱을 통해 피자를 주문합니다. 앱은 그의 기본 정보(이름, 주소, 결제 정보, 주문)를 수집하고 '피자 주문' 이벤트를 게시합니다.
피자 레스토랑은 해당 이벤트를 구독하고 주문을 처리한 후 음식 배달 서비스에 자체 '주문 준비' 이벤트를 다시 게시합니다.
그런 다음 서비스는 배달 기사를 배정하고, 도착 예정 시간을 예약하고, 고객에게 피자가 배송 중임을 알립니다.
e-커머스에서의 EDA 예시:
온라인 쇼핑객이 e-커머스 사이트에서 신용카드 정보를 입력하면 '결제 완료' 이벤트가 게시됩니다.
결제 시스템이 해당 이벤트에 구독하고 결제를 처리한 후 성공 또는 실패를 나타내는 자체 '결제 처리 완료' 이벤트를 발행하고 이를 다시 웹사이트 UI로 라우팅합니다.
UI는 고객에게 결제 상태를 표시하고 다음 단계를 안내합니다.
EDA의 다른 예시는 다음과 같습니다.
온라인 쇼핑객이 제품을 클릭하면 시스템이 유사한 품목을 기반으로 상품 추천을 생성하여 응답하는 경우
고객이 은행에 수표를 입금하면 시스템이 자동으로 고객의 계좌에 입금을 전기하는 경우
소매업체가 전 세계 거래에서 사기 여부를 선별하고 의심스러운 구매를 신용 카드 회사에 신고하는 경우
제조업체가 장비의 스트리밍 IoT 데이터를 모니터링하고 잠재적인 유지보수 문제 또는 실패에 대한 알림을 받는 경우
이벤트 기반 아키텍처의 이점
이벤트 기반 아키텍처에는 많은 이점이 있습니다. 3대 이점은 다음과 같습니다.
- 실시간 워크플로 및 응답성. EDA는 이벤트 발생 시 이벤트를 모니터링하고 신속하게 대응할 수 있으며, 로봇 프로세스 자동화(RPA)를 사용하여 워크플로를 가속화하고 실시간으로 다음 단계를 트리거할 수 있는 경우가 많습니다. 이는 특히 수요가 급증하는 시기, 예를 들어 주요 할인 행사나 연휴 기간에 매우 중요합니다. 이러한 대응 능력은 일상적인(즉, 피크가 아닌 기간) 워크플로에도 적용되어 공급망 자동화부터 사기 탐지에 이르기까지 모든 것을 개선할 수 있습니다.
- 비동기 메시징. EDA의 애플리케이션은 비동기 방식으로 통신하므로, 생산자는 소비자가 이벤트 메시지를 수신할 때까지 기다리지 않고 게시할 수 있습니다. 이를 통해 애플리케이션은 기다릴 필요 없이 다른 작업으로 이동할 수 있을 뿐 아니라 통합이 간소화됩니다.
- 분리 및 느슨한 결합. EDA의 애플리케이션은 분리되거나 느슨하게 결합되어 있으며 서로의 가용성에 의존하지 않습니다. 그리고 독립적으로 업데이트, 테스트 및 배포할 수 있습니다. 또한 독립적으로 장애가 발생할 수 있으므로 기존 모델보다 내구성과 지속성이 뛰어난 아키텍처입니다. 또한 분리하면 필요에 따라 게시자와 소비자를 쉽게 추가할 수 있으므로 변경 사항이 있을 때마다 코드를 다시 작성할 필요가 없습니다.
결론
이벤트 메시는 다양한 하이퍼스케일러와 프라이빗 클라우드 환경에서 배포 옵션을 제공합니다. 그리고 프라이빗 클라우드 또는 퍼블릭 클라우드 환경에 배포된 이벤트 브로커의 분산 메시를 형성하도록 구성할 수 있습니다. 이벤트 메시는 이벤트 스트리밍, 이벤트 관리, 모니터링, 역동적 메시지 라우팅 및 세분화된 필터링 같은 고급 기능을 포함한 모든 용도의 이벤트 서비스를 제공합니다.