이벤트 중심 아키텍처란 무엇입니까?
이벤트 중심 아키텍처 (EDA)는 조직이 "이벤트" 또는 중요한 비즈니스 순간(거래, 사이트 방문, 장바구니 포기 등)을 감지하고 실시간으로 또는 준실시간으로 조치를 취할 수 있게 해주는 소프트웨어 설계 패턴입니다. 이 패턴은 서비스가 다음 작업으로 이동하기 전에 응답을 기다려야 하는 전통적인 "요청/응답" 아키텍처를 대체합니다. 이벤트 중심 아키텍처의 흐름은 이벤트에 의해 실행되며 이벤트에 응답하거나 이벤트에 대한 응답으로 일부 작업을 수행하도록 설계되었습니다.
이벤트 중심 아키텍처를 종종 "비동기" 통신이라고 합니다. 다시 말해서 발신자와 수신자는 서로 다음 작업으로 이동하기 위해 서로 기다릴 필요가 없습니다. 시스템은 해당 메시지에 종속되지 않습니다. 예를 들어, 전화 통화는 전통적인 "요청/응답" 아키텍처의 라인을 따라 동기식 또는 그 이상으로 간주됩니다. 누군가 당신에게 전화를 걸어 무언가를 요청하고, 요청자는 응답자가 작업을 완료하는 동안 기다린 다음에 두 당사자는 전화를 끊습니다. 비동기식의 예는 문자 메시지입니다. 메시지를 보내고 어떤 경우에는 누구에게 메시지를 보내고 있는지 또는 누군가가 보고 있는지조차 알지 못하지만 응답을 기다리고 있지는 않습니다.

