forked from MinePing/Final
-
Notifications
You must be signed in to change notification settings - Fork 0
architecture EDA
qbsb147 edited this page Mar 21, 2026
·
1 revision
EDA(Event-Driven Architecture)는 이벤트(Event)를 기반으로 시스템이 동작하는 아키텍처입니다.
- 어떤 상태 변화(이벤트)가 발생하면
- 이를 감지한 컴포넌트가 비동기적으로 반응하여 처리 💡 핵심:
- 느슨한 결합(Loose Coupling)
- 비동기 처리(Async Processing)
- 확장성(Scalability)
- 이벤트를 생성하는 주체
- 상태 변화 발생 시 이벤트 발행
- 예: 메시지 전송, 주문 생성, 결제 완료
- 이벤트를 구독하고 처리하는 주체
- 이벤트를 수신하여 로직 수행
- Producer와 Consumer 사이에서 이벤트를 전달하는 중개자
- 이벤트를 저장하고, Consumer에게 전달 💡 특징:
- Producer ↔ Consumer 직접 통신 없음
- Broker를 통해 완전히 분리됨
- 시스템 내에서 발생한 사건 또는 상태 변화 정보
- 보통 JSON 형태의 메시지로 전달
- Producer가 이벤트 생성
- 이벤트를 Broker에 전달
- Broker가 이벤트를 저장/분배
- Consumer가 이벤트를 구독 후 처리
sequenceDiagram
participant Producer
participant Broker
participant ConsumerA
participant ConsumerB
Producer->>Broker: publish(Event)
Broker->>ConsumerA: deliver(Event)
Broker->>ConsumerB: deliver(Event)
- 요청-응답 구조가 아니라 이벤트 기반으로 독립 처리
- 시스템 간 대기 시간 감소
- Producer는 Consumer를 몰라도 됨
- Consumer도 Producer에 의존하지 않음
- Consumer를 추가해도 기존 시스템 영향 없음
- 이벤트 기반으로 수평 확장 가능
- 🚀 높은 확장성
- 🔄 서비스 간 의존성 감소
- ⚡ 비동기 처리로 성능 향상
- 🧩 마이크로서비스 아키텍처(MSA)에 적합
- 🧠 구조 이해 난이도 증가
- 🐞 디버깅 어려움 (이벤트 흐름 추적 필요)
- 📉 데이터 일관성 관리 어려움 (최종 일관성)