(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(93790508, "init", { defer: true, clickmap:true, trackLinks:true, accurateTrackBounce:true }); ym(93790508, 'hit', window.location.href);

Как мы сэкономили 3 млн рублей в год, заменив Slack на Rocket.Chat

Google Talk, Jabber, Slack, WhatsApp, Telegram, Zulip, Rocket.Chat, Selectel Chat, — мы не собрали рейтинг мессенджеров, но описали свой путь к идеальному для нас корпоративному инструменту. Опыт может быть полезен и вам: мы несколько раз меняли ориентиры и успешно перестраивались на новые технологичные волны.

В начале был Jabber

Первыми корпоративными мессенджерами в Selectel были Google Talk и Jabber. C момента основания компании мы использовали экосистему Googlе для работы с электронной почтой и документами, а GTalk был тесно интегрирован с почтовым сервисом и позволял обмениваться сообщениями прямо из интерфейса Gmail. Однако большими недостатками GTalk было отсутствие групповых чатов и каких-либо интеграций. Поэтому очень скоро мы завели Jabber для общения в группах. Также на базе Jabber был реализован ряд интеграций с системами мониторинга. *Хотя все они были не очень эффективными, так как требовали большого объема работы для их реализации и поддержки.

Welcome to Slack

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

Параллельно появился сначала WhatsApp, а потом и Telegram, которые были на порядок удобнее своих предшественников, поэтому очень скоро мы обнаружили что по факту вся переписка сотрудников идет в Telegram, а официальный корпоративный Jabber пришел в полное запустение. Этого ли мы хотели? 🤔

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

Что изменилось благодаря Slack:

  • Теперь при приеме на работу все сотрудники автоматически получали аккаунт, где уже есть все коллеги, что сильно облегчало онбординг и помогало при необходимости делать массовые объявления и получать обратную связь.
  • Любое событие от мониторинга или непосредственно от устройств прилетало прямо в мессенджер ответственному сотруднику или отделу. Обо всех инцидентах инфраструктуры мгновенно оповещались все сотрудники, чтобы действовать соответствующим образом.
  • При совместной работе с документами в Google Docs, Slack оповещал о сделанных изменениях и тем самым сразу обращал на них внимание получателя.
  • Впоследствии в Slack прокрались и разнообразные боты, например, наш собственный HR-бот, позволявший бронировать переговорные комнаты, узнавать даты выплаты заработной платы и даже просто поболтать с «искусственным интеллектом», если все люди надоели.

Кажется, нам нужен новый мессенджер!

Мы пользовались Slack около 5 лет, но постепенно осознали, что пора менять и его. Пытаясь проанализировать причины, которые нас к этому привели, мы для себя сформулировали следующее:

  • Корпоративный мессенджер — важный инструмент, который должен быть очень надежным для обеспечения непрерывной работы. В доступности Slack из России несколько раз возникали сбои: как из-за отказов работы самого сервиса, так и из-за проделок Роскомнадзора.
  • Мы ожидаем от мессенджера приватность и безопасность. Но в случае Slack, как и в любом SaaS сервисе, неизвестно, насколько безопасно можно использовать его для обмена приватными данными и конфиденциальных коммуникаций, поэтому для наиболее критичных для бизнеса вопросов приходилось искать другие инструменты коммуникации.
  • Постепенно число сотрудников компании растет, и уже приближается к 500 человек. Цена Slack тоже незаметно, но неуклонно увеличивалась, и за прошлый год составила для нас около 3 млн рублей.
  • В России есть федеральный закон № 152-ФЗ «О персональных данных». Slack не соответствует требованиям этого закона и хранит все данные на серверах за границей. В принципе все западные сервисы так делают, и пришли пока только за Linkedin, но все же — это дополнительный риск.

По совокупности этих факторов, мы решили, что нам нужен мессенджер на своих серверах в России. Писать новый — смысла не было, тем более, что сейчас есть множество Open Source решений, которые при необходимости могут быть изменены и улучшены нашими разработчиками.

Прежде всего наше внимание привлекла к себе платформа Zulip, которая является средством корпоративной коммуникации в Dropbox. Платформа стала доступна под свободной лицензией Apache 2.0 после того как Dropbox выкупил Zulip в 2014 году и опубликовал исходный код приложения на Github. Написанный на Python и использующий PostgreSQL в качестве базы данных, Zulip легко интегрируется практически со всеми популярными системами и поддерживает множество разных сервисов, а клиенты Zulip есть под все популярные мобильные и десктопные платформы. Но в процессе тестирования мы отметили низкую скорость работы решения, а также непривычную и сложную структуру интерфейса: потоки делятся на темы, темы содержат в себе чаты. А нам хотелось сделать переход со Slack максимально простым и бесшовным.

Вторым рассматриваемым вариантом стал Rocket.Chat, выпущенный по лицензии MIT. Что нам больше всего понравилось — по функциональным возможностям и интерфейсу Rocket.Chat максимально схож со Slack: также позволяет создавать публичные каналы, закрытые группы и обсуждения, обмениваться файлами, аудио- и видеосообщениями. Работа над улучшением Rocket.Chat ведется постоянно, о чем свидетельствует множество коммитов на Github.

Оценив плюсы и минусы разных платформ, мы приняли решение: переходим на Rocket.Chat, а в случае выявления серьезных проблем в его работе запасным вариантом оставляем Zulip.

Как осуществлялся переезд

Серверное приложение Rocket.Chat написано на JavaScript и использует MongoDB в качестве хранилища сообщений. Поэтому в первую очередь нам следовало обеспечить отказоустойчивость базы данных. MongoDB «из коробки» поддерживает аварийное переключение (Failover) при помощи механизма репликации, поэтому мы развернули 3 небольшие виртуальные машины в разных регионах и настроили механизм Replica Set. Приложение архитектурно построено таким образом, что мы передаем ему данные обо всех репликах в наборе и оно само распределяет нагрузку между ними (с какой реплики читать и в какую писать).

Для развертывания сервера мы используем официальный Docker-образ Rocket.Chat, размещенный в DockerHub. Приложение запущено в 3-х экземплярах на разных физических хостах и управляется с помощью Kubernetes. Нагрузка на «поды» (совокупность запущенных контейнеров) балансируется также средствами Kubernetes, обеспечивая тем самым не только равномерность утилизации ресурсов, но и возможность производить обновления без остановки сервиса. В этом случае один из подов останавливается, корректно обрабатывая все активные подключения, и вместо него запускается новый под с обновленной версией образа приложения. Помимо легкости обновления, такой подход позволяет буквально в 1 клик масштабироваться горизонтально при возрастающей нагрузке.

Следует отметить, что Rocket.Chat имеет важную особенность. Все пересылаемые в чатах файлы приложение по умолчанию хранит локально, а не в БД. Поэтому, когда требуется работа нескольких экземпляров приложения, нужно общее хранилище. В нашем случае мы воспользовались собственным S3-совместимым Облачным хранилищем, доступ к которому организовали для всех экземпляров приложения. Это позволило всем экземплярам приложения хранить файлы в едином месте, но это не стало потенциальной точкой отказа, так как все данные, размещенные в облачном хранилище, реплицируются N+2.

Selectel Chat

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

После тестирования в реальных условиях (на себе) нам настолько понравилась получившаяся система, что мы решили сделать из нее доступный клиентам сервис Selectel Chat. За первый квартал им заинтересовались более 20 компаний, мы зафиксировали спрос и продолжаем экспериментировать над продуктом — недавно добавили в него видеоконференции (с перспективой отказаться еще и от Zoom).

Сейчас мы открываем Selectel Chat на более широкую аудиторию. Он доступен клиентам на особых условиях — цена за 1 пользователя в 40 раз дешевле, чем в Slack.

Selectel Chat

Оставить заявку на тестирование мессенджера можно уже сейчас.

0
37 комментариев
Написать комментарий...
Стартапер-пессимист

Хотелось ответить на эту статью такой же, но напишу тезисно:

1. Дорого - есть множество бесплатных альтернатив (см. Discord).
2. Проделки Роскомнадзора могут затронуть и ваши технические сервера.
3. "Не соблюдает законы". Это не повод уходить в российский сервис, где вероятность того, что:
а) конкуренты подкупят вашего сотрудника и скачают весь дамп переписки и файлов многократно выше;
б) прибегут люди в масках и банально вынесут сервера физически.

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

1) Во всех бесплатных тарифах будут те или иные ограничения (как уже указали ниже). 
2) Скорее они затронут заграничные сервисы. РКН не блокирует российские адреса, а пишет провайдерам запросы, на которые можно отреагировать и избежать блокировки.
3) а. Спорное утверждение. 
б. Сложно вынести правильные физ. серверы, если всё виртуализовано =)

Ответить
Развернуть ветку
Илья Сапунов

Ну, бесплатно, это когда с друзьями играешь. Все же Discord рассчитан на другую целевую аудиторию. А если выбирать для компании, то там уже ограничения: всего 9 интеграций, видео только до 8 человек, лимит на загрузку 8 мегабайт, тредов нет. А план nitro стоит дороже того же слака, и опять же не все там есть. Так что для компании в 500 человек Discord совсем не вариант.

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

Так Роскомнадзор может насолить как своим так и забугорным сервисам, но своим вероятность меньше. Или что я упускаю?

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

а вся инфраструктура бесплатная что ли у вас?
я понимаю, что 3млн в год там наверное не наберется, но все таки каких-то денег же оно стоит.

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

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

Потому что важно за одну статью рассказать:
1. Slack - хороший, но вот есть недостатки.
2. Мы их решили, взяв чужую разработку и как-то доработав.
3. Покупайте у нас Rocket Chat за деньги, непонятно зачем, но расчет, видимо, на тех, кто совсем не шарит в этой теме.

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

У нас есть выделенные ресурсы под внутренние сервисы, и выбранный в итоге вариант не потребовал дополнительных мощностей. Нам было нужно универсальное решение, содержащее в себе не только средство коммуникации, но и другие нужные нам возможности, такие как интеграции с разнообразными системами мониторинга. Бесплатная версия Slack банально не могла обеспечить нам хранение истории, ведь 10 000 сообщений при нашем количестве сотрудников — это очень мало.

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

В стоимость сервиса входит инфраструктура, на которой он работает.
По слаку уже ответили ниже.

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

Нестыковочка, ребят :) 40 или 10 раз дешевле? 30 июня или мая? :)

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

Мы продлили бесплатный период до конца июля :)

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

Для продвижения на территории РФ кроме серверов в РФ нужно еще и приложения на русском..
Да и товарищам в погонах будет проще пользоваться. 

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

Русский язык в приложениях есть

Ответить
Развернуть ветку
Евгений Черкасов

Наша компания тоже пользуется рокетом. Это ежедневные боль и страдания. И выглядит эта замена как: "Я сэкономил кучу денег, заменив красную икру на завтрак - имитированной". Не знаю как со стороны компании, но со стороны пользователей даже дискорд намного лучше чем рокет.

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

Мы под себя немного его попатчили. А какие у вас топ-3 проблемы?

Ответить
Развернуть ветку
Евгений Черкасов

Отсутствие тредов ( есть через одно место сделанные дискуссии, но никто им не пользуется)
Глючные мобильные приложения ( да и десктоп так себе )
Невозможность мьютить каналы нормально и в целом настраивать уведомления
Нет групп пользователей, чтобы позвать например только админов

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

Спасибо за фидбэк. Треды мы для себя пропатчили. Группы думаем реализовать через бота. Приложения вроде стали сильно лучше в последних версиях. 

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

Вы не первые.
Да и кто знает какие изменения в коде делаете и какие данные Господину майору отдаете.

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

Какие бы ни были изменения в коде (их нет и не планируем) и какие бы данные не запрашивал тов. Майор, у нас есть договор с клиентом и законодательство РФ.

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

А как вы боретесь с глючными аппами для мобильных? Синхронизация не алё у них.

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

Сами пользуемся, вроде всё ок, в последних версиях очень много починено. Полгода назад, когда начали смотреть, всё было гораздо грустнее. 

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

Здравствуйте, а как реализован доступ к истории сообщений (перепискам)? В Рокете он через запрос к mango, что неудобно, а у Вас?

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

Вроде так же, а в чем неудобство, вы напрямую ходите в монгу?

Ответить
Развернуть ветку
Улугбек Каримов

Будем пробовать у себя в клинике

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

почему не матермост?

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

Думаю, потому что у него 2 звёзды в сторах, что означает полную непригодность к использованию на мобилах.

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

Точно не помню, но кажется надо было даже для on-prem покупать лицензии.

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

3 физических сервера на 500 человек??? Люди, вы серьёзно? Что это за ужас такой???

Рокет чат "со старта" отъедает 300-400 мегабайт ОП. Одна копия. Вы меня извините, но это дичь.

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

Кажется, мы неудачно выразились. Приложение работает в кластере кубернетис, 3 экземпляра на разных серверах (нодах). Но при этом в этом кластере запущены и другие приложения, так что эти три сервера не загружены только Рокетом =)

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

Ок, принято. А для чего нужны три экземпляра сервера рокета?

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

Для отказуоустойчивости

Ответить
Развернуть ветку
Сергей Мордвин

а у вас нет услуги, случайно, ботов на стороне рокета написать?

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

Сергей, такой услуги у нас пока что нет, но возьмем на заметку)

Ответить
Развернуть ветку
Сергей Мордвин

ок, а омниканальность подняли?

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

Да, омниканальность работает, то есть вы можете подключать к Selectel Chat сторонние сервисы.

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

Можно воспользоваться услугами администрирования для настройки сервиса.

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

Это вы зря. ОЧЕНЬ зря отказались от Slack. Ракета ему в подметки не годится.

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

Вы им пользуетесь? За скольких юзеров платите? =)

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