이벤트 중심 아키텍처의 진화
지난 몇 년 동안 저장 데이터(서비스 지향 아키텍처) 중심에서 이벤트(이벤트 중심 아키텍처) 중심으로의 이동이 진행되어 왔습니다. 우리는 데이터와 데이터 레이크를 축적하는 것에서 이동중인 데이터에 중점을 두고 장소를 이동하는 동안 데이터를 추적하고 있습니다. 전통적으로 대부분의 시스템은 데이터가 사실의 원천인 데이터 중심 모델로 생각할 수 있는 방식으로 작동합니다. 이벤트 중심 아키텍처로의 전환은 데이터 중심 모델에서 이벤트 중심 모델로 이동하는 것을 의미합니다. 이벤트 중심 모델에서 데이터는 여전히 중요하지만 이벤트가 가장 중요한 구성 요소가 됩니다. 반면 서비스 지향 모델에서는 데이터 손실을 방지하는 것이 가장 중요했습니다. 이벤트 중심 아키텍처에서 우선 순위는 이벤트가 발생할 때 이벤트에 대응하는 것입니다. 이벤트와 관련하여 수익 감소 법칙이 있기 때문에 시간이 지날 수록 가치가 떨어집니다. 그러나 오늘날 서비스 지향 아키텍처와 이벤트 중심 아키텍처는 종종 함께 사용됩니다.
이벤트 중심 아키텍처는 종종 사물을 추적하는 로그 유추 방식을 사용합니다. 분석가들은 사건을 발생한 불변의 사건으로 간주합니다. 그리고 과거에 무슨 일이 있었는지 알고 싶다면 돌아가서 로그를 재생할 수 있습니다. 반면 데이터 중심 모델에서는 현재의 데이터 상태에 주로 집중합니다. 그리고 분석가들이 데이터 중심 아키텍처와 이벤트 중심 아키텍처의 차이점을 설명할 때 사용하는 마지막 유추는 종종 정보 저장소와 기업 전체에 메시지를 전달하는 신경계 사이에서 비교한다는 것입니다.
이벤트 중심 아키텍처를 사용하는 경우 이벤트 알림을 생성하고 보내는 이벤트 생성자가 있고 이벤트 수신이 처리 논리를 트리거하는 이벤트 소비자가 하나 이상 있을 수 있습니다. 예를 들어 Netflix가 방금 새 영화를 업로드했다고 가정해 보겠습니다. 해당 알림을 수신하거나 대기하는 여러 애플리케이션이 있을 수 있으며,이 경우 자체 내부 시스템이 해당 이벤트에 대한 자체 정보를 사용자에게 게시하도록 트리거합니다. 이는 애플리케이션이 여전히 실행 상태에 있고 이 이벤트를 수신 중일지라도 기다리는 동안 마비되지 않는다는 점에서 기존 요청-응답 메시징과 다릅니다. 또한 메시지가 게시될 때 응답할 수 있습니다. 따라서 많은 서비스가 병렬로 실행될 수 있습니다.
이벤트란 무엇입니까?
이벤트는 일부 주요 비즈니스 시스템의 상태 변경으로 정의됩니다. 예를 들어, 누군가가 제품을 구입하거나, 누군가가 비행기표를 체크인하거나, 버스가 어딘가에 늦게 도착하는 것 등입니다. 그리고 이렇게 생각하면 이벤트는 어디에나 존재하고 어떤 산업에서든 끊임없이 일어나고 있습니다. 모든 비즈니스에 널리 퍼져 있습니다. 여기에는 생성, 게시, 감지 또는 사용되어 메시지를 생성하는 모든 것을 이벤트로 간주합니다. 이벤트가 발생하는 동안 메시지는 발생을 전달하는 이동 알림이기 때문에 이벤트는 메시지와 별개입니다. 이벤트 중심 아키텍처에서 이벤트는 발생에 대한 응답으로 하나 이상의 작업 또는 프로세스를 트리거 할 가능성이 높습니다. 이벤트의 예는 다음과 같습니다:
- 비밀번호 재설정 요청
- 도착한 패키지가 목적지로 배달됨
- 식료품 창고에서 재고가 업데이트됨
- 무단 액세스 시도가 거부됨
이러한 각 이벤트는 응답으로 하나 이상의 작업 또는 프로세스를 트리거할 수 있습니다. 모니터링 목적으로 이벤트를 기록하는 것도 한 가지 응답일 수 있습니다. 이 밖에도 다음이 포함됩니다:
- 비밀번호 재설정을 위한 이메일이 고객에게 전송
- 판매 티켓이 마감됨
- 더 많은 상추(또는 부족한 재료)를 주문함
- 계정이 잠기고 보안 담당자에게 알림이 전송됨
이벤트 중심 아키텍처에 의해 이벤트 알림이 전송되면 시스템은 상태 변경과 같은 일이 발생했음을 캡처하고 요청할 때마다 요청하는 사람에게 응답을 보내기를 기다립니다. 해당 메시지를 수신한 애플리케이션은 응답하거나 대기중인 상태 변경이 발생할 때까지 응답을 기다릴 수 있습니다.
이벤트 중심 아키텍처를 기반으로 구축된 애플리케이션은 보다 민첩하고 확장 가능하며 상황에 맞는 응답성이 뛰어난 디지털 비즈니스 애플리케이션을 지원합니다.

이벤트 중심 아키텍처는 어떻게 작동합니까?
이벤트 중심 아키텍처의 구성 요소에는 생산자, 소비자, 브로커의 세 부분이 포함될 수 있습니다. 브로커는 선택 사항일 수 있습니다. 특히 단일 생산자와 단일 소비자가 서로 직접 통신하고 생산자가 소비자에게 이벤트를 보내는 경우입니다. 예를 들어 데이터베이스 또는 데이터웨어 하우스로만 보내는 생산자는 분석을 위해 이벤트를 수집하고 저장합니다. 가장 일반적으로 기업에서는 이러한 이벤트의 일부 또는 전체에 관심이 있는 한 명 이상의 소비자와 함께 모든 유형의 이벤트를 보내는 여러 출처를 가집니다.
예를 살펴보겠습니다. 소매 업체라면 전 세계 모든 매장에서 발생하는 모든 구매를 수집할 수 있습니다. 사기를 감시하는 이벤트 중심 아키텍처에 이를 제공하고 신용 카드 프로세서 또는 다음에 진행해야 하는 모든 조치로 보냅니다. 제조업체의 경우 온도 및 압력과 같은 사실을 알려주는 모든 종류의 데이터가 장비에서 나오므로 이러한 이벤트를 실시간으로 모니터링하고 데이터가 알려주는 내용에 따라 고장 예측 또는 유지 관리 일정과 같은 조치를 취할 수 있습니다. .