Сломанный пайплайн разработки, тоже авария в проде

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

Автор перечисляет, из чего складывается такой пайплайн: системы постановки задач и запросов на изменения (GitHub Issues, Jira), инструменты, которыми разработчики пишут код напрямую, IDE, сборщики (Gradle, Maven), пакетные репозитории (npm, Maven Central, внутренние репозитории), локальные базы данных, контейнеры; CI/CD-инструменты (Jenkins, GitHub Actions); набор автотестов; QA-стенд для тестирования перед релизом. Сбой в любом из этих звеньев останавливает выпуск софта так же надёжно, как падение продакшена.

Два примера из текста: если код не компилируется, разработчики физически не могут работать, и для команды разработки это авария, чинить нужно в первую очередь. Если упал QA-сервер, тестировщики не могут работать, и для QA-команды это тоже авария первого приоритета.

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

Ключевые факты

  • Разработчики привыкли бросать всё ради аварии в клиентском проде, но не реагируют так же быстро на поломки в собственных инструментах разработки
  • Пайплайн включает трекеры задач (GitHub Issues, Jira), IDE и сборщики (Gradle, Maven), пакетные репозитории (npm, Maven Central), CI/CD (Jenkins, GitHub Actions), автотесты и QA-стенд
  • Если код не компилируется, это авария для команды разработки, чинить нужно в первую очередь
  • Если упал QA-сервер, это авария для QA-команды, чинить нужно в первую очередь
  • Существующие процессы предотвращения простоя (производство, ИТ-эксплуатация) обычно нацелены на клиентский сервис, а не на людей, которые его строят и поддерживают

Почему это важно

Автор указывает на слепое пятно в приоритетах: организации умеют быстро реагировать на аварию, которую видит клиент, но откладывают починку инструментов, которыми пользуется сама команда разработки, IDE, сборку, CI/CD, QA-стенд. Логика текста в том, что с точки зрения бизнеса разница мнимая: пока пайплайн сломан, ценность не производится вообще, вне зависимости от того, видит ли это клиент напрямую.

Кому это важно

Прежде всего инженерным менеджерам и тимлидам, которые расставляют приоритеты реагирования на инциденты; платформенным и DevOps-командам, отвечающим за CI/CD и внутреннюю инфраструктуру разработки; QA-командам, для которых падение тестового стенда автор явно называет отдельной аварией.

Как это применить

Автор предлагает буквально держать в голове весь путь от «клиенту что-то нужно» до «это доставлено клиенту» и относиться к любому звену, трекеру задач, IDE, сборщику, пакетному репозиторию, CI/CD, автотестам, QA-стенду, как к продакшен-системе: сбой в любом из них останавливает работу команды, поэтому чинить его нужно с тем же приоритетом «бросить всё», что и клиентскую аварию.

Можно ли доверять

Это мнение автора персонального технического блога (sundry.jerryorr.com), а не исследование: в тексте нет ни цифр, ни названий компаний, ни конкретных случаев, только рассуждение и рекомендация. Пользователь HN, который принёс ссылку (firefoxd), не автор поста, а тот, кто её опубликовал на форуме. Материал набрал 138 очков и 66 комментариев на Hacker News, что говорит об отклике аудитории, а не о доказательности тезиса.

Риски и подводные камни

В тексте автор не разбирает обратную сторону подхода, например, риск того, что объявление «аварией» любой мелкой заминки в инструментах разработки размоет само понятие приоритета и вызовет усталость от постоянных «пожаров». Также не приведено ни одного конкретного случая, где такой подход был опробован и сработал, тезис остаётся общим утверждением без проверки на практике.

«Но для команды разработки пайплайн разработки, это и есть продакшен-система.»

— автор блога sundry.jerryorr.com