Опыт установки мессенджера со своим сервером

В компании возникла задача развернуть сервер для следующих целей:

  • реализация чата поддержки в разрабатываемом мобильном приложении;
  • организация внутреннего корпоративного чата.

Почему свой сервер?

Всем знакомые Telegram и WhatsApp не подходят по следующим причинам:

  • утечка персональных и конфеденциальны данных за границу,  
  • Надёжность риск блокировки/наложения санкций - после этого мобильное приложение перестанет корректно работать.  А мы делаем надёжные приложения.

Для реализации чата поддержки мы решили попробовать серверы на основе XMPP (Jabber) протокола.

XMPP же, в свою очередь, имеет свои преимущества:

  • гибкость в настройках и расширениях под конкретные задачи.
  • федеративность (то есть он позволяет пользователям общаться, используя разные серверы, как это происходит с электронной почтой);
  • открытость и независимость от каких-либо компаний;
  • возможность полного контроля над данными;

Поэтому мы решили поднять свой сервер для мессенджера на основе готового открытого ПО, чтобы организовать надежную систему.

Но важно упомянуть и некоторые про технические сложностями XMPP по сравнению с популярными мессенджерами:

  • необходимость  для установки и настройки сервера;
  • сложность получения Push-уведомлений на мобильных устройствах;
  • сложность интеграции с разными системами единого входа (SSO).

Выбор XMPP-сервера

Рассматривались три сервера:

В итоге выбор остановился на ejabberd благодаря его

  • популярности (⇒ много решений и кейсов в сообществе);
  • поддержке необходимых модулей;
  • хорошей документации;
  • относительно простой настройке.

К тому же в нашей компании есть опытные Java-разработчики, поэтому Tigase тоже рассматривался как подходящий вариант — такие нюансы стоит учитывать при выборе компонентов.

Чат поддержки

XMPP, благодаря модульности, простоты, открытости протокола и богатому выбору поддерживаемых расширений, отлично подходит для организации чата поддержки в разрабатываемом нами мобильном приложении.
Ограничения на клиентской стороне в основном решаются реализацией собственных решений в коде разрабатываемого нами приложения.

Таким образом, минимальный набор XMPP-модулей покрывает все требования для реализации этой задачи — поэтому протокол выглядит весьма удачным выбором.

Внутренний корпоративный чат

Мобильные XMPP-клиенты (мобильные мессенджеры на основе XMPP) не предоставляют удобную интеграцию с системами SSO/внешней аунтентификации (в отличие от Matrix-клиентов, например, Element, который позволяет авторизоваться на запущенной им же веб-странице).

В компании уже организован внутренний корпоративный чат на основе протокола Matrix — и, скорее всего, он так и останется на Matrix, так как переход на XMPP-экосистему в этом сценарии принесёт больше сложностей и затрат времени, чем реальной пользы.

Заключение

XMPP в нашем случае помог реализовать чат поддержки благодаря своей гибкости и модульности. Однако для построения полноценного внутреннего корпоративного чата пока больше преимуществ остаётся за экосистемой Matrix.