Привет! Меня зовут Максим Кульгин, я основатель нескольких SaaS-проектов в РФ. Мы защищаем от скликивания рекламы, парсим данные для бизнеса и занимаемся мобильной разработкой. Сегодня мы хотим рассказать о Mattermost и как перейти на него со Slack.
9392 просмотров
Для тех, кто не знает: Mattermost — безопасный командный мессенджер (с кучей плагинов и возможностей) для совместной работы над проектами.
Опыт построения системы коммуникации на базе Mattermost Server
Всем привет! Меня зовут Григорий Ильдюков, я занимаюсь проектированием, развёртыванием и трансформацией инфраструктуры и информационных систем.
В этой статье я бы хотел поделиться опытом по проектированию и развёртыванию системы коммуникации на базе Mattermost Server.
Немного о том, для чего это было сделано, и почему был выбран именно Mattermost. Предпосылкой к внедрению именно self-hosted системы стала необходимость предоставления пользователям инструмента коммуникации, в полной мере контролируемого Компанией.
Обзор Mattermost — Станислав Булдаков — Демо IT STAND
Mattermost уже был опробован для части пользователей и подходил по функциональности, но его конфигурация не отвечала нефункциональным требованиям, предъявляемым к продуктивным средам. Решено было произвести развёртывание заново, с учётом соответствующих требований.
Также требовалось обеспечить интеграцию со службой каталогов для входа с учётными записями Active Directory и возможность использования мобильного приложения Mattermost.
Кроме того, одним из ключевых требований было использование бесплатных редакций программного обеспечения. Рассмотрение возможности перехода на платные редакции решено было провести в будущем, по мере возникновения необходимости и роста востребованности решения среди пользователей.
Пара слов о Mattermost Server
Как сказано на официальном сайте проекта — это open source, self-hosted альтернатива Slack и прочим системам коммуникации. На момент проектирования был представлен в платных редакциях E10 и E20, а также в бесплатной редакции Team Edition.
Стоимость лицензий платных редакций рассчитывается по количеству пользователей. Отличие бесплатной редакции от платной заключается, в частности, в отсутствии кластеризации и механизма интеграции со службой каталогов MS Active Directory. Об использовании бесплатного ПО и пойдёт речь далее.
В общем случае архитектура Mattermost Server состоит из самого сервера Mattermost, реверсивного прокси Nginx и базы данных для хранения сообщений и настроек. Поддерживаются MySQL и PostgreSQL. По умолчанию Mattermost хранит файлы пользователей (вложения, пересылаемые скриншоты, изображения профилей) локально, в качестве альтернативы можно указать S3-совместимое хранилище. Есть веб, мобильные и десктопные клиенты.
Для отправки push-уведомлений на мобильные клиенты необходим Push Proxy Service, подробнее о нём ниже. Для расширения функциональности Mattermost Server возможна установка различных плагинов.
В нашем случае была разработана следующая архитектура решения: в OpenShift развёртывается сам Mattermost Server, реверсивный прокси Nginx и Keycloak, Push Proxy Service развёртывается на отдельной ВМ в виде MPNS (Mattermost Push Notification Service), БД PostgreSQL и S3-совместимое файловое хранилище предоставляется как сервис внутри сети Компании.
Обзор open source решения Mattermost для коммуникаций команд
Логи компонент передаются в ELK с помощью Filebeat. Решение о развёртывании MPNS на отдельной ВМ было принято по специфическим для Компании требованиям, в общем случае его вполне возможно было разместить в OpenShift.
Архитектурная схема:
Теперь подробнее о компонентах решения и причинах того, почему они представлены в такой конфигурации.
OpenShift. Использовать его было решено для обеспечения высокой доступности компонент решения. Причина выбора именно такого пути — OpenShift представлен в технологическом стеке Компании и предоставляется как сервис внутренним подразделением.
Mattermost Server. Как было сказано ранее, бесплатная редакция Team Edition не поддерживает кластеризацию: нельзя построить конфигурацию, при которой два и более серверов были бы одновременно задействованы в обслуживании пользователей. Причина этого ограничения в том, что серверы при параллельной работе не синхронизируют состояние чатов между собой и не могут оповестить пользователей о новых сообщениях с «параллельного» сервера.
Таким образом может сложиться ситуация, когда пользователи А и Б находятся в одном чате, но подключены к разным серверам, а значит не увидят новых сообщений друг друга, пока самостоятельно не обновят страницу чата.
Для обхода этого ограничения мы развернули два пода с Mattermost Server — основной и резервный, переключение между ними обеспечивается на уровне реверсивного прокси Nginx. Следовательно, пользователи всегда будут подключаться к основному экземпляру сервера и не будут испытывать описанной выше проблемы, а при его отказе будут перенаправлены на резервный.
При подключении хранилища S3, если там используется самоподписанный сертификат, нужно разместить его в /etc/pki/ca-trust/source/anchors и выполнить:
update-ca-trust enable update-ca-trust extract
Или разрешить небезопасные исходящие соединения в конфигурационном файле Mattermost Server:
«EnableInsecureOutgoingConnections»: true
Делать это допустимо только в тестовом окружении.
Ещё одна особенность – устанавливаемые плагины размещаются только на локальной файловой системе. Поэтому необходимо добавлять плагины на этапе сборки образа. Здесь нужно оговориться, что одним из требований Компании был запрет на использование Persistent Volumes или NFS.
Mattermost предусматривает возможность кастомизации веб-клиента, для этого необходимо заменить все файлы в /opt/mattermost/client на полученные в результате сборки нового веб-приложения. Например, для того, чтобы изменить текст на кнопке входа, нужно указать целевой текст в значении ключа login.gitlab в файле /mattermost-webapp/i18n/en.json и запустить сборку. Подробнее об этом можно почитать здесь.
Keycloak. Это open source решение для обеспечения идентификации и управления доступом. Как было сказано выше, редакция Team Edition не может напрямую интегрироваться с MS Active Directory. Для обхода этого ограничения можно использовать Keycloak, который будет выступать связующим звеном между Active Directory и Mattermost Server.
Keycloak при взаимодействии с Mattermost эмулирует аутентификацию средствами GitLab (поддерживаемую редакцией Team Edition), осуществляя при этом аутентификацию пользователей на основании данных об учетных записях из Active Directory.
Для реализации такой схемы на стороне Keycloak настраивается маппинг какого-либо атрибута учётных записей из Active Directory, имеющего уникальные численные значения, с атрибутом ID, передаваемым Keycloak в Mattermost при аутентификации пользователей. Описанная схема позволяет осуществлять вход в Mattermost с использованием учетных данных из Active Directory.
Концептуальная схема интеграции с AD:
Нужно отметить, что при использовании описанной выше схемы, идентификация и аутентификация пользователей осуществляется средствами Keycloak и Active Directory, а авторизация — средствами Mattermost. Это означает, что осуществлять назначение ролей пользователям на основании их членства в группах Active Directory нельзя, для этого нужно использовать платную редакцию Mattermost.
В нашем случае это не было препятствием, т.к. абсолютное большинство были рядовыми пользователями системы, а назначение нескольких администраторов можно было осуществить вручную через GUI Mattermost Server.
Подробно на настройке я останавливаться не буду, отмечу лишь, что Keycloak требуется отдельная БД, в которой хранится настроенная конфигурация и пользователи. Подробнее о настройке можно почитать по ссылке.
Также следует обратить внимание вот на что – если разрешить пользователям использование токенов для доступа к Mattermost, то нужно предусмотреть механизм блокировки токенов, принадлежащих заблокированным на уровне Active Directory учётным записям. Иначе заблокированные пользователи смогут получить доступ к Mattermost с помощью ранее созданного токена.
Реверсивный прокси Nginx. Конфигурация Nginx создавалась на основе рекомендованной, но в нашем случае приобрела некоторые особенности.
Во-первых, для обеспечения переключения между основным и резервным подами Mattermost используется директива backup:
upstream backend
Во-вторых для обеспечения входа через Keycloak был добавлен следующий location:
location ~ /auth/.* < proxy_pass https://secure-keycloak-mattermost.apps.duke253.ru;
Для отправки логов в ELK в поды добавлялся контейнер с Filebeat.
Push Proxy Service. Этот компонент служит для отправки push-уведомлений на мобильные клиенты Mattermost т.е. выступает в качестве прокси между Mattermost Server с одной стороны и Apple Push Notification Services и Firebase Cloud Messaging Service с другой.
Есть несколько вариантов реализации этой функции — MPNS, HPNS и TPNS. HPNS — Hosted Push Notification Service, предоставляется как высокодоступный сервис обладателям платных редакций. TPNS — Test Push Notification Service, тоже, что и HPNS, но без гарантий работоспособности, можно использовать с Team Edition.
И, наконец, MPNS — реализация Push Proxy для размещения on-premise. Если планируется использовать кастомизированное мобильное приложение Mattermost, как было в нашем случае, то MPNS — это единственный возможный вариант.
Все варианты реализации позволяют регулировать содержимое push-уведомлений: можно посылать полный текст сообщения или лишь уведомлять о новом сообщении с указанием отправителя или без такового.
В платной редакции E20 предусмотрен механизм более безопасной отправки содержимого сообщений — с фактической отправкой через push только id сообщения, получив который мобильный клиент запрашивает содержимое напрямую с сервера Mattermost. Подробнее об этом здесь.
Ещё одной особенностью MPNS является отсутствие поддержки SSL для соединений между Mattermost и MPNS. Если требуется устанавливать защищённое соединение между ними, то можно установить Nginx перед MPNS. Также MPNS не проверяет отправителя сообщения, т.е. отправлять push-уведомления можно, например, с помощью curl. Следует помнить об этом и ограничить возможность подключения к MPNS только со стороны Mattermost Server на уровне Nginx и / или файервола.
Подробнее о Push Proxy можно почитать в документации.
Несколько слов об интеграции Mattermost с различными системами
Поддерживаются различные механизмы интеграции, самым простым из которых являются входящие веб-хуки. С помощью этого механизма можно настроить автоматическую отправку уведомлений из внешних систем в определённый канал Mattermost.
Для создания входящего веб-хука они должны быть разрешены на уровне сервера, и пользователь должен обладать полномочиями роли Team Admin или System Admin. Также возможно разрешить создание интеграций для рядовых пользователей, для это необходимо указать в конфигурационном файле в «ServiceSettings»:
«EnableOnlyAdminIntegrations»: false
Все пользователи с указанными полномочиями видят все настроенные веб-хуки в рамках одной Team. Сообщение, сгенерированное внешней системой, будет отображено в чате от имени того пользователя, который создал веб-хук, но с пометкой «BOT». В качестве примера можно привести интеграции с Bitbucket и TeamCity.
Таким образом, нам удалось успешно реализовать поставленную задачу, построив систему коммуникации, отвечающую всем поставленным требованиям с использованием только бесплатных редакций ПО.
P.S. В статье описан опыт построения системы в первом полугодии 2021 года. За это время ситуация в части потенциально применимых решений могла существенно измениться. Тем не менее, в статье приведён достаточно актуальный пример решения подобных задач.
- Блог компании Axenix (ex-Accenture)
- Системное администрирование
Источник: habr.com
Slack vs Mattermost: какое приложение лучше для вашей организации?
Slack против Mattermost? В современном цифровом мире вы стали Корпоративный потенциал Общение и сотрудничество в онлайн-среде — необходимость. Чтобы удовлетворить этот растущий спрос, он создал Вялый Цифровое рабочее пространство 2013 года для обмена личными и групповыми сообщениями, обмена файлами и интеграции стороннего программного обеспечения.
Хотя это полезно во многих отношениях, оно не отвечает всем потребностям предприятия, даже с предложениями Enterprise Grid. Здесь на помощь приходит система обмена сообщениями с открытым исходным кодом. Mattermost чтобы восполнить пробел. Mattermost специально разработан для организаций и предоставляет Все, что делает Slack, и многое другое.
Взгляните на Slack и Mattermost и узнайте, как определить, что лучше всего подходит для вашего бизнеса.
Slack против Mattermost
1. Хостинг
Mattermost размещается самостоятельно
Slack — это облачный инструмент, который очень легко интегрировать в вашу существующую организацию. Вы можете просто создать команду, добавить участников и работать, это так просто. Даже DZTechs работает на Slack. С другой стороны, Mattermost дает вам возможность разместить свой собственный сервер, что позволяет вам внедрять программное обеспечение в соответствии с руководящими принципами безопасности вашей организации.
Позвольте мне упростить вам задачу, если ваша организация хочет хранить чаты, вложения и файлы локально на своих собственных серверах. Mattermost — это то, что вам нужно, если вам нужен больший контроль над тем, как инструмент применяется в вашей бизнес-сети, или если вам нужны строгие правила в области ИТ.
Однако, если ваша команда небольшая и новая с большим разнообразием, и кому нужен инструмент, который выполняет задачи? Slack — лучший инструмент для вас.
2. Пользовательский интерфейс и взаимодействие с пользователем
Как я уже говорил, Slack — это самый популярный инструмент на DZTechs, но во время тестирования у меня не было проблем с переключением на Mattermost.
Slack и Mattermost выглядят идентично друг другу с похожей компоновкой, где вы получаете огромное окно чата справа и контакты слева. Вы можете добавлять разные команды и поддерживать их доступ к эксклюзивным каналам и пользователям. Это означает, что вы можете работать с разными командами, и у них не будет доступа к каналам друг друга, что является отличной функцией для организаций с разными командами. Slack и Mattermost поддерживают режим Rich Text, что означает, что вы получаете единообразный текст в обоих инструментах.
Кроме того, вы получаете настраиваемые команды косой черты, смайлики и многоязычную поддержку для них обоих. Mattermost поддерживает около 16 различных языков, в то время как Slack поддерживает только пять. Кроме того, вы можете настроить Mattermost в соответствии с брендом вашей организации.
Не для того, чтобы разглагольствовать, но я заметил небольшую разницу между Slack и Mattermost, вариантом ответа. Slack делает это настолько плохо, что я никогда не замечал, что это плохо, пока не использовал Mattermost. Функция ответа Mattermost более проста, чем Slack.
минимум; Slack يعد И Mattermost одинаково хороши и имеют согласованный дизайн и удобство использования обоих инструментов.
3. Ограничьте количество сообщений, доступных для поиска.
У Slack и Mattermost есть бесплатные планы с платной подпиской. Slack, однако, ограничивает количество доступных для поиска сообщений в бесплатной версии до 10000 XNUMX, что может стать инструментом взлома для многих организаций. Mattermost не имеет такого ограничения в бесплатном плане, потому что данные в любом случае хранятся на вашем сервере.
Вам необходимо перейти на платный план, чтобы избавиться от этого ограничения в Slack, но вы можете обойти это ограничение, используя Сларк Это позволяет вам искать по всей истории поиска, даже если вы пользуетесь бесплатным тарифным планом.
4. Интеграция с ботами и приложениями.
Скажу честно, Slack превосходит Mattermost, когда дело доходит до интеграции с наружными инструментами. Slack имеет почти 1500 интеграций с приложениями и ботами, что делает Slack доминирующим инструментом. У Mattermost и Slack есть API для создания ваших приложений и ботов, но Slack выигрывает по количеству. Ознакомьтесь с некоторыми из Лучшие приложения Slack здесь.
Если вам нужен инструмент связи, который находится между вашими существующими сервисами, такими как Google Drive, Github, Trello и Zapier, Slack — это простая задача. Mattermost интегрирует Github, Zapier, Docker, GoLang, Jira и т. Д., Поэтому, если вы работаете с этими сервисами и хотите, чтобы другие параметры Mattermost соответствовали вашим потребностям, перейдите в Mattermost.
5. Мобильные приложения
Как и настольная версия инструмента, мобильные приложения сегодня не менее актуальны. Slack и Mattermost доступны для Windows, Mac, Linux, Android и iOS. Однако вы открыли для себя приложения для Slack и можете легко переходить с рабочего стола на телефон. Приложения Mattermost существуют лишь с небольшими сбоями здесь и там. Например, приложение iOS для Mattermost иногда зависает и не синхронизирует уведомления.
Итак, Slack берет здесь все на себя.
6. Видеозвонок
Slack имеет встроенную функцию аудио- и видеозвонков, которая поддерживает индивидуальные звонки по бесплатному тарифному плану. Mattermost использует webRTC для видеозвонков, но с момента бета-версии интеграция прекращена. Вы можете установить сторонние плагины, например Skype для бизнеса و Jitsi و Zoom و большая синяя кнопка , и так далее. Большинство надстроек имеют свои собственные цены, поэтому это может быть дополнительными расходами для пользователей, у которых еще нет решения для видеозвонков в своей организации.
Поэтому, если вам нужна встроенная поддержка подключения, Slack уже есть для вас, однако, если вы уже платите за услугу из этой поддержки, Mattermost будет лучшим вариантом.
7. Хранение файлов
На Mattermost нет ограничений на хранение.
Slack дает вам 5 ГБ общего хранилища в бесплатной версии и 10 ГБ на пользователя при переходе на платный план. При превышении лимита в 5 ГБ старые файлы архивируются, и их можно разблокировать при обновлении. Это не относится к Mattermost, поскольку все файлы хранятся в вашей базе данных, вы можете хранить как можно больше данных на серверах, где находится предоставленное вами пространство, доступных до тех пор, пока они не будут удалены с серверов.
8. Цена
Mattermost является бесплатным планом с открытым исходным кодом для самостоятельного размещения.
Я сравнил функции, которые вы получаете в бесплатной версии Slack и Mattermost, но если вы хотите перейти на платную подписку, вы получите некоторые дополнительные льготы для корпоративного уровня. Платный план Slack Standard дает вам доступ к OAuth через API Google, систему единого входа на основе SAML, настраиваемую политику хранения файлов и сообщений и приоритетную поддержку. Mattermost Enterprise E10 также предлагает такие функции, как единый вход LDAP, зашифрованные push-уведомления, расширенную политику контроля доступа и поддержку на следующий рабочий день. Стоимость Slack Standard составляет 80 долларов США за пользователя в год (со скидкой 32 доллара США) за пользователя в год, а вы получаете Mattermost Enterprise E10 за 39 долларов США за пользователя в год.
Возможности, которые вы найдете в Slack
- частное облачное приложение
- Исправлены чаты, отсортированные по теме
- частные группы
- Прямые сообщения
- Делиться файлами
- машинное обучение
- смайлики
- Все материалы доступны для поиска
- Уведомления
- Интегрируется со сторонними сервисами и интеграциями сообщества
- Мобильные приложения для iOS, Android и Windows
- Каталог приложений Slack содержит более 1000 приложений
- Интеграция с дополнительными системами с использованием Zapier и IFFFT
- Slack Box поддерживает создание приложений Slack
- Неограниченное рабочее пространство
- Шифрование данных при передаче
- Оставьте личное сообщение
- экономия SCIM
- Управление приложением
- Система единого входа на базе SAML
- Поддержка DLP (корпоративная сеть)
- Управление мобильностью предприятия (корпоративная сеть)
- электронное обнаружение (корпоративная сеть)
Возможности, которые вы найдете на Mattermost
- Сервис индивидуальных и групповых сообщений
- Обмен файлами и поиск
- Родные приложения для iOS, Android, Windows, Mac и Linux
- Неограниченная история поиска и интеграция
- смайлики
- Уведомления
- Новые ежемесячные улучшения в Team EditionОткрытый код
- Превосходство данных
- Публикация с одним арендатором
- Коммуникация на корпоративном уровне
- Твой дом
- очень формальный
- Интегрирован с существующими системами
- Полная белая маркировка
- Высокая масштабируемость
- Легко настроить
- многоязычный
- AD / LDAP SSO и синхронизация (E10)
- Расширенный контроль доступа (E10)
- Многофакторная аутентификация (E10)
- Пользовательские инструменты брендинга (E10)
- Коммерческая поддержка (E10)
- Горизонтальное дозирование (E20)
- Высокая доступность (E20)
- Мониторинг производительности (E20)
- Отчетность о соответствии (E20)
- Okta, ADFS, SAML SSO (E20)
В заключение: Slack vs Mattermost
Как я сказал ранее, Slack и Mattermost — очень похожие программные решения, предназначенные для разных областей. Поскольку они находятся на одном конкурентном рынке, многие пользователи путаются между двумя вариантами. Slack — ваш выбор, если ваша организация небольшая и разнообразная и вам нужен инструмент, который «просто работает». Его легко реализовать, и он интегрируется только с другими приложениями и службами, что делает его очень простым.
Mattermost следует выбирать организациям, для которых безопасность и конфиденциальность данных являются главным приоритетом. Самостоятельный хостинг упрощает аудит и дает вашей организации больший контроль над данными.
Я надеюсь, что это руководство помогло вам развеять любые сомнения по поводу этих двух инструментов. Что вы думаете об этих двух приложениях и какое из них вы используете на своем рабочем месте? Позвольте мне знать в комментариях ниже. Если вы ищете TБесплатные приложения для обмена мгновенными сообщениями для предприятий, ознакомьтесь с ними здесь.
Источник: www.dz-techs.com