Skip to content

architecture EDA

qbsb147 edited this page Mar 21, 2026 · 1 revision

📡 EDA (Event-Driven Architecture)

📝 개요

EDA(Event-Driven Architecture)는 이벤트(Event)를 기반으로 시스템이 동작하는 아키텍처입니다.

  • 어떤 상태 변화(이벤트)가 발생하면
  • 이를 감지한 컴포넌트가 비동기적으로 반응하여 처리 💡 핵심:
  • 느슨한 결합(Loose Coupling)
  • 비동기 처리(Async Processing)
  • 확장성(Scalability)

🔹 핵심 구성 요소

📤 Event Producer

  • 이벤트를 생성하는 주체
  • 상태 변화 발생 시 이벤트 발행
  • 예: 메시지 전송, 주문 생성, 결제 완료

📥 Event Consumer

  • 이벤트를 구독하고 처리하는 주체
  • 이벤트를 수신하여 로직 수행

📦 Event Broker

  • Producer와 Consumer 사이에서 이벤트를 전달하는 중개자
  • 이벤트를 저장하고, Consumer에게 전달 💡 특징:
  • Producer ↔ Consumer 직접 통신 없음
  • Broker를 통해 완전히 분리됨

📨 Event

  • 시스템 내에서 발생한 사건 또는 상태 변화 정보
  • 보통 JSON 형태의 메시지로 전달

🔹 동작 흐름

  1. Producer가 이벤트 생성
  2. 이벤트를 Broker에 전달
  3. Broker가 이벤트를 저장/분배
  4. Consumer가 이벤트를 구독 후 처리

📊 시퀀스 다이어그램 (Mermaid)

sequenceDiagram
    participant Producer
    participant Broker
    participant ConsumerA
    participant ConsumerB

    Producer->>Broker: publish(Event)
    Broker->>ConsumerA: deliver(Event)
    Broker->>ConsumerB: deliver(Event)
Loading

🔹 특징

⚡ 비동기 처리

  • 요청-응답 구조가 아니라 이벤트 기반으로 독립 처리
  • 시스템 간 대기 시간 감소

🔗 느슨한 결합

  • Producer는 Consumer를 몰라도 됨
  • Consumer도 Producer에 의존하지 않음

📈 확장성

  • Consumer를 추가해도 기존 시스템 영향 없음
  • 이벤트 기반으로 수평 확장 가능

🔹 장점

  • 🚀 높은 확장성
  • 🔄 서비스 간 의존성 감소
  • ⚡ 비동기 처리로 성능 향상
  • 🧩 마이크로서비스 아키텍처(MSA)에 적합

🔹 단점

  • 🧠 구조 이해 난이도 증가
  • 🐞 디버깅 어려움 (이벤트 흐름 추적 필요)
  • 📉 데이터 일관성 관리 어려움 (최종 일관성)

📡 이벤트 스트리밍

⚙️ 개발 환경 구축

Websocket

Kafka

Redis

Debezium

🧩 기능 구현

이벤트리스너(Spring)

Pub/Sub 기반 메세지 처리(Redis)

이벤트 스트리밍 처리(Kafka)

CDC(Debezium)

🧠 개념

🎯 설계 패턴

🏗️ 아키텍처

📚 기술 스택

Clone this wiki locally