В конце 2016 компания Gitlab сообщила, что собирается уходить из облака (мы делали перевод этой статьи на Medium). Также был представлен весьма подробный план по покупке аппаратного обеспечения. Пользователи с интересом следили за развитием событий, активно комментировали опубликованные статьи и в итоге убедили GitLab отказаться от этой идеи.
У этой истории есть дополнительная интрига. Компания GitLab, которая сама по сути является поставщиком облачных услуг (правда, предоставляя пользователям приложение, а не вычислительные ресурсы), вдруг решила, что ей как потребителю подобная схема работы больше не подходит, но все же в итоге передумала.
Специалисты GitLab всерьез задумались об уходе из облака в ноябре 2015 года, когда была создана задача #727 по переходу на собственное железо.
Основной минус компания видела в недостаточной для GitLab пропускной способности дисковой подсистемы в Azure, а также в необходимости делить облачную инфраструктуру с другими пользователями. Эту проблему планировалось решить переходом на собственное серверное оборудование, что также должно было дать существенную экономию средств.
Описывая финансовую сторону вопроса, компания сообщила, что хостинг GitLab.com в Azure (не включая GitLab CI) на тот момент обходился примерно в $200k в месяц. При этом покупка собственного оборудования приравнивалась по стоимости к трем месяцам облачного хостинга. Колокейшн своих серверов был оценен в $10k в месяц. То есть за два с половиной года была бы достигнута десятикратная экономия. Детальное описание расходов можно найти вот в этой общедоступной электронной таблице.
Однако пользователи справедливо указали на то, что основная компетенция GitLab — это разработка ПО, и компания сильно недооценивает уровень и количество специалистов, а также затраты, необходимые для самостоятельного обслуживания инфраструктуры такого масштаба, особенно в случае возникновения нештатных ситуаций.
Также были подробно разобраны предложения компании по конкретным компонентам серверного оборудования, которое было запланировано к приобретению. В результате критике подверглось многое: архитектура, количество серверов, жесткие диски и т. д., а также было отмечено наличие множества пробелов и нераскрытых тем.
Что касается производительности, общий вывод оказался следующим: дополнительные расходы на виртуализацию не превышают 3%, поэтому уход из облака вряд ли решит проблемы нехватки пропускной способности системы ввода-вывода. К тому же нехватка пропускной способности в большей степени могла быть связана с недостаточной эффективностью NFS, CephFS и в особенности системы контроля версий git, которая не оптимизирована для параллельной работы большого количества пользователей. В итоге было решено отказаться от CephFS и разработать решение по оптимизации доступа к git-репозиториями, которое получило название Gitaly.
Что ж, в этом раунде борьбы «облако vs собственный компьютер» снова победили белые и пушистые. Процесс усложнения инфраструктуры и сужения областей специализации в сфере ИТ продолжается — быть мастером на все руки с каждым годом все сложнее.
Отдельно стоит отметить открытость компании GitLab, которая благодаря этой ценности во время инцидента со случайным удалением базы данных сумела превратить поражение в победу, а на этот раз, в вопросе ухода из облака, извлекла пользу из своей слабости — недостатка компетенции. Благодаря широкому общественному обсуждению компания, с одной стороны, смогла в избытке получить квалифицированную помощь сообщества и принять более правильное решение, а с другой — поделиться опытом с людьми, которые могут оказаться перед похожим выбором или просто заинтересуются этими вопросами. Всегда любопытно посмотреть, как важные задачи решаются в других организациях, как они мыслят и какие инструменты используют для облегчения своей работы.