이벤트 기반 아키텍처
이벤트 기반 아키텍처(EDA)는 시스템 구성 요소들이 이벤트(특정 동작이 발생했다는 개별 알림)를 통해 소통하는 소프트웨어 설계 패턴입니다. 이를 통해 시스템 간 결합도를 낮추고, 실시간 반응성과 확장 가능한 반응형 시스템을 구현할 수 있습니다.
이해하기 이벤트 기반 아키텍처
전통적인 요청-응답 방식에서는 시스템이 직접 호출하고 응답을 기다리며 소통합니다. 반면 이벤트 기반 아키텍처에서는 특정 동작이 발생할 때마다(예: 이메일 도착, 파일 변경, 결제 처리 등) 구성 요소가 이벤트를 발행하고, 관련 있는 다른 구성 요소가 해당 이벤트에 반응하도록 구독합니다. 이런 분리는 시스템의 확장성, 복원력, 반응성을 높여줍니다. 이벤트는 일반적으로 메시지 브로커(RabbitMQ, Kafka, Amazon SQS 등)에 게시되어 안전하게 저장되고 관련 구독자 모두에게 전달됩니다. EDA는 현대 실시간 애플리케이션의 핵심 구조입니다.
GAIA 활용 방법 이벤트 기반 아키텍처
GAIA의 전체 백엔드는 이벤트 기반 아키텍처로 구축되어 있으며, 메시지 브로커로 RabbitMQ를 사용합니다. 이메일 도착, 캘린더 업데이트, Slack 메시지, 사용자 행동 등 모든 것이 이벤트를 생성해 큐에 게시됩니다. ARQ 워커들은 이 이벤트를 구독하여 해당하는 에이전트 워크플로를 실행합니다. 이러한 아키텍처 덕분에 GAIA는 진정한 실시간성과 확장성을 갖게 되었으며, 새로운 이벤트 유형과 워크플로도 기존 프로세스를 방해하지 않고 추가할 수 있습니다.
관련 개념
이벤트 기반 자동화
이벤트 기반 자동화는 워크플로우가 특정 이벤트(예: 새 이메일 도착, 캘린더 이벤트 생성, 메시지 게시 등)에 반응하여 자동으로 트리거되는 방식으로, 실시간적이고 반응적인 처리가 가능합니다.
Webhook
Webhook은 시스템 내에서 사전 정의된 이벤트가 발생할 때마다 지정된 URL로 자동화된 HTTP 요청을 보내는 HTTP 콜백 메커니즘입니다. 이를 통해 서비스 간 실시간 알림과 통합이 폴링 없이 가능합니다.
메시지 큐
메시지 큐는 생산자(producer)가 보낸 메시지(작업 또는 이벤트)를 저장하고, 이를 소비자(consumer)에게 전달해 처리하도록 하는 시스템입니다. 이로 인해 두 시스템이 분리되어 비동기적이고 신뢰성 높은 통신이 가능합니다.
Pub-Sub(퍼브-섭, 발행-구독)
발행-구독(Pub-Sub)은 발행자가 수신자를 알 필요 없이 이벤트를 중앙 브로커에 발행하고, 구독자가 특정 이벤트 유형에 관심을 등록해 해당 이벤트를 비동기적으로 받는 메시징 패턴입니다.
트리거
트리거란 자동화된 워크플로우나 에이전트의 동작을 자동으로 시작하게 만드는 특정 이벤트, 조건, 또는 일정으로, 모든 자동화 프로세스의 시작점이 됩니다.


