
Существуя в парадигме двунаправленных ограничений — это когда с одной стороны тебя душат евробюрократы своим GDPR, а с другой родное правительство размахивает законодательством в области защиты персональных данных — волей-неволей начинаешь задумываться о том, чтобы хранить всё, что можно, на своих собственных серверах. Чаще всего в центре всего официального взаимодействия внутри компании находится корпоративная электронная почта. Тогда как чат-активности последние 15 лет протекали везде, где только можно: Skype, Slack, Teams, Telegram и может быть, даже кто-то пользовался для рабочих переписок WhatsApp или Viber (мы не будем их за это осуждать).
Однако сейчас, когда связь с внешними сервисами работает с перебоями, а самым стабильным международным способом созвониться теперь является, внезапно, Steam, VoIP которого точно не блокируется, возникает резонный вопрос: а как коммуницировать хотя бы в рамках собственной компании? Особенно с учетом того, что Discord давно и надежно заблокирован, Slack с рынка ушел, а популярные публичные мессенджеры замедляются или рискуют отправиться в бан? Решение очевидно: поднимать собственные текстовые и VoIP-сервера.
Matrix для текста
Самым простым и очевидным решением будет обращение к Open Source-инструментам. Универсального корпоративного мессенджера с ультимативными функциями мы там не найдем, то есть полноценную замену Slack из коробки не получим, однако есть два довольно развитых и пригодных к использованию решения, которые при этом еще и подходят под российское законодательство в области хранения персональных данных.
Matrix — это децентрализованная система для обмена сообщениями и данными в режиме реального времени, позволяющая любому желающему разворачивать собственный сервер (Homeserver) и объединяться в федерацию с другими. Протокол Matrix позволяет безопасно отправлять текстовые сообщения, файлы, а также инициировать аудио- и видеозвонки.
Архитектурно Matrix состоит из децентрализованной сети серверов, которые обмениваются сообщениями и файлами в соответствии с общим протоколом. Каждый сервер хранит свою копию истории пользователей и синхронизируется с другими серверами по мере необходимости. В Matrix'е используется сквозное шифрование, а обмен ключами происходит на уровне клиентов, что одинаково безопасно как для личных чатов, так и для групповых переписок, а серверы не имеют доступа к содержимому сообщений.
В плане соблюдения законодательства РФ касательно защиты персональных данных Matrix позволяет администратору контролировать, где именно хранятся чувствительные данные и кто имеет к ним доступ. Это позволяет легко выполнять самое неприятное требования текущих законов — о локальном хранении этой информации на территории РФ.
Самым приятным в Matrix является то, что миграцию на него можно сделать постепенной, потому что он поддерживает экосистему бриджей и ботов, которые могут связать новую инфраструктуру со старыми чатами в Telegram или Slack (если вы до сих пор каким-то обходными путями пользуетесь этим продуктом). Кроме того, Matrix нормально прикручивается к Discord, IRC-серверам, Gitter и другим решениям. В отдельном сценарии Matrix можно раскатать как платформу на бэке, а пользователям оставить их привычные клиенты — Telegram, IRC или Discord, сводя их всех в одну точку через Matrix.
Jitsi для VoIP
Для VoIP мы предлагаем использовать Jitsi, конкретно Jitsi Meet. В первую очередь потому что он отлично интегрируется с упомянутым выше Matrix, то есть нажав в Matrix кнопку "начать видеозвонок" вы автоматически перейдете в Jitsi. Кроме этого, изначально проект развивался как безопасная альтернатива весьма дырявому Zoom (как раз в начале 2020 года, когда по индустрии ударили локдауны).
Jitsi работает по принципу клиент–сервер, то есть для организации конференций используются серверные компоненты Jitsi Videobridge, Jicofo или Prosody, а пользователи подключаются через веб-браузер или мобильные приложения.
Соединение устанавливается с помощью HTTPS и DTLS-SRTP, а аналог сквозного шифрования групповых звонков реализован через E2EE-режим, основанный на WebRTC Insertable Streams. Для массовых конференций есть некоторые технические ограничения, но для рабочих созвонов возможностей этого режима хватает. ��днако при включении некоторых функций (например, запись конференции на сервере) сквозное шифрование может быть выключено, так как необходим доступ к «расшифрованному» потоку на сервере для записи.
Самое важное заключается в том, что Jitsi можно обкатать в режиме облачного сервиса (например, meet.jit.si) прежде чем разворачивать локально полноценно. Но в случае использования облаков важно понимать, что ваша защищенность находится под вопросом, впрочем, как и при использовании любых других решений с внешними серверами.
Что важно, в обоих случаях есть корпоративные версии. Для Matrix это Element Enterprise — коммерческий продукт с дополнительными функциями для масштабных развертываний, с платной поддержкой и SLA. Для Jitsi — Jitsi Meet Enterprise, решение от компаний или интеграторов с до��олнительной корпоративной поддержкой и дополнительными возможностями, такими как расширенные интеграции или даже брендирование.
Технические особенности и стоимость
По стоимости решения все просто — начиная от оплаты серверов, где будет крутиться полностью кастомная версия, которую соберут ваши админы, до цены полноценного развертывания подрядчиком корпоративных билдов с расширенной поддержкой и SLA. Тут все зависит от ваших потребностей и бюджета.
Для развертывания Matrix потребуется сервера Synapse и БД на PostgreSQL, а также настройка шифрования TLS и DNS. Конечно, есть и готовые docker-композ-сборки, которые сделают основную часть работы за вас, но все равно, придется повозиться. К самим серверам требования невелики. На команду до ста человек хватит обычного сервера с 4-8 Gb RAM в зависимости от нагрузки. Текст много не требует. При этом масштабируется (при необходимости) Matrix горизонтально, так как поддерживает федерацию и довольно передовые решения, например Dendrite или Sharding.
С Jitsi все немного сложнее, так как речь идет о видеосвязи. В плане разверстки все стандартно: в базе подойдет любая виртуальная машина с достаточным количеством ресурсов. Но вот как только нужно масштабировать, то есть возникает потребность в видеомостах или разделении на несколько серверов, сложность возрастает. Хоть в базе связи Jitsi у нас используется неприхотливый протокол WebRTC, основной вектор развития которого требует возможности запуска видеозвонка даже на калькуляторе, при росте числа абонентов может потребоваться 3-4 ядра и приличный запас оперативной памяти, минимум 4 Gb,а лучше — 8-16 Gb. Так что закладывать на Jitsi совсем уж базовый сервер, как в случае с Matrix, не стоит.
Но тут есть хорошая новость. Так как Jisti поддерживает балансировку нагрузки через параллельные videobridge-серверы, участников звонка можно раскидать по разным инстансам. Тем самым отдельный мощный сервер для видеосвязи заводить не надо, можно ограничиться россыпью решений попроще и подешевле, если у вас не идет по 8-10 больших конференций одновременно.
Потрогать на практике все это можно без больших приготовлений через клиент Element.io, который поддерживает и Matrix, и Jitsi одновременно и публичные серверы. Там можно посмотреть веб-версии, мобильные платформы и серверные интерфейсы просто через e-mail регистрацию, чтобы принять решение, стоит ли переезд того, или нет.
Важно понимать, что описанное выше решение — не коробочное, и его поддержка требует постоянного внимания и некоторых усилий. У вас не будет кнопки "обновить" или "сделай хорошо", как в больших продуктах, но взамен вы получаете совершенно другую степень контроля над собственными данными. А самое главное — над собственной связью внутри команды. Если переехать хочется, но все выглядит слишком сложным для самостоятельного внедрения, всегда можно обратиться к внешнему подрядчику. Мы такую услугу предоставляем.
Итого
В текущих условиях собственный текст и VoIP уже выглядит довольно привлекательно, особенно, учитывая все ужесточающиеся требования к безопасности. При этом разверстка инфраструктуры внутри страны позволит избежать неловких ситуаций, когда отвалился или заблокировали VPN, и в итоге ты не можешь достучаться до нужной тебе конференции. По качеству же связи тот же Jitsi не уступает популярным корпоративным решениям, ведь все они используют в той или иной степени WebRTC, который стал стандартом конференц-связи. Возможность же прикрутить Matrix к существующим чатам через бриджи, позволит совершить миграцию на единый текстовый клиент плавно, без потрясений и революционных настроений, которые возникают внутри компании при переезде на новый и незнакомый инструмент или платформу.
