Неуловимый DevOps: что это на самом деле и почему он редко встречается

DevOps (Development+Operations, разработка и поддержка) — практика далеко не новая, и ее название на слуху. Несмотря на это команды часто понимают под ней совершенно разные вещи. У инженеров даже есть шутка, что DevOps — то, «клиенту удобно так называть». Рассказываем, что включали в понятие DevOps сами создатели, зачем нужна эта практика и почему это далеко не системное администрирование 2.0.

Что такое DevOps и кто его придумал

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

В 2009 году бельгийский консультант Патрик Дебуа организовал первую конференцию DevOpsDays — событие, которое как раз было посвящено сближению разработки и эксплуатации. Само движение начало складываться чуть раньше, примерно в 2007–2008 годах: тогда энтузиасты в основном пытались вынести практики Agile за пределы собственно разработки — в инфраструктуру, релизы и поддержку продукта.

Исторический момент случился в том же 2009 году: на одной из конференций команда Flickr показала, как делает больше десяти развертываний в день. В их практике очень (даже по нынешним временам) частые релизы и стабильная эксплуатация никак не мешали друг другу — именно благодаря тому, что мы сегодня называем DevOps.

Тонкость в том, DevOps не имеет одного канонического определения. AWS (Amazon Web Services) определяет DevOps как сочетание культурных принципов, практик и инструментов, которое помогает организациям быстрее поставлять приложения и сервисы. Atlassian тоже подчеркивает, что это прежде всего культура и набор практик, которые сближают разработку и эксплуатацию, а не просто новая должность или конкретный инструмент.

Вот реальная цитата одного из разработчиков на Reddit:

«За почти 10 лет только в одной компании я действительно занимался DevOps: разработчики, инфраструктура, сеть, облако, безопасность и продакт-менеджеры собирались вместе, чтобы решать проблемы и улучшать процессы. Дважды в неделю у нас были встречи, где все говорили не только о болевых точках, но и о том, как каждый может внести свой вклад. Связь между командами была настолько хорошей, что запросы от одной команды к другой стало легко и быстро решать».

Как мы видим, в основе этой практики — коммуникация. Без нее не обойтись.

Что команды ошибочно принимают за практики DevOps

DevOps — это не новое название системного администратора

Классическая роль администратора строится вокруг поддержки инфраструктуры: чтобы серверы работали, доступы выдавались, сервисы поднимались, а сбои устранялись. Задача DevOps-инженера — не только поддерживать инфраструктуру, но и сделать так, чтобы путь от изменения в коде до работающей функции у пользователя был быстрым, безопасным и воспроизводимым.

DevOps — это не человек, который вручную развертывает релизы

Если, в компании есть специалист, к которому все приходят со словами «выпусти, пожалуйста, в продуктив», это ещё не DevOps, даже если он использует современные инструменты, пишет скрипты и хорошо знает инфраструктуру. DevOps стремится к обратному: хороший релиз — это не героическая операция одного опытного инженера, а регулярный процесс с предсказуемыми шагами с автоматизированной проверкой и доставка кода до необходимой среды.

При этом не стоит полностью копировать ручной процесс развертывания обновлений при внедрении автоматизации. Хорошая практика – проанализировать процесс и убрать ненужные шаги. Или договориться о критериях готовности, или изменить порядок работы команд. Хорошая автоматизация делает процесс прозрачнее и надёжнее. Плохая — маскирует беспорядок и делает его дороже в поддержке.

DevOps — это не то же, что CI/CD (непрерывная интеграция и поставка)

Действительно, эти понятия часто стоят рядом, поэтому их легко перепутать. Однако DevOps — это общий подход к организации разработки и эксплуатации, а CI/CD — один из практических механизмов, который помогает этот подход реализовать. Внедрять DevOps без CI/CD почти невозможно на зрелом уровне: если сборка, тестирование и развертывание зависят от ручных действий, команда не сможет быстро и предсказуемо выпускать изменения.

DevOps — это не отдел, куда можно «перекинуть ответственность»

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

DevOps — это не набор модных инструментов

Ещё одна распространённая подмена — считать, что DevOps появляется после покупки или внедрения инструментов Jenkins, Docker, Kubernetes, Terraform, Ansible, Prometheus, Grafana и других. Конечно, все они могут быть частью DevOps-практики, но сами по себе ничего не гарантируют. Можно внедрить Kubernetes и при этом продолжать выпускать релизы раз в месяц со стрессом. Можно настроить CI/CD, но использовать его только как формальность, если решение о релизе всё равно принимается в последнюю минуту.

DevOps решает конкретные проблемы и начинается с вопроса: «где у нас ломается путь от идеи до пользователя?» Например, если проблемы в нестабильных окружениях — нужно работать с воспроизводимостью инфраструктуры, и тогда на помощь подход Infrastructure as Code (Terraform, OpenTofu, Ansible).

