Pub/Sub 패턴
Pub/Sub (Publish/Subscribe) 패턴은 메시지 큐 (Message Queue) 기반의 패턴으로, 메시지를 보내는 Publisher와 메시지를 받는 Consumer를 별도의 애플리케이션으로 분리하여 독립적으로 동작할 수 있도록 하는 방식이다.
Publisher가 메시지를 발행하면, Messaging Middleware의 특정 주제를 기반으로 모이게 되며 Subscriber는 해당 주제를 메개로 메시지를 구독하여 수신할 수 있다.
장점
- 비동기 처리가 가능해진다.
- Publisher와 Consumer를 독립적으로 분리하여 결합도를 낮출 수 있다. 이는, 어느 한 쪽에 장애가 생겨도 영향을 최소화 할 수 있다.
- 메시지 처리와 관리를 중앙에서 수행하여 시스템 복잡도를 낮출 수 있다.
Redis에서의 Pub/Sub
- 메시지 큐에 메시지가 저장되지 않는다. → 온라인 상태의 Subscriber에게만 전달.
- Kafka의 컨슈머 그룹같은 분산처리 개념이 없다. → 모든 Subscriber에게 전달.
- Push방식을 사용한다. → 메시지가 생성됨가 동시에 전달.
<aside>
💡 이러한 Redis Pub/Sub의 특징은 Subscriber가 많아질 수록 성능 저하를 야기한다.
</aside>
When? (Redis Pub/Sub Usecase)
- 실시간으로 빠르게 전송되어야 하는 메시지
- 메시지 유실을 감내할 수 있는 케이스
- Subscriber들이 유동적으로 주제를 바꾸며 한시적으로 구독하는 경우
Redis의 Pub/Sub을 이용한 채팅방 구현