Как запустить корпоративный мессенджер на 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 можно создавать отложенные сообщения

Большой процент автоматизации процессов в повседневной жизни в 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
Можно создавать черновики

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

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

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

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

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

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

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

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

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

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

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

0
120 комментариев
Написать комментарий...
Afanasy Punka

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

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

Ответить
Развернуть ветку
Yonigaz

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Rostislav S.

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

Ответить
Развернуть ветку
1 комментарий
Johnny B Goode

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

Ответить
Развернуть ветку
Vabka -
Где исходники? Или вам плевать на опенсорсные лицензии

Из того что сказано в статье - лицензия AGPL не нарушена.

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

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

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
1 комментарий
Sergey Ilyin

Форк же

Ответить
Развернуть ветку
Борис Вишневский

Тоже хотел бы увидеть исходники, соыт не будет опенсорсным? Лицензия, по идее, на нарушена

Ответить
Развернуть ветку
Vabka -

[Коммент задублировался]

Ответить
Развернуть ветку
Александр Курицын
Возможно, он будет востребован на рынке, потому что не все готовы мириться с проблемами в open sourse решениях

То есть все-таки планируется выпуск мессенджера на рынок? Если так, то это хорошая новость, телеграм превратился из рабочего мессенджера постепенно превращается в гигантскую помойку))

Ответить
Развернуть ветку
Тинькофф
Автор

Возможно в будущем действительно выпустим Time на рынок. Если примем такое решение, обязательно расскажем об этом :)

Ответить
Развернуть ветку
24 комментария
Помощник Гугла

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

Ответить
Развернуть ветку
6 комментариев
Алексей Вольнов

крутяк, импортозаметили слак)

Ответить
Развернуть ветку
Gera
не выдерживает текущее количество пользователей, а их более 20 тысяч

как показывает самый свежий опыт воротил бизнеса, эту проблему можно решить с другой стороны 😄

Ответить
Развернуть ветку
Станислав

спросите у Маска?

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Женя Белоусов

Вау, я, оказывается, бот 🤖

Ответить
Развернуть ветку
Heather Morris

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

Ответить
Развернуть ветку
любитель спорить на VC

реально один в один как слак

Ответить
Развернуть ветку
Vabka -

Так вроде слак тоже изначально на маттермосте основан

Ответить
Развернуть ветку
2 комментария
Не очень хороший человек
Ответить
Развернуть ветку
Arseni Buinitski

Сложная задача. Если и правда решили её так, как преподносится, моё уважение.

Ответить
Развернуть ветку
Тинькофф
Автор

💛

Ответить
Развернуть ветку
1 комментарий
Аккаунт удален

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

Ответить
Развернуть ветку
Павел

У кого что болит…

Ответить
Развернуть ветку
Dmitry Anishkin

ну че, ждем на рынке, успехов вам

Ответить
Развернуть ветку
Тинькофф
Автор

Спасибо 💛

Ответить
Развернуть ветку
Gre Li

А зачем замазали имя Даниила Дмитриенко?

Ответить
Развернуть ветку
Наглый Кот

Чтоб не схантили :D

Ответить
Развернуть ветку
Кирилл Васильев

Привет, круто, вы молодцы. В опенсорс выложите? Или как-то можно вашей версией попробовать по пользоваться у себя?

Ответить
Развернуть ветку
Тинькофф
Автор

Приветствуем. Напишите нам на [email protected]. Подробно ответим на все вопросы ;)

Ответить
Развернуть ветку
Alex Roth
Ответить
Развернуть ветку
Роман Вельмакин
Ответить
Развернуть ветку
Доктор Ливси

Отлично! Выглядит неплохо

Ответить
Развернуть ветку
C Shark

а когда примерно планируется выход с мессенджером на рынок? негде обсуждать безуспешные проекты

Ответить
Развернуть ветку
Андрей Мельник

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

Ответить
Развернуть ветку
Павел

Если будет потребность то сделают. А так зачем, если нет необходимости.

Ответить
Развернуть ветку
1 комментарий
Pavel Loginov

Круто! Можете! А франки когда вернете?

Ответить
Развернуть ветку
Тинькофф Инвестиции

Сейчас работаем по этой ситуации.

