Есть задача по разработке серверной части для мобильного приложения и сайта. Основная часть серверного api будет разрабатываться на базе nginx+php-fpm и MariaDB. Кроме всего прочего потребуется функционал рассылки уведомлений для клиентов и быстрого обмена сообщениями между клиентами. Все это должно быть realtime (ну или почти realtime). Сообщения нужно хранить в БД, чтобы при необходимости было возможность их получить из основного api. Проблема в том, что не могу определиться с выбором технологий для реализации этих сообщений/уведомлений. Предполагается, что клиентов онлайн будет достаточно много (точное число сейчас трудно сказать, но по смелым ожиданиям заказчика со временем может дойти до 100к). Сами сообщения отправлять будут относительно нечасто и они будут небольшими.
Сначала подумывал о написании велосипеда на nodejs. Веб-клиенты через socket.io, мобильные — raw tcp socket. Можно масштабировать запуском нескольких инстансов ноды. Зная айдишник пользователя можно определить, на каком инстансе он висит.
Потом подкинули идею использовать XMPP и ejabberd. С одной стороны звучит заманчиво, с другой есть некоторые сомнения на счет целесообразности такого решения. Да и опыта работы с ejabberd вообще не было. Знания об Erlang'е весьма поверхностные.
В общем, ввиду отсутствия практического опыта в разработке подобных, не могу определиться с выбором средств реализации. Возможно есть еще более эффективные способы решения этой задачи о которых я вообще не знаю. Буду весьма признателен, если посоветуете что именно выбрать и как лучше реализовать.