Files
2nd/10_Wiki/Topics_Dev/Event_Driven_Architecture.md
T

4.1 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, tags, raw_sources, last_reinforced, github_commit
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score tags raw_sources last_reinforced github_commit
P-REINFORCE-WIKI-DEV-EDA 이벤트 기반 아키텍처와 비동기 시스템 설계 (EDA) 10_Wiki/💻 Topics_Dev verified
EDA
이벤트 기반 아키텍처
Event-Driven Architecture
비동기 통신
메시징
A 1.0
Architecture
Asynchronous
Microservices
Scalability
Messaging
Datacollector_Export_2026-05-02
2026-05-02

이벤트 기반 아키텍처와 비동기 시스템 설계 (EDA)

1. 개요

이벤트 기반 아키텍처(EDA, Event-Driven Architecture)는 시스템 구성 요소들이 직접적으로 서로를 호출(Request-Response)하는 대신, 상태의 변화나 중요한 비즈니스 사건을 의미하는 '이벤트'를 발행(Publish)하고 소비(Subscribe)함으로써 협력하는 아키텍처 스타일이다. 이는 서비스 간의 결합도를 획기적으로 낮추고, 대규모 데이터 처리와 실시간 반응성이 요구되는 현대적 분산 시스템 및 마이크로서비스 환경에서 필수적인 설계 패러다임으로 자리 잡고 있다.

2. 주요 구성 요소 및 흐름

  • 이벤트 생산자 (Event Producers): 비즈니스 사건이 발생했을 때 이를 탐지하고 이벤트 메시지를 생성하여 발행하는 주체.
  • 이벤트 채널/브로커 (Event Channels/Brokers): 발행된 이벤트를 수집하고, 해당 이벤트에 관심 있는 소비자들에게 전달하는 매개체 (예: Apache Kafka, RabbitMQ, AWS SNS/SQS).
  • 이벤트 소비자 (Event Consumers): 특정 이벤트를 구독하고 있다가, 이벤트가 도착하면 그에 따른 비즈니스 로직(핸들러)을 실행하는 주체.
  • 이벤트 저장소 (Event Store): 발생한 이벤트들을 순차적으로 기록하여 추후 재생(Replay)이나 상태 복구에 활용하는 저장소.

3. 엔지니어링 가치

  • 느슨한 결합 (Loose Coupling): 생산자는 누가 이벤트를 소비하는지 알 필요가 없으며, 소비자 역시 이벤트가 어디서 발행되었는지 알 필요가 없다. 이는 각 서비스의 독립적인 진화와 배포를 가능하게 한다.
  • 높은 확장성 및 유연성: 이벤트 소비자를 자유롭게 추가하거나 제거할 수 있으며, 메시지 큐를 통한 버퍼링 효과로 갑작스러운 트래픽 증가(Spike)에도 시스템 전체가 마비되지 않고 유연하게 대응 가능.
  • 실시간 반응성: 데이터가 발생한 즉시 관련 시스템들이 비동기적으로 반응하므로, 실시간 대시보드, 알림 서비스, 복잡한 워크플로우 처리에 최적화됨.

4. 트레이드오프 및 주의사항

  • 디버깅 및 추적의 어려움: 직접적인 호출 스택이 존재하지 않으므로, 하나의 비즈니스 흐름이 여러 서비스를 거쳐갈 때 장애 발생 지점을 찾기 위해 분산 추적(Distributed Tracing) 도구 필수.
  • 결과적 일관성 (Eventual Consistency): 분산 시스템의 특성상 데이터가 모든 곳에 즉시 반영되지 않을 수 있음을 전제로 설계해야 하며, 보상 트랜잭션(Saga Pattern 등)을 통한 예외 처리 필요.
  • 멱등성 보장 (Idempotency): 네트워크 장애 등으로 동일한 이벤트가 중복 전달될 수 있으므로, 여러 번 처리해도 시스템 상태가 일관되게 유지되도록 핸들러를 멱등성 있게 구현해야 함.
  • Microservices_Architecture: EDA가 가장 활발하게 적용되는 아키텍처 환경.
  • Domain_Driven_Design: 도메인 이벤트를 정의하고 바운디드 컨텍스트 간의 통신을 설계하는 기반 이론.
  • Event_Storming: 이벤트 기반 시스템의 흐름을 설계하기 위한 협업 워크숍 기법.

🧪 검증 상태 (Validation)

  • 정보 상태: 검증 완료 (Verified)
  • 출처 신뢰도: A
  • 검토 이유: 서비스 간의 의존성을 최소화하고 분산 시스템의 확장성과 복잡성을 효과적으로 제어하기 위한 현대적 아키텍처 표준 정립.