20 июня после остановки торгов на Московской бирже мы направили в НКЦ платежные поручения на вывод всех клиентских CHF на счет нашего банка- корреспондента, однако вплоть до сегодняшнего дня мы так и не получили денежные средства от НКЦ. На протяжении всего времени с 20 июня мы находимся на постоянной связи с НКЦ и предпринимаем попытки получения платежа.

13 июля НКЦ сообщили нам о том, что они исполнили обязательства по возврату CHF, однако эти денежные средства на указанную дату мы не получили.

22 июля мы получили от НКЦ информацию о том, что денежные средства вернулись на корреспондентский счет НКЦ. Сейчас мы взаимодействуем с НКЦ, обсуждая дальнейшие шаги. В том числе мы обсуждаем использование организацией НКЦ иных банков-корреспондентов или возможность конвертации CHF в российский рубль.

О всех важных новостях по ситуации с CHF мы будем оперативно вас информировать.

Ответить
Развернуть ветку
Oleg Nova

В Mettermost LDAP sync только начиная с Professional лицензии.
Т.е. в opensource этого кода нет

https://mattermost.com/pricing/#self-hosted

В Тинькофф написали свою интеграции MM в LDAP?

Ответить
Развернуть ветку
Лев Аминов

В mm enterprise-код вынесен в другую репу, в основной кодовой базе есть интерфейсы для работы с функционалом, но нет реализации.

Ответить
Развернуть ветку
Тинькофф
Автор

Приветствуем. Вы можете задать все интересующие вопросы здесь - [email protected].

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Дмитрий Неизвестный

54к - это все кто есть в AD разом войдут в систему и начнут что-то писать
Разом - все сотрудники во всех часовых поясах.
Реально больше всего сотрудников в европейской части РФ в рамках обычного рабочего дня по Московскому времени.
Норм цифры, вполне правдоподобны. Кому доводилось работать в столь растянутых по стране организациях знает как это выглядит.

Ответить
Развернуть ветку
Andrey A

Еще интересно есть ли в Mattermost видеозвонки пир ту пи? Или например групповые?

Ответить
Развернуть ветку
привет я из internet

В бете у них есть 1х1 звонки (не видео). Так что думаю группых/видео в ближайшей перспективе ждать не приходится.

Ответить
Развернуть ветку
Альберт Базалеев

Круто! Очень любопытно:
Сколько времени всего ушло от начала адаптации до внедрения?
Сколько человек было задействовано в разработке?

Ответить
Развернуть ветку
Тинькофф
Автор

Здравствуйте! Мы готовы ответить на вопросы, рассказать, как автоматизируем наши процессы с помощью корпоративного мессенджера. Если у вас есть идеи по развитию, опыт разработки мессенджеров или вы выбираете софт для своей компании, пишите на [email protected].

Ответить
Развернуть ветку
2 комментария
Felix Matveev

Тихо с...ил и ушёл - называется нашёл. Закомиттить хоть часть доработок обратно в проект не хочется?

Столманн, конечно, в своё время очень многое предвидел на года вперёд.

Ответить
Развернуть ветку
Руслан

А причём тут с...ил, если лицензия позволяет код так использовать?

Ответить
Развернуть ветку
Vabka -

Лицензия AGPL не обязывает сообщать автору оригинала о том, какие патчи были сделаны, в отличие от GPL

Ответить
Развернуть ветку
Дмитрий Неизвестный

На прошлой работе всё общение команды было в телеге
Чат со справочной информацией до сих пор живёт, т.к. ну очень уж удобно иметь документацию всегда в кармане.
Был там же и тимс, который мы хаили за перегруженность.
На нынешней - никаких внешних мессенджеров и....Lync
Кааааак же я был несправедлив к тимсу.
Надеюсь он меня простит.
Поскорее пилите своё решение - будет шанс получить достойную замену.
Видеозвонки и конфернеции TiMe поддерживает?

Ответить
Развернуть ветку
Тинькофф
Автор

Уверены, простит :) Нет, видеозвонки и конференции TiMe поддерживает, но мы всегда приветствуем обратную связь. Напишите нам на [email protected]. Обязательно подумаем и над этим.

Ответить
Развернуть ветку
2 комментария
Михаил Нырков

Lync же в Skype for business превратился давно и уже даже и от него успели отказаться.
Где же вы этого мамонта откопали?

Ответить
Развернуть ветку
Andrey A

А чем элемент не зашел?

Ответить
Развернуть ветку
Andrey A

А чем элемент не устроил?

Ответить
Развернуть ветку
Grigorii Liubachev

