2.7 KiB
2.7 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-ARCH-EDA | 이벤트 기반 아키텍처 (Event-Driven Architecture, EDA) | 10_Wiki/🏗️ Topics_Arch | verified |
|
A | 1.0 |
|
|
2026-05-02 |
이벤트 기반 아키텍처 (Event-Driven Architecture, EDA)
1. 개요
Event-Driven Architecture (EDA)는 시스템 컴포넌트 간의 통신을 '이벤트(Event)'의 발행과 소비를 통해 비동기적으로 수행하는 아키텍처 패러다임이다. 직접적인 함수 호출 대신 상태 변화나 사건 발생을 알리는 메시지를 주고받음으로써 시스템 간의 느슨한 결합(Loose Coupling)을 실현한다.
2. 핵심 구성 요소
- 이벤트 생산자 (Producer): 특정 사건 발생 시 이벤트를 생성하여 브로커에 발행.
- 이벤트 브로커 (Broker): 발행된 이벤트를 수신하여 관심 있는 소비자에게 라우팅 (예: Kafka, RabbitMQ).
- 이벤트 소비자 (Consumer): 수신한 이벤트에 반응하여 비즈니스 로직을 실행.
- 데드 레터 큐 (Dead Letter Queue, DLQ): 처리 실패한 이벤트를 격리하여 사후 분석 및 재처리를 지원.
3. 실전 설계 원칙
- 멱등성 (Idempotency) 보장: 동일한 이벤트가 중복 처리되어도 시스템 상태가 일관되게 유지되도록 소비자 로직 설계 필수.
- 비동기 오케스트레이션: 마이크로서비스 간의 복잡한 워크플로우를 직접 호출 없이 이벤트 흐름으로 조정.
- 장애 격리: 특정 서비스의 장애가 전체 시스템으로 전파되지 않도록 브로커를 통한 완충 지대 형성.
4. 트레이드오프
- 장점: 높은 확장성, 유연한 시스템 변경, 실시간 데이터 처리 능력.
- 단점: 시스템 복잡도 증가, 분산 추적(Distributed Tracing)의 어려움, 결과적 일관성(Eventual Consistency) 관리 비용.
5. 지식 연결 (Related)
- Microservices_Architecture: EDA가 가장 활발하게 적용되는 시스템 구조.
- Domain_Driven_Design: 도메인 이벤트(Domain Events)를 도출하여 EDA 설계를 이끄는 방법론.
- Message_Broker_Selection: 시스템 특성에 맞는 브로커(Kafka vs RabbitMQ) 선택 전략.
🧪 검증 상태 (Validation)
- 정보 상태: 검증 완료 (Verified)
- 출처 신뢰도: A
- 검토 이유: 현대적 분산 시스템의 탄력성과 확장성을 위한 핵심 아키텍처 패턴 정립.