Опыт установки мессенджера со своим сервером
В компании возникла задача развернуть сервер для следующих целей:
- реализация чата поддержки в разрабатываемом мобильном приложении;
- организация внутреннего корпоративного чата.
Почему свой сервер?
Всем знакомые Telegram и WhatsApp не подходят по следующим причинам:
- утечка персональных и конфеденциальны данных за границу,
- Надёжность риск блокировки/наложения санкций - после этого мобильное приложение перестанет корректно работать. А мы делаем надёжные приложения.
Для реализации чата поддержки мы решили попробовать серверы на основе XMPP (Jabber) протокола.
XMPP же, в свою очередь, имеет свои преимущества:
- гибкость в настройках и расширениях под конкретные задачи.
- федеративность (то есть он позволяет пользователям общаться, используя разные серверы, как это происходит с электронной почтой);
- открытость и независимость от каких-либо компаний;
- возможность полного контроля над данными;
Поэтому мы решили поднять свой сервер для мессенджера на основе готового открытого ПО, чтобы организовать надежную систему.
Но важно упомянуть и некоторые про технические сложностями XMPP по сравнению с популярными мессенджерами:
- необходимость для установки и настройки сервера;
- сложность получения Push-уведомлений на мобильных устройствах;
- сложность интеграции с разными системами единого входа (SSO).
Выбор XMPP-сервера
Рассматривались три сервера:
В итоге выбор остановился на ejabberd благодаря его
- популярности (⇒ много решений и кейсов в сообществе);
- поддержке необходимых модулей;
- хорошей документации;
- относительно простой настройке.
К тому же в нашей компании есть опытные Java-разработчики, поэтому Tigase тоже рассматривался как подходящий вариант — такие нюансы стоит учитывать при выборе компонентов.
Чат поддержки
XMPP, благодаря модульности, простоты, открытости протокола и богатому выбору поддерживаемых расширений, отлично подходит для организации чата поддержки в разрабатываемом нами мобильном приложении.
Ограничения на клиентской стороне в основном решаются реализацией собственных решений в коде разрабатываемого нами приложения.
Таким образом, минимальный набор XMPP-модулей покрывает все требования для реализации этой задачи — поэтому протокол выглядит весьма удачным выбором.
Внутренний корпоративный чат
Мобильные XMPP-клиенты (мобильные мессенджеры на основе XMPP) не предоставляют удобную интеграцию с системами SSO/внешней аунтентификации (в отличие от Matrix-клиентов, например, Element, который позволяет авторизоваться на запущенной им же веб-странице).
В компании уже организован внутренний корпоративный чат на основе протокола Matrix — и, скорее всего, он так и останется на Matrix, так как переход на XMPP-экосистему в этом сценарии принесёт больше сложностей и затрат времени, чем реальной пользы.
Заключение
XMPP в нашем случае помог реализовать чат поддержки благодаря своей гибкости и модульности. Однако для построения полноценного внутреннего корпоративного чата пока больше преимуществ остаётся за экосистемой Matrix.