Хабрахабр

На основе здравого смысла: выращиваем DevOps с нуля

Накануне DevOps Conf Russia 2018 мы поговорили с техническим директором «Учи.ру» Алексеем Ваховым об этапах развития платформы, о том, какие инструменты они используют и насколько там все DevOps-ово.

Работал разработчиком C++ в огромных системах (десятки миллионов строк кода).
Алексей Вахов — технический директор «Учи.ру». Увлекается организацией IT-производства, эксплуатацией, архитектурой веб-приложений. Любимая серверная технология — Ruby on Rails, входит в топ-100 контрибьюторов.

Платформой пользуются более 2,5 млн школьников и 220 тыс. Uchi.ru — российская образовательная платформа, на которой школьники 1-11 классов изучают школьные предметы в игровой и увлекательной форме. Занимает 36 место в общемировом рейтинге e-learning платформ. учителей в России, США, Бразилии, Индии, ЮАР и Китае. В компании более 400 сотрудников.

Сколько человек было в компании, когда вы пришли? — С чего все начиналось?

На тот момент я был пятым или шестым сотрудником, причем единственным разработчиком. — В компанию меня позвали в 2012 году, то есть шесть лет назад. Мы сделали первое веб-приложение и выложилили на Heroku. Я и верстал, и вел серверную разработку.  

Сколько команд и каких размеров? — Как обстоят дела сейчас? Как взаимодействуют друг с другом? Насколько самостоятельны?

У нас два больших направления: продакшн-разработка и разработка интерактивных задач. — На сегодняшний день нас более 400 человек, из них около 100 инженеров, которые объединены примерно в 20 отдельных команд.

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

Как вы ее поддерживаете? — При такой скорости роста компании успеваете ли делать собственную wiki?

Есть wiki в виде confluence, где есть общие и тематические разделы, и у каждой команды существует свой раздел. — Баз знаний у нас несколько. В любом случае каждой команде выделяется собственное пространство, свой кусочек в jira, в confluence, все это обустраивается по желаниям команды. В каждом репозитории мы поддерживаем readme и дополнительные информационные документы. Диктата и стандартизации по оформлению у нас нет.

Как вы справляетесь с этим? — Резкий рост чреват потерей контроля. Как координируете работу такого большого количества команд?

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

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

— Какие этапы становления компании ты выделяешь для себя?

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

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

Это же касается и методологии DevOps. Любые изменения, которые происходили у нас, обязательно подкреплялись своевременными и актуальными технологическими нововведениями. Например, было время, когда ни у кого не возникало вопроса о том, кто отвечает за стабильность сайта. Можно сказать, что я сам совсем недавно начал понимать что такое культурные ценности и почему они важны в больших командах. Мы наняли человека, который должен был отвечать только за сервера, — и противостояние «разработчики vs администраторы» началось в тот же день. Все понимали, что тот, кто выкатил сервис, за него и в ответе. Это было удивительно, как по книжке.

Какие инструменты вы принимали для себя, от каких пришлось отказаться? — Расскажи подробнее о каждом из этапов. Почему вы пришли к такому решению? Насколько я понял из анонса твоего выступления на DevOpsConf 2018, вся ваша инфраструктура развернута в облаках в контейнерах docker'а. С какого момента вы не смогли жить без контейнеров?

Только выкатка на Heroku: git push, и все довольны. — Сначала не было ничего, даже трекера. Мы переехали на обычные железные сервера и наняли консультантов. Но Heroku быстро перестала нас удовлетворять, так как до нее достаточно большой пинг, и нагрузку они переносит плохо. К этому времени у нас сильно увеличился трафик, количество продакшенов, внутренних и внешних сервисов. Со временем сервера сильно замусорились. В один прекрасный день мы упали под нагрузкой и уже к вечеру переехали в облако, используя Ansible. Сервера мы настраивали через Chef. Он оказался простым и понятным, особенно в случае таких небольших инфраструктур. Ощущения при переходе на Ansible были просто космические.

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

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

Это было прошлым летом. Когда у нас стало около сотни приложений в разных облаках, мы начали присматриваться к docker'у. Это стало для нас настоящим спасением. Примерно за 10 месяцев мы перевели все свои приложения, а их к тому моменту стало около 150, на docker-кластеры. Все стало гораздо удобнее и проще: приложение легко можно было поместить в docker-кластер, легко оттуда удалить, у него была собственная метаинформация, из которой понятно, из каких сервисов состоит приложение, какие кроны, бэкграунд джобы и прочее запускаются. Мы были избавлены от того, чтобы следить за версиями, за обрывками окружений на серверах.

Все ли вас устраивает или же вы что-то меняли под себя? — Насколько прочно вы стоите на оригинальном подходе DevOps? Сложно ли было перестраивать команду?

В работе я всегда исхожу из простого здравого смысла. — У меня у самого нет точного ответа на вопрос о том, что же такое DevOps. На самом деле, теоретическая часть DevOps мне почти не нужна, потому что с меня бизнес спрашивает за результаты. А люди говорят, что, оказывается, у нас тут DevOps вырос. Другими словами, если я им красиво расскажу и ничего не сделаю, это будет очень плохо, а если сделаю, но при этом не расскажу про красоту — все равно будет хорошо.

Например, есть какая-то большая компания, которая хочет сделать или уже делает цифровые продукты. Мое понимание DevOps следующее. Автоматически возникает continuous delivery, размываются границы между разработкой и поддержкой, подтягивается культура DevOps-а, которая трактует правила хорошего тона между людьми, которые отвечают за выкатку, тестирование и поддержку. Цифровые продукты — это всегда быстрая обратная связь с рынком. В большой и устоявшейся компании происходят изменения в процессах, их переламывание. В итоге такие отношения позволяют им договориться между собой, чтобы прийти к общей цели, а также перенести фокус со своих личных обязанностей на общий результат.

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

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

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

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

Куда вы планируете расти и какие направления развивать? — Расскажи о планах компании. Дает ли текущий стек технологий задел на дальнейший рост или придется очередной раз менять его?

Сегодня на «Учи.ру» регулярно занимаются более двух миллионов школьников — в масштабах страны это около 30% всех учеников начальных классов. — Планы у бизнеса амбициозные. Будем и дальше привлекать новых пользователей на платформу в России и заниматься международным развитием.

Требования по скорости изменений и надежности только растут. Технически у нас 15 изолированных докер-кластеров, и довольно много времени уходит на переключение с одного на другой, сложно стало обслуживать, модернизировать. Поэтому задел есть, но обновлять тоже будем.

Друзья, если вам интересен опыт Алексея, спешим пригласить на нашу DevOps Conf Russia 2018, которая пройдет 1-2 октября. В своем докладе он расскажет об опыте использования облаков, применении методологии DevOps, о ценностях и принципах своей команды.

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

Кстати, отдельно видео можно мониторить на YouTube-канале — там собраны все видео за последние годы и список все время пополняется.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть