Истоки DevOps: Почему возник конфликт между разработкой и эксплуатацией
Истоки DevOps: Почему возник конфликт между разработкой и эксплуатацией
Представьте ситуацию: команда программистов трудилась над новой функцией три недели. Код написан, протестирован на компьютерах разработчиков и готов к запуску. Но пользователи увидят эту функцию только через... два месяца. Почему в эпоху высокоскоростного интернета и мощных серверов доставка готового кода может занимать больше времени, чем его написание?
Чтобы понять, зачем IT-индустрии понадобился DevOps, нам нужно вернуться в нулевые годы и посмотреть на то, как были устроены IT-отделы до его появления.
Два разных мира: Dev и Ops
Традиционно процесс создания и поддержки программного обеспечения был строго разделен между двумя независимыми лагерями.
Dev (Development — Разработка). Это программисты, тестировщики и аналитики. Их главная задача — создавать новые функции, исправлять баги и двигать продукт вперед. Бизнес требует от них скорости: чем быстрее выйдет новая фича, тем быстрее компания заработает деньги. Их главная метрика — количество и скорость внедрения изменений.
Ops (Operations — Эксплуатация). Это системные администраторы, инженеры сетей и баз данных. Их главная задача — обеспечить бесперебойную работу серверов, чтобы сайт или приложение всегда были доступны пользователям.
Главная метрика для Ops — это доступность сервиса (Uptime). Она рассчитывается по классической формуле:
Где — это время работы системы без сбоев, а — общее время за расчетный период.
Для инженера эксплуатации идеальный показатель стремится к . И здесь кроется фундаментальная проблема: любое изменение в системе — это главный враг стабильности. Новый код может содержать скрытую ошибку, потребовать больше памяти или нарушить работу базы данных, что неминуемо снизит .
| Характеристика | Dev (Разработка) | Ops (Эксплуатация) |
|---|---|---|
| Главная цель | Изменения и новые функции | Стабильность и надежность |
| Стимул | Выпускать релизы как можно чаще | Замораживать систему, чтобы ничего не сломалось |
| Отношение к риску | Риск оправдан ради инноваций | Риск недопустим, он ведет к падению сервиса |
Стена непонимания
Из-за противоположных целей между этими двумя отделами выросла невидимая преграда, которую в индустрии прозвали «Стеной непонимания» (Wall of Confusion).
Процесс релиза выглядел так: разработчики писали код, собирали его в архив и буквально «перебрасывали через стену» системным администраторам с инструкцией по установке. На этом ответственность Dev заканчивалась.
Если в процессе установки на реальный сервер (продакшен) система падала, начиналась игра во взаимные обвинения:
- Ops говорили: «Ваш код кривой, он забирает всю оперативную память и роняет сервер!»
- Dev отвечали легендарной фразой: «У меня на компьютере всё работает! Это ваши серверы настроены неправильно!»
Разработчики не знали, как их код ведет себя под реальной нагрузкой, а администраторы не понимали, как устроен код, который они пытаются запустить.
Узкое горлышко и Time-to-Market
В начале 2000-х годов разработчики начали массово переходить на гибкие методологии (Agile). Они научились писать код быстро, короткими итерациями (спринтами) по 1-2 недели.
Но отдел Ops продолжал работать по старинке: вручную настраивал серверы, вручную копировал файлы, вручную обновлял базы данных. В результате образовалось гигантское «узкое горлышко».
Для бизнеса это означало катастрофическое падение ключевой метрики — Time-to-Market (время вывода на рынок). Это время от момента, когда у бизнеса появилась идея, до момента, когда клиент может ей воспользоваться. Каким бы быстрым ни был Agile в разработке, общий Time-to-Market оставался огромным из-за медленного, ручного и конфликтного процесса релиза в эксплуатации.
Бизнес оказался в тупике: нельзя было одновременно получить и быстрые инновации, и стабильные серверы.
2009 год: Рождение DevOps
Критическая масса недовольства прорвалась в 2009 году на конференции Velocity. Инженеры из компании Flickr (Джон Оллспоу и Пол Хэммонд) выступили с презентацией, которая шокировала индустрию. Она называлась «10+ развертываний в день: Сотрудничество Dev и Ops во Flickr».
Для 2009 года выпускать обновления 10 раз в день казалось безумием — большинство компаний делали это раз в полгода. Инженеры Flickr рассказали, что секрет не в магии, а в разрушении «Стены непонимания». Они заставили разработчиков и администраторов работать как единая команда с общей ответственностью за продукт.
Эту презентацию онлайн смотрел бельгийский IT-консультант Патрик Дебуа.
Вдохновившись идеей объединения двух миров, Дебуа решил организовать собственную конференцию в Генте (Бельгия), чтобы обсудить эту проблему. Он назвал её DevOpsDays (Development + Operations). Слово оказалось настолько удачным, что быстро сократилось до DevOps и стало названием целого движения.
DevOps зародился не как набор программ или скриптов. Он появился как попытка примирить людей, устранить конфликт интересов и синхронизировать их цели. В следующих главах мы разберем, на каких культурных принципах строится это примирение и какие инструменты позволили автоматизировать то самое «узкое горлышко».