Uber отказался от онлайн-чатов Slack и HipChat в пользу своего uChat на базе Open Source-решения Mattermost
На прошлой неделе инженеры компании Uber рассказали в своём блоге о том, как они создали собственное решение для интернет-общения, схожее с популярными Slack и HipChat, но основанное на свободном продукте Mattermost. Их детище получило название uChat.
В компании Uber работают 14 тысяч человек, а её операции распределены по 620 городам мира. Раньше в качестве корпоративного онлайн-чата в Uber использовали популярный сервис Slack, а около года назад (весной 2016) перешли на его конкурента — Atlassian HipChat. Однако оба этих продукта не удовлетворяли потребностям Uber в «надёжном общении сотрудников на десктопах и мобильных устройствах вне зависимости от их местонахождения в мире». Основные требования Uber к онлайн-чату — это масштабируемость для растущего числа сотрудников с учётом сопутствующих расходов, а также простая интеграция с многочисленными инструментами, решающими инженерные, эксплуатационные и бизнес-задачи.
Инженеры Uber начали свои поиски с технологии Internet Relay Chat (IRC) и последующего тестирования существующих альтернатив, а пришли к созданию собственной платформы обмена сообщениями uChat, в которой активно применяются Open Source-продукты: чат Mattermost и система управления конфигурациями Puppet (корпоративный стандарт в Uber). Инженерам компании удалось перейти на новое решение за 3 месяца, обеспечив стабильную доставку более 1 миллиона сообщений в день для десятков тысяч пользователей в едином окружении.
Основные работы Uber с Mattermost были нацелены на производительность: инженеры стремились гарантировать стабильное функционирование чата для случая с 70 тысячами одновременно присутствующих там пользователей и отправляющих от 80 до 200 сообщений в секунду. Для этого были созданы специальные нагрузочные тесты (опубликованы на GitHub), а также проведён анализ пользовательского интерфейса (например, «существующие интерфейсы не позволяли производить поиск более чем по 20 тысячам каналов одновременно»), по итогам чего были сделаны необходимые изменения в коде. Далее была разработана схема деплоя нового чата с применением подхода IaC (инфраструктура как код) на базе Puppet (с модулем Puppet Code Manager). Завершающий этап — создание своих пользовательских интерфейсов (на базе React Native) для мобильных устройств на базе iOS и Android. Последние наработки тоже выложены как Open Source на GitHub.
Итог — достижение 99,9-процентной доступности с uChat, после чего использование старой системы для общения было прекращено. Инженеры Uber планируют реализовать больше возможностей в ближайшие месяцы, следуя обратной связи от своих пользователей, и внедрить в uChat дополнительные улучшения от Mattermost и его Open Source-сообщества.
Дмитрий Шурупов по материалам Uber Engineering Blog, Businessinsider.Com.