Skip to content

pattern mediator

qbsb147 edited this page Mar 21, 2026 · 1 revision

💬 중재자(Mediator) 패턴

📝 개념

image

Mediator

  • Colleague 객체들 간의 직접적인 통신을 차단하고, 중재자 인터페이스를 통해 상호작용을 정의
  • 역할: “누가 누구에게 메시지를 보내야 하는지”를 **중앙에서 조정”

Colleague

  • Mediator를 통해 다른 Colleague와 간접적으로 커뮤니케이션
  • 각 Colleague는 Mediator에 이벤트를 전달하거나 알림을 수신

ConcreteMediator

  • Mediator 구현체로, 실제 Colleague 객체들을 관리하고 메시지를 중재
  • 예: 특정 채팅방에 연결된 모든 사용자에게 메시지 브로드캐스트
  • 메시지 전송, 등록/제거 등 모든 상호작용을 중앙 집중식으로 처리

ConcreteColleague

  • Colleague 인터페이스를 구현한 실제 객체
  • Mediator를 통해 메시지를 주고받음
  • 예: 웹소켓 세션 단위의 사용자
sequenceDiagram
    participant User1
    participant ChatRoom
    participant User2

    User1->>ChatRoom: send("Hello!")
    ChatRoom->>User2: deliver("Hello!")
Loading

🔹 웹소켓 메시지 전달 시 중재자 역할

  1. 사용자 A가 메시지를 전송
  2. Mediator(ConcreteMediator)가 메시지를 수신
  3. Mediator가 해당 방의 다른 사용자(ConcreteColleague)들에게 메시지를 전달
  4. Colleague는 메시지를 받고 처리

💡 핵심 포인트:

  • 사용자 간 직접 통신 없음 → 모든 메시지는 Mediator를 통해 전달
  • Mediator가 중앙에서 메시지 흐름과 브로드캐스트를 관리
  • 새로운 사용자/채팅방 추가 시에도 Mediator 중심 구조를 유지

📡 이벤트 스트리밍

⚙️ 개발 환경 구축

Websocket

Kafka

Redis

Debezium

🧩 기능 구현

이벤트리스너(Spring)

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

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

CDC(Debezium)

🧠 개념

🎯 설계 패턴

🏗️ 아키텍처

📚 기술 스택

Clone this wiki locally