IT Study/SW 개발 및 프로그래밍

💻 이벤트 기반 아키텍처(Event-Driven Architecture, EDA)

cs_bot 2025. 4. 4. 13:13

1. 개요

  • 이벤트 기반 아키텍처(Event-Driven Architecture, EDA)는 시스템 구성 요소 간의 상호작용을 이벤트를 중심으로 설계하는 소프트웨어 아키텍처 패턴
  • 이벤트란 특정 상태의 변화 또는 동작이 발생했음을 알리는 신호로, 이를 다른 컴포넌트가 감지하여 처리하는 방식으로 시스템이 동작함
  • 동기/비동기 방식 중 비동기적 처리에 초점을 맞추며, 모듈 간 결합도를 낮추고 유연성과 확장성을 확보하는 데 유리함

2. 아키텍처 구조

EDA는 보통 다음과 같은 3가지 주요 구성 요소로 구성됨

  1. Event Producer (이벤트 생산자)

    • 사용자의 행위, 센서 데이터, 타 시스템의 API 호출 등에서 발생한 이벤트를 생성
    • 예: 온라인 쇼핑몰에서 결제 완료 시, ‘주문완료’ 이벤트를 생성함
  2. Event Channel (이벤트 채널 또는 브로커)

    • 이벤트를 생산자에서 소비자로 전달하는 매개 역할 수행
    • 메시지 큐(Kafka, RabbitMQ, ActiveMQ 등) 또는 Pub/Sub 시스템이 활용됨
    • 이벤트의 일시적인 저장, 정렬, 전달 보장을 위한 인프라 구성 가능
  3. Event Consumer (이벤트 소비자)

    • 이벤트를 수신하고, 해당 이벤트에 따른 로직을 수행하는 컴포넌트
    • 이벤트 핸들러 또는 리스너 형태로 구현되며, 이벤트 타입에 따라 동작이 결정됨

3. 처리 방식에 따른 분류

  • 단순 이벤트 처리(Simple Event Processing)
    → 단일 이벤트가 발생하면 즉시 처리, 예: 센서 온도가 일정값 초과 시 알람 전송

  • 복합 이벤트 처리(Complex Event Processing, CEP)
    → 여러 이벤트의 상관관계를 분석하여 고차원의 의미 있는 이벤트 도출
    → 예: 일정 시간 내에 다수의 로그인 실패 발생 → 보안 경고 발생


4. 주요 특징

  • 비동기적 메시지 전달
    → 이벤트를 수신자와 분리하여 독립적으로 처리 가능
    → 느린 시스템이나 일시적 장애에도 전체 시스템이 중단되지 않음

  • 모듈 간 느슨한 결합(Loose Coupling)
    → 이벤트만 주고받으면 되므로, 생산자와 소비자가 서로를 알 필요 없음
    → 변경에 유연하고 유지보수 용이

  • 확장성과 유연성 확보
    → 새로운 소비자(리스너) 추가가 용이함
    → 기능 확장 시 전체 구조 수정 필요 없음


5. EDA와 다른 아키텍처의 비교

항목 이벤트 기반 아키텍처 (EDA) 전통적인 요청-응답 구조
통신 방식 비동기 메시지 기반 동기적 요청-응답 기반
결합도 낮음 (Loose Coupling) 높음 (Tight Coupling)
장애 전파 낮음 높음
확장성 우수함 상대적으로 제한됨
실시간성 적합함 응답 대기 시간 필요

6. 장점

  • 느슨한 결합을 통한 모듈 독립성 확보
  • 이벤트를 중심으로한 업무 흐름 정의 가능
  • 확장성 확보 및 마이크로서비스 아키텍처와 궁합이 잘 맞음
  • 고가용성 시스템 구현에 유리함
  • 비동기 방식이므로 사용자 응답성과 성능 향상 가능

7. 단점

  • 이벤트 흐름이 복잡해질 경우 시스템 전체 흐름 파악이 어려움
  • 디버깅과 테스트가 복잡함 (순차적 흐름 부재로 인한 추적 어려움)
  • 메시지 중복 처리나 순서 보장 필요 시 복잡도 증가
  • 메시지 브로커 장애 시 전체 시스템 영향 가능성 존재
  • 이벤트 스키마 관리 필요 (버전 관리, 포맷 정합성 확보 등)

8. 활용 사례

  1. 전자상거래 시스템

    • 주문 발생 시 재고 감소, 배송 요청, 결제 처리 등 이벤트로 분리 처리
  2. 사물인터넷(IoT) 환경

    • 센서 데이터 발생 → 데이터 수집 → 이벤트 기반으로 데이터 분석
  3. 실시간 모니터링 시스템

    • 서버 상태 변화, 장애 발생 이벤트 수집 → 관리자 알림, 자동 조치 시스템 트리거
  4. 마이크로서비스 아키텍처(MSA)

    • 각 서비스 간 이벤트를 기반으로 연결 → 서비스 간 독립성 유지

9. 기술 스택

  • 메시지 브로커: Kafka, RabbitMQ, AWS SNS/SQS, Google Pub/Sub
  • 이벤트 처리 엔진: Apache Flink, Apache Storm, Esper
  • 이벤트 저장소: Event Store, Kafka Streams
  • 연계 프레임워크: Spring Cloud Stream, NATS

10. 결론

이벤트 기반 아키텍처는 비동기적이고 유연한 시스템 구성이 가능하며, 모듈 간 결합도를 낮춰 유지보수성과 확장성을 극대화하는 장점을 가짐. 특히 실시간 데이터 처리, IoT, MSA 등의 현대적 시스템에 적합한 구조로, 이벤트 중심의 설계 사고를 요구함. 다만 설계 복잡도, 이벤트 흐름 파악의 어려움 등 단점을 보완하기 위한 체계적인 로깅, 모니터링, 트래킹 도구 도입이 병행되어야 함.