221
5
장
이벤트 주도 아키텍처 패턴
사용해야 합니다. 메시지 브로커는 이벤트를 저장하고 구독자가 온라인 상태가 되는 즉시 전
달할 책임을 가집니다. 각각의 내구성 있는 구독은 각 구독자 전용 이벤트 큐라고 볼 수 있습니
다. 내구성 있는 구독 대신 카프카나
NATS
와 같은 커밋 로그 기반 메시지 브로커를 사용해서
구독자가 오프라인 상태인 경우 발생하는 이벤트들을 전달할 수도 있습니다. 이런 유형의 메시
지 브로커들은 모든 이벤트를 커밋 로그에 저장합니다. 메시지 브로커는 이벤트를 성공적으로
전달하든 전달에 실패하든 이벤트를 제거하지 않고 저장하기 때문에 구독자의 요청에 따라 이
벤트를 다시 전달하거나 재생할 수 있습니다. 받지 못한 이벤트를 다시 받으려면 구독자는 반
드시 마지막으로 처리한 이벤트의 순번이나
ID
를 어딘가에 영구히 저장해 두어야 하며, 재시
작 하는 동안 마지막으로 처리한 이벤트 이후로 발생한 모든 이벤트를 메시지 브로커에게 요청
합니다. 이런 방법으로 시스템에 높은 수준의 전달 보장을 구현할 수 있습니다.
또한 이 패턴을 사용해서 시스템간 결합도를 낮추고 발행자나 구독자를 독립적으로 추가하거
나 삭제할 수 있습니다. 발행자-구독자 패턴을 통해 여러 소비자 간 이벤트를 공유할 수도 있
고 [그림
5
-
4
]에서 본 것처럼 클라이언트
ID
에 기반하여 이벤트를 브로드캐스트 하거나, 같은
클라이언트
ID
를 가지는 구독자들에게 이벤트들을 공유하고 분산할 수도 있습니다.
관련 패턴들
구독자-발행자 패턴은 하나의 소비자에게 이벤트를 전달할 ...