푸시 한 번에 수십만 명 — 메시지 유실 없는 알림 시스템을 어떻게 만들었나RabbitMQ + BullMQ + NestJS로 구현한 분산 알림 파이프라인 설계기문제는 이렇게 시작됐다서비스가 성장하면서 알림 요구사항이 복잡해졌습니다.마케팅팀이 보내는 수십만 명 대상 일괄 앱푸시 or 이메일사용자 행동에 반응하는 실시간 서비스 푸시날짜와 시간을 지정하는 예약 발송FCM, APNs, 웹 푸시, 이메일, SMS를 모두 커버하는 멀티채널 전송처음에는 각 서비스가 직접 FCM API를 호출했습니다. 그러다 문제가 터지기 시작했습니다."마케팅 배치 발송이 시작되면 일반 알림이 수십 분씩 밀린다."이유는 단순했습니다. 하나의 Queue를 모든 서비스가 공유했기 때문입니다. 100만 건의 배치 Job이 쌓이면 그 뒤에 ..
개요 회사의 앱이 V2로 개선되면서, 기존에 있던 푸시도 새로 개편하게 되었다. 아직 다 개발 되지는 않았지만 하는 과정에서 했던 큐에 RabbitMQ와 redisBullQueue 대한 내용과 차이점 및 사용했던 내용을 적고자 한다. Queue RabbitMQ RabbitMQ는 AMQP(Advanced Message Queuing Protocol)을 구현한 오픈소스 메시지 브로커. 복잡한 라우팅, 메시지 지속성, 메시지 송수신 기능을 제공하며 분산 시스템에서 메시지를 안전하게 전달 RabbitMQ는 플러그인 시스템을 통해 다양한 메시지 브로커 기능을 확장하거나 변경가능. Redis-BullQueue BullQueue 는 Node.js 환경에서 Redis 이용해서 사용하는 큐 라이브러리 이용해서 사용하는 ..