Очень здорово, что вы видите реальную ценность в корпоративных мессенджерах!

Ответить
Развернуть ветку
Lord Glebye

Open sourCe в предпоследнем абзаце.

Ответить
Развернуть ветку
Тинькофф
Автор

Точно!

Спасибо, поправили)

Ответить
Развернуть ветку
Alexandra S.

Эээээ.. а куда делся слак? В плей маркете висит, обновляется...

Ответить
Развернуть ветку
Vabka -

С РФ же не сотрудничает, а на бесплатном тарифе всего 10к сообщений индексирует для поиска.

Ответить
Развернуть ветку
Tot Samiy

лучшие

Ответить
Развернуть ветку
Angry QA
Ответить
Развернуть ветку
Игорь

слак 2.0

Ответить
Развернуть ветку
Аналитика на Диване

mattermost 1.0

Ответить
Развернуть ветку
World is a Playground

Тими! Лэтмиаут!

Ответить
Развернуть ветку
Serejka Flare

.

Ответить
Развернуть ветку
Руслан Коновалов

Я смотрю на менеджер tada вместо собака.

Ответить
Развернуть ветку
Рядовой Шутник

Скучаю по :kazino: :(

Ответить
Развернуть ветку
Anton Ryabchikov

У нас в компании тоже был Slack, но после известных событий были вынуждены мигрировать в Discord. Первое время плевались, конечно, но сейчас более менее привыкли.

Желаю удачи и потенциального выхода на рынок 🥳

Ответить
Развернуть ветку
Павел

Добрый вечер! Столкнулся с неправомерными действиями со стороны Тинькофф банка и заметил, что история моя довольно распространенная. С 24.10 банк удерживает денежные средства и ограничивает меня в распоряжении ими. С 24.10 я прошу банк закрыть мой счет и вывести денежные средства, на что я имею право согласно ГК РФ 859 ст. и 8.1 УКБО банка. Банк, в свою очередь, отказывает мне в закрытии счета, тем самым нарушая законодательства РФ, оправдываясь пунктами УКБО. Все положения, которые противоречат положениям ГК РФ, являются недействительными. Прошу, чтобы сотрудники банка обратили внимание на мою ситуацию и прекратили незаконные действия по отношению ко мне.

Ответить
Развернуть ветку
Тинькофф
Автор

Приветствуем. Мы работаем строго в соответствии с законодательством РФ. Хотели бы разобраться в ситуации. Подскажите, пожалуйста, ФИО и дату рождения в ЛС.

Ответить
Развернуть ветку
Тинькофф
Автор

Мы проводим внутреннее расследование в соответствии с п. 4.5 и 7.3.5 условий обслуживания. До окончания расследования мы не сможем дистанционно принять распоряжение на вывод денег и закрытие счета. Однако, это не означает, что мы удерживаем ваши деньги, вы можете подать заявление на вывод денег и раньше окончания расследования. Вы с паспортом или доверенное лицо с нотариально заверенной доверенностью можете обратиться в офис банка по адресу: г. Москва, ул. Хуторская 2-я, д. 38А, стр. 26. в рабочие дни. Форму доверенности можно уточнить у нотариуса. При любых дополнительных вопросах или при необходимости предупредить о визите – напишите на почту на [email protected].

Законы РФ мы не нарушаем.

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

И в итоге сделали свой форк, который сможет поддерживать только команда Тинькофф?

Причем исправления в основном продукте можно было подлить в MM, но нет :D

Ответить
Развернуть ветку
Лев Аминов

Думаю, это реализовано в виде отдельного сервис-прокси.

Ответить
Развернуть ветку
Olga Talantova

круто-круто!

Ответить
Развернуть ветку
Jetchat

Коллеги молодцы, с радостью затестим как только будет возможность)

Мы так же искали альтернативу Слаку и возможность перестать метаться по нескольким сервисам сразу (отдельные таск-трекеры, отдельно мессенджер, и т.д.), поэтому решили создать свой корпоративный мессенджер, включив в него автоматизацию бизнес процессов, трекер задач, а так же прочих ништяков которых не хватало нам :)

Ответить
Развернуть ветку

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

Развернуть ветку
Странник Путников

мм это уже унылая штука, печально это все

Ответить
Развернуть ветку
Павел

Создай своё, не унылое ))

Ответить
Развернуть ветку
117 комментариев
Раскрывать всегда