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. У нас стояла немного другая задача, но проблематика похожая - масшабирование и уведомления.

Пост должен быть полезным, если вы решаете схожие задачи.»
MS Office 2010 Activator: What You Need to Know