DevOps — это не способ заставить команду работать быстрее

Для бизнеса DevOps часто звучит привлекательно: быстрее релизы, быстрее выход на рынок. Но если понимать его только как способ «ускорить разработчиков», велик риск просто больше давить на команду. DevOps — практика не столько для скорости, сколько для управляемости и предсказуемости. А быстрый выход на рынок приходит естественно, когда процесс отлажен.

DevOps — это не замена коммуникации описанием процесса

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

DevOps — это не разовая трансформация

Нельзя «внедрить DevOps» один раз и навсегда. Компания меняется: сегодня узкое место может быть в ручном развертывании, завтра — в тестовых данных, послезавтра — в долгих согласованиях безопасности или в недостаточном мониторинге. DevOps — практика постоянного улучшения: смотреть на весь путь изменения до пользователя, находить слабые места и постепенно делать процесс быстрее, стабильнее и прозрачнее.

Что всё-таки лежит в основе DevOps

Во-первых, общая ответственность за продукт. Разработчик не может сказать: «Моя часть закончена, дальше не моё дело», если его код невозможно нормально выпустить. QA не просто проверяет готовую сборку в конце, а помогает встроить качество в процесс раньше — через автотесты, критерии готовности, тестовые данные и проверки в пайплайне. Эксплуатация не тушит пожары постфактум, а участвует в проектировании процесса так, чтобы релизы были безопаснее.

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

Говоря о скорости — DevOps предполагает дробление релизов (помните 10 релизов в день, которыми гордились Flickr?). Маленькую правку проще понять, протестировать, выпустить и, если что-то пошло не так, быстро откатить. А вот если в релиз попадает сразу много изменений, становится сложнее определить, что именно вызвало ошибку.

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

Неопределенность снижает и быстрая обратная связь — практически как тестирование гипотез в Agile. В старой модели ошибка может обнаружиться на финальном тестировании, после релиза или даже через жалобы пользователей. В DevOps-подходе обратная связь встраивается в процесс: автоматические проверки запускаются сразу после изменения, мониторинг показывает состояние системы после выкладки, алерты помогают быстро заметить аномалии, а данные о поведении пользователей дают понять, сработала ли продуктовая гипотеза. Так команда управляет изменениями не вслепую, а на основе постоянных сигналов. Чем раньше появляется сигнал, тем дешевле исправление.

И очень важный пункт: DevOps нельзя внедрить «на ощущениях». Для корректной оценки часто используют DORA-метрики:

  • Lead time for changes

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

  • Deployment frequency

Как часто команда выпускает изменения в рабочую среду. Это не количество коммитов и не число закрытых задач, а именно частота реальных поставок пользователям. Сама по себе высокая частота релизов ещё не означает зрелый DevOps: можно выпускать часто и при этом постоянно ломать продукт.

  • Failed deployment recovery time

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

  • Change fail rate

Какая доля изменений приводит к сбоям в рабочей среде. Обычно сюда относят релизы, после которых потребовалось срочное исправление: откат, hotfix, патч или другое экстренное вмешательство. Эта метрика –– как раз противовес Deployment frequency: если команда выпускает изменения часто, но значительная часть релизов ломает продукт, значит, процесс поставки нельзя считать здоровым.

  • Deployment rework rate

Какая доля выпусков фактически уходит на исправление уже возникших проблем, а не на доставку новой ценности пользователям. Проще говоря, метрика переделок: сколько усилий команда тратит на незапланированные релизы, вызванные ошибками, инцидентами или пользовательскими проблемами. Помогает отделить нормальную поставку изменений от ситуации, когда команда вроде бы много выпускает, но значительная часть этой активности — не развитие продукта, а постоянное устранение последствий прошлых релизов. Более новая, пятая метрику в развитии DORA-подхода – добавлена в 2024 году.

Вывод

Если собрать все характеристики, ядро DevOps можно описать так: это культура общей ответственности, автоматизация повторяемых действий, короткий цикл поставки, быстрая обратная связь и измеримость. Всё остальное — инструменты, роли, платформы, конкретные практики — работает только тогда, когда поддерживает эти принципы.

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

Чем быстрее бизнесу нужно реагировать на рынок, клиентов, конкурентов и собственные продуктовые гипотезы, тем важнее становится уметь надёжно доставлять изменения пользователям. DevOps отвечает именно за это: делает изменения не подвигом отдельных специалистов, а нормальным, воспроизводимым и измеримым процессом.

315
Предметная область
Отрасль
Управление
Мы используем файлы cookie в аналитических целях и для того, чтобы обеспечить вам наилучшие впечатления от работы с нашим сайтом. Заходя на сайт, вы соглашаетесь с Политикой использования файлов cookie.