Как запустить корпоративный мессенджер на 50 тысяч человек вместо ушедшего Slack

Рассказывают разработчики «Тинькофф».

Как запустить корпоративный мессенджер на 50 тысяч человек вместо ушедшего Slack

До марта 2022 года все сотрудники компании общались в Slack — пока мессенджер не объявил, что прекращает деловые отношения с клиентами из России. До конца оплаченного периода у нас оставалось три месяца. Бесплатная версия Slack нам не подходила: в ней можно просматривать не более 10 тысяч последних сообщений, а доступный объем файлового хранилища — всего 5 ГБ. Тогда мы решили разработать свой корпоративный мессенджер.

Как выбирали основу для мессенджера

Незадолго до этой ситуации коллеги в Тинькофф уже анализировали рынок. В начале зимы в компании выбирали мессенджер для операционных сотрудников. Рассматривали несколько бесплатных и опенсорс-мессенджеров: Zulip, Element, RocketChat и Mattermost (ММ). Первые два варианта не подошли. Мы смотрели на отзывы и ответы разработчиков, архитектуру и возможность применить решение на более чем 54 тысяч сотрудников.

Далее мы развернули две тестовые инсталляции для внутреннего тестирования. В течение нескольких месяцев собирали фидбэк с пользователей. По функциональности, визуалу, UX им больше понравился MM.

Еще мы провели нагрузочное тестирование этих решений на равноценной инфраструктуре, эмулируя работу операционных подразделений. При равноценной нагрузке результаты MM были на 75% лучше. А еще Mattermost похож на Slack, это могло помочь сотрудникам быстрее адаптироваться к новому мессенджеру.

В итоге лучшая производительность из выборки и возможность развернуть мессенджер на нашей инфраструктуре стали решающими факторами выбора.

Почему решили делать свой мессенджер, а не купить готовый

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

Еще нам хочется собрать всю команду в одном месте. Сейчас команды, которые занимаются производством продуктов, развитием и поддержкой бизнеса, и операционные подразделения работают в разных мессенджерах. Так было, когда мы пользовались Slack, но сейчас у нас появилась возможность это исправить. Основная цель — чтобы 100% сотрудников нашей компании пользовались общим каналом коммуникации.

Запрос на мессенджер для операционных подразделений поднимался давно. Тому было несколько причин, в том числе:

— сложность поддержки и обеспечения требований информационной безопасности;

— сложность интеграции различных приложений для совместной работы с внутренними системами, например с Active Directory.

Важно, чтобы сотрудники операционных подразделений в итоге пользовались безопасным каналом коммуникации, который бы встраивался в экосистему Тинькофф. Нужно поддержать работу более чем 50 тысяч сотрудников и разграничить права доступа для всего разнообразия наших подразделений.

Мы хотим быть независимыми от рынка и санкций, поэтому выбирали open source решение, которое сможем развивать своими силами. Корпоративный мессенджер — критичный элемент нашего бизнеса, и мы должны быть уверены в его стабильности.

Как собрали команду и организовали работу над продуктом

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

Откликнулись топовые бэкенд- и фронтенд-разработчики, подобралась опытная команда SRE. Еще к нам присоединились аналитик и дизайнер, команда QA, которая помогла найти дефекты при переезде и в самом Mattermost.

Недавно к нам вышел опытный mobile lead с огромной экспертизой в react native. Мы масштабируем команду, потому что понимаем, что перед нами стоят сложные вызовы. Мы собрали внушительный список задач, доработок и продуктовых функций, которые будем улучшать.

Переезд на Mattermost

В середине апреля мы начали переезд. В Mattermost есть готовые инструменты для импорта данных из Slack, но они очень медленно работали на наших объемах, переезд занял бы месяцы. Пришлось писать свое решение для переноса данных, отбросить приватные переписки. Даже такой компромисс привел к тому, что команда работала все майские праздники, а иногда — по ночам, чтобы успеть до окончания лицензии Slack.

Еще нам пришлось разработать недостающие функциональности Slack, например Workflows — на этом функционале строились вся автоматизация процессов команд в Slack. Функционал Workflow автоматизирует рутинные процессы на базе корпоративного мессенджера без написания кода. Например, с помощью Workflow можно автоматизировать создание заявки в SD или структурировать общение в канале — допустим, ограничить возможность свободно писать сообщения и заменить их обращениями через формы, которые потом публикуются в канал. Еще таким образом можно собирать статистику.

Еще с помощью Workflow можно создавать отложенные сообщения
Еще с помощью Workflow можно создавать отложенные сообщения

Большой процент автоматизации процессов в повседневной жизни в Slack был завязан на ботов. Посчитали затраты и поняли, что очень дорого переписывать всех ботов на API Мattermost, которое во многом несовместимо с API Slack, поэтому пришлось написать свое решение, позволяющее пользователям создавать ботов через бота Slack и MM.

Так нам удалось перенести ботов из Slack в TiMe в кратчайшие сроки и без переписывания всей кодовой базы.

В итоге мы победили все сложности и переехали, Mattermost превратился в TiMe — новый корпоративный мессенджер Тинькофф. К 14 июня весь трафик сообщений перешел в TiMe, 15 июня Slack стал недоступен.

С какими сложностями столкнулись

Mattermost в рекомендованной конфигурации не выдерживает текущее количество пользователей, а их более 20 тысяч. Нам пришлось многое доработать как со стороны инфраструктуры, так и со стороны кодовой базы. На старте реализовали критичный функционал.

High availability interface. Эта доработка повышает доступность и производительность мессенджера.

SSO-интерфейс. Single Sign-On — единый и безопасный вход в приложение.

Search-интерфейс. Поиск сообщений, контактов, файлов.

Метрики приложения. Техническая, но важная задача по отслеживанию метрик мессенджера позволяет быстро реагировать на инциденты и принимать превентивные меры, чтобы их избежать.

Сейчас для 20 тысяч пользователей доступность составляет примерно 99,7%, в прошлом месяце доступность была около 99,5%. Когда мы работали с сырым Mattermost, на меньшем количестве пользователей, доступность доходила едва ли до 96%. В ближайшее время решим оставшиеся проблемы и получим заветные 99,99%.

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

Пользователи привыкли к удобным приложениям, в которых есть микровзаимодействия, анимация, свайпы, классный UI, но главное — продуманный интерфейс. Поэтому приходится многое править не только в коде Mattermost, но и в его дизайне.

В момент переезда на Mattermost в десктоп и веб-версии мы сделали больше 200 средних изменений и около 15 глобальных. В основном это дефекты и правки пользовательского интерфейса.

В плане работы над UX/UI мы смотрим и ориентируемся на мобильные приложения Тинькофф и Тинькофф Инвестиций и идем в ту же сторону с нашим корпоративным мессенджером, постоянно развивая TiMe.

Так выглядит личный профиль и рабочее пространство TiMe
Так выглядит личный профиль и рабочее пространство TiMe
Можно создавать черновики
Можно создавать черновики

Что уже сделали

Из того, что уже успели сделать в сжатые сроки:

  • добавили раздел «Черновики»,
  • переработали профиль пользователя,
  • проработали механизм обновления десктопа и мобайла, а также некоторые ошибки и состояния приложения,
  • реализовали фичи: «Отложенные и регулярные сообщения» и «Напоминания о сообщениях»,
  • разработали удобный редактор сообщений и некоторые экраны поиска и создания групп.

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

Mobile реализован на React Native в связке с Redux. В Mattermost mobile большие проблемы с производительностью и отзывчивостью интерфейса, стабильностью, ну и, конечно, баги. Например, сильно увеличено время загрузки самого приложения, заметно дольше загружаются каналы и переписки, есть проблемы с загрузкой больших каналов, в которых более 1000 пользователей. В новой версии мы уже это поправили.

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

Бывают интересные дефекты: например, когда пользователю приходит push о новом сообщении, он заходит в диалог и вместо своей аватарки видит чужую.

Какие планы на развитие продукта

Наше самое большое достижение — продуктом уже пользуется весь штат штаб-квартиры Тинькофф и часть операционных подразделений, а это больше 20 тысяч человек. С подключением операционных подразделений пользователей станет в несколько раз больше. Сейчас основная цель — развивать корпоративный мессенджер как продукт, который направлен на внутреннего пользователя, и к Новому году реализовать бэклог фич, которые мы считаем критичными.

Мы хотим сделать мессенджер, которым сможем гордиться. Возможно, он будет востребован на рынке, потому что не все готовы мириться с проблемами в open source решениях, но при этом не имеют возможности выделить постоянную продуктовую команду.

Мы готовы ответить на вопросы, рассказать, как автоматизируем наши процессы с помощью корпоративного мессенджера. Если у вас есть идеи по развитию, опыт разработки мессенджеров или вы выбираете софт для своей компании, пишите на time@tinkoff.ru.

120120
120 комментариев

По скринам очень похоже на слак 🤔

Дерзайте парни, выходите на рынок, бездуховный телеграмм конечно хорош, но как корпоративный месседжер не годится

59
Ответить

Вперёд ребята! Только название поменяйте

3
Ответить

Комментарий недоступен

3
Ответить

Что значит бездуховный? А какие тогда духовные🤡

Ответить

Т.е. вы взяли открытый mattermost, допилили его и оставили себе? Где исходники? Или вам плевать на опенсорсные лицензии как и всем компаниям в РФ?

28
Ответить

Где исходники? Или вам плевать на опенсорсные лицензииИз того что сказано в статье - лицензия AGPL не нарушена.

Она обязывает делать исходники доступными для всех пользователей продукта.
А раз пока продукт используется только в пределах компании - значит и пользователями являются только сотрудники компании.

Когда будет речь о продаже - тогда придётся уже думать над приобретением коммерческой лицензии.

31
Ответить

Комментарий недоступен

12
Ответить