How to build notification service for a scalable multi-tenant application using RabbitMQ and NodeJS
Вийшов новий пост у блозі WebbyLab. Там реальний досвід, яким колеги з WebbyLab хочуть поділитися з ком’юніті.
«Большинство NodeJS разработчиков допускают одну и ту же ошибку. Они считают, что будет только один процесс их приложения и это особенно больно, когда используются веб-сокеты.
Допустим нужно сделать чат. Реализация чаще всего такая: бэкенд ждет пока подключаться несколько пользователей через веб-сокеты и держит в памяти соединения. Когда один пользователь пишет другому, то бэкенд получает сообщение, сохраняет его в базу и отправляет его другому пользователю через другое соединение, если тот подключен. Локально все работает, но в продакшене работать не будет. Почему? Потому, что вам нужно масштабироваться. И у вас либо будет запущенно несколько docker контейнеров вашего приложения, либо pm2 в режиме cluster. В итоге один пользователь может подключиться через веб-сокеты к одному процессу, а второй к другому.
Как с этим быть? Нужен message broker. И это только один из сценариев, когда может понадобиться message broker. У нас стояла немного другая задача, но проблематика похожая - масшабирование и уведомления.
Пост должен быть полезным, если вы решаете схожие задачи.»