EDA (Event-Driven Architecture)

I. 느슨한 결합 기반의 비동기 분산 아키텍처, EDA의 개요

  • 정의: 시스템 내 상태 변화(Event)를 감지하여 비동기적으로 메시지를 발행(Publish)하고, 이를 구독(Subscribe)하는 서비스가 반응하여 비즈니스 로직을 처리하는 소프트웨어 아키텍처

  • MSA(Microservices Architecture) 및 클라우드 네이티브 환경에서 서비스 간 의존성을 최소화하고 유연성을 확보하기 위한 핵심 패턴

  • 특징: 서비스 간 느슨한 결합(Loose Coupling), 비동기 통신(Asynchronous), 높은 확장성(Scalability) 및 탄력성, 실시간 스트리밍 데이터 처리 용이

II. EDA의 개념도 및 핵심 기술 요소

가. EDA의 개념도 및 동작 원리

flowchart LR
    subgraph Producer["Event Producers"]
        P1["Microservice A<br/>(Order Service)"]
        P2["IoT / Web Client<br/>(External Source)"]
    end

    subgraph Broker["Event Broker / Channel"]
        EB["Event Bus / Stream<br/>(Apache Kafka, RabbitMQ)<br/>- Event Routing & Queuing<br/>- Persistence & Replay"]
    end

    subgraph Consumer["Event Consumers"]
        C1["Microservice B<br/>(Payment Service)"]
        C2["Serverless / FaaS<br/>(AWS Lambda)"]
        C3["Data Lake<br/>(Analytics / AI)"]
    end

    P1 -- "Publish (이벤트 발행)" --> EB
    P2 -- "Publish (이벤트 발행)" --> EB
    EB -- "Subscribe (이벤트 구독)" --> C1
    EB -- "Subscribe (이벤트 구독)" --> C2
    EB -- "Subscribe (이벤트 구독)" --> C3
  • 이벤트 생성자(Producer)가 이벤트를 발생시키면, 브로커(Broker)가 이를 적절한 큐/토픽에 라우팅 및 보관하고 구독자(Consumer)가 비동기적으로 가져가(Pull/Push) 처리하는 구조

나. EDA의 핵심 기술 요소

구분핵심 기술(키워드)세부 설명
구성 요소Event Producer상태 변화를 감지하여 이벤트를 생성 및 브로커로 발행하는 주체
구성 요소Event Broker발행된 이벤트를 수신, 버퍼링, 라우팅하여 구독자에게 전달 (Kafka 등)
구성 요소Event Consumer브로커로부터 이벤트를 구독하여 실제 비즈니스 로직을 수행하는 서비스
설계 패턴Event Sourcing데이터의 현재 상태가 아닌, 상태 변경을 일으킨 모든 이벤트의 이력을 순차적으로 저장
설계 패턴CQRS시스템의 상태를 변경하는 명령(Command)과 조회(Query)의 책임을 분리하는 패턴
설계 패턴Choreography Saga중앙 통제(Orchestrator) 없이 이벤트를 교환하며 분산 트랜잭션을 관리하는 기법
표준화CloudEvents클라우드 환경에서 플랫폼 간 호환성을 위해 CNCF가 제정한 이벤트 데이터 메타데이터 표준
데이터 처리Stream Processing끊임없이 생성되는 이벤트 스트림 데이터를 실시간으로 수집, 분석, 처리 (Flink, Spark)

III. EDA와 기존 아키텍처(Request-Driven) 비교 및 향후 전망

가. EDA vs Request-Driven Architecture(RDA) 비교

비교 항목Request-Driven (API 기반)Event-Driven (EDA 기반)
통신 패러다임동기식(Synchronous) P2P 호출비동기식(Asynchronous) Pub/Sub
결합도(Coupling)강결합 (서비스 간 물리적/논리적 의존성 높음)느슨한 결합 (브로커를 통한 논리적 분리)
장애 격리성타 서비스 장애 시 연쇄 장애(Cascading Failure) 발생 위험큐잉/버퍼링을 통해 장애 격리(Isolation) 우수
트래픽 대응트래픽 폭증 시 병목 현상 발생 (스케일 아웃 복잡)브로커에서 트래픽 완충(Buffering), 독립적 확장 용이
데이터 일관성2PC 등 강한 일관성(Strong Consistency) 확보 유리결과적 일관성(Eventual Consistency) 모델 수용 필요

나. 향후 전망 및 동향

  • Serverless 결합 가속화: AWS EventBridge, Azure Event Grid 등 클라우드 네이티브 서버리스 서비스와 결합하여 인프라 관리 없는 완전 관리형 EDA 구축 증가

  • 데이터 메시(Data Mesh)와의 융합: 분산된 도메인별 데이터를 실시간 스트리밍 이벤트로 연계하여 분석 효율성을 극대화하는 엔터프라이즈 데이터 아키텍처로 진화

  • 결과적 일관성(Eventual Consistency) 극복 과제: 분산 트랜잭션의 신뢰성 보장을 위해 Saga 패턴 및 Outbox 패턴의 프레임워크 수준 지원(예: Debezium CDC 연동) 지속 확대 중