Первоначально это было опубликовано в Ускоряйте доставку блог
Метрики, которые имеют значение
Инжиниринг застряла в режиме пожаротушения.
У нас есть бесконечное отставание.
Мы обеспокоены качеством продукта.
Я перефразировал несколько проблем, с которыми я столкнулся в качестве инженерного менеджера в PBS. В апреле 2018 года мы изменили наш подход на то, как мы разрабатываем программное обеспечение. Мы начали отслеживать метрики на пропускной способности и стабильности. Несколько членов моей команды прочитали отличную книгу, Ускорение , который представляет метрики, которые оказали глубокое влияние на доставку продукта.
У команды PBS Engineering были другие идеи, как повысить пропускную способность и стабильность для таких продуктов, как PBS.org. Вот краткая история о том, как мы пришли, чтобы изменить наш подход. Проблема, с которой сталкиваются наши разработчики программного обеспечения, заключается в том, что существует бесконечное количество работы. PBS-некоммерческая организация; Мы не всегда можем иметь больше инженеров. Бюджет и численность персонала трудно найти. Когда мы не могли заставить больше инженеров выполнять работу, мы рассмотрели наши варианты. Первым вариантом, который мы выбрали, было меньше работы. Мы проигнорировали некоторые продукты во время спринтов, чтобы сосредоточиться на других. Работа была выполнена, но мы жили в тени надвигающегося отставания. Несколько недель мы решили больше проблем, чем мы создали. Несколько недель … После нескольких месяцев такого подхода мы изменили привлечение. Если мы не можем добавить больше людей, и мы не можем сделать меньше работы, что мы можем изменить?
Мы приложили усилия, чтобы использовать инженеров, которые у нас есть более эффективно. Мы сделали это, отслеживая производительность доставки программного обеспечения. Моя команда могла бы принимать регулярные решения на уровне проблемы. Они могли бы оптимизировать каждую проблему для стабильности и пропускной способности. Эти небольшие решения привели к заметному воздействию. Вот график созданных нами вопросов по сравнению с решением:
Обратите внимание на изменение в апреле? Эта растущая зеленая область представляет собой прогресс! Мы отслеживаем четыре метрик:
- Частота развертывания
- Изменить частоту отказов
- Среднее время для восстановления
- Время цикла
Я хотел бы подробно изучить каждую метрику. Кроме того, я прокомментирую, как я заметил, что это влияет на наши усилия по разработке.
Частота развертывания
Как часто мы развертываем продукт
Развертывание должно быть не событием. Развертывания не должны требовать тщательного изучения или ручного мониторинга. Они должны чувствовать себя как побочный продукт написания кода. В идеале развертывание — это единое постепенное изменение. Развертывая как можно чаще, мы стимулируем несколько продуктивных привычек.
Во -первых, мы упрощаем развертывание производства. Измеряя последнюю милю разработки продукта, времени и усилий, которые требуются для развертывания, мы поощряем автоматизацию. Развертывание должно быть таким же простым, как нажать кнопку. Эта кнопка должна быть доступна и понята многими людьми. Раньше у нас была роль «менеджера по выпуску». Этот человек знал надлежащие заклинания, чтобы превратить репозиторий GIT в производственную службу. Теперь любой инженер может сделать развертывание и делает несколько раз в день.
Во -вторых, мы нажимаем кнопку развертывания как можно чаще. Поговорите о геймификации, вы получаете точку каждый раз, когда нажимаете кнопку. Мы мотивированы развернуть каждый запрос на привлечение, который проходит через обзор. Особенность обстановка делает это еще проще. Если запрос на притяжение представляет собой частично завершенное усилие, мы поместили его за флаг функций. Изменение остается постепенным. Работа доступна по производству и может быть полезна для некоторых пользователей.
Наконец, мы держим размеры партий маленькими. Изменения не накапливаются при регулярном развертывании. Поощрение частых развертываний имеет полезный результат поддержания настройки ваших изменений. Это означает, что если что -то пойдет не так с релизом, это должно быть легко отточить по пораженному коду. Это также может ограничить влияние изменения.
Изменение частоты отказов (CFR)
Процент развертываний, которые мы должны отказываться
Этот показатель идет рука об руку с «частотой развертывания». Там, где этот показатель поощряет пропускную способность, «изменение частоты отказов» способствует стабильности. Этот показатель — показатель, что вы идете слишком быстро.
Я использовал этот показатель, чтобы побудить мою команду замедлиться, если мы заметим рост в откатах. Это как тахометр, хотя. Я утверждаю, что устойчивый 0% CFR означает, что вы двигаетесь слишком медленно. Я хочу немного развернуть красную линию. Стоит отказ, чтобы проверить границу того, как быстро вы можете пойти. Граница отличается для разных команд и продуктов. Например, мне более комфортно с> 0% CFR в веб -разработке. Ответы дешевые и быстрые в Интернете. Я не склоняюсь к откатам, когда дело доходит до разработки приложений. Отказы с упакованным программным обеспечением сложны и медленно.
Среднее время для восстановления (MTTR)
Прошло часы с начала неспособности службы в восстановлении системы
От моего опыта MTTR придает ощущение срочности стабильности. Когда наша система терпит неудачу, моя команда знает, что часы тикают. Преимущества два раза:
- Мы знаем, что главным приоритетом является возвращение к стабильности.
- Мы поддерживаем доверие с нашими сверстниками.
Доверие имеет важное значение для любой организации разработки программного обеспечения. Они знают, что мы серьезно относимся к проблеме. Они могут следовать в чате и вытащить последнюю информацию.
После просмотра MTTR мы изменили способ обработки событий восстановления. Мы изучили наш процесс реагирования на инцидент и предприняли шаги, чтобы формализовать его. Мы используем легкую версию процесса, изложенную Сайт надежности инженерная книга Анкет Наш процесс был общим миазмами паники. Разработчики не знали, должны ли они участвовать в инциденте или нет. Анализ основной причины и меры по восстановлению не были публично доступны или скоординированы. Заинтересованные стороны получат нечастые обновления ситуации. После принятия нашего процесса наши выздоровления стали более упорядоченными. У нас нет никаких метрик MTTR до того, как мы приняли процесс реагирования на инцидент. Со временем я хотел бы рассчитать тенденцию нашего времени отклика.
Еще один процесс, который мы приняли после просмотра MTTR, — безупречные посмерти. Они анализируют причину проблемы и как ее избежать в будущем. Посмерти являются полезными способами обмена перспективой и знаниями. Как правило, мы копируем/вставляем шаблон посмертного положения каждый раз, когда мы создавали из нескольких статей: Hootsuite 5 Whys и Безупречные портмортем и справедливая культура Анкет
Время цикла *
Минуты требуются задачи, чтобы начать с разработки и заканчиваться в производстве
Это мой любимый показатель. Если бы мне пришлось посмотреть один номер, чтобы оценить медицинское обслуживание программного обеспечения, это будет этот. Время цикла — это время, необходимое для того, чтобы преодолеть все препятствия, с которыми вы сталкиваетесь в разработке программного обеспечения. Зависимости вверх по течению, пробелы в тестировании, обзор принятия и боль в развертывании запечатлены в одном номере. В PBS мы отреагировали на эту метрику несколькими способами.
Во -первых, мы тщательно изучаем проблемы для бланкеров вверх по течению, прежде чем начать работу. Мы пытаемся свести к минимуму объем работы, которую мы выполняем. Мы предназначены для остановки, если мы начнем разработку и обнаружим, что нам нужно что -то из вспомогательного сервиса. Более эффективно идентифицировать блокатор заранее, прежде чем мы напишем какой -либо код.
Во -вторых, время цикла стимулирует нас, чтобы сохранить задачи небольшими. Небольшая задача быстрее разработать и просмотреть. Риск изменения низкий, поэтому мы развертываем его быстрее. Флаги функции работают хорошо, чтобы задачи были небольшими. Мы с большим успехом приняли флаги функций в PBS. Мы признаем, что флаги функций являются техническим долгом:
- Они добавляют некоторую сложность в наш код.
- В конце концов мы должны снять флаг.
Преимущества перевешивают недостатки для нас. Я люблю просматривать запрос на привлечение, который влияет на три файла с флагом функций. Я съеживаюсь при рассмотрении PR, который представляет полную функцию, влияет на 15 файлов и несет значительно больший риск.
Отстава — 0̸
Инженеры, которые приняли Ускорение Метрики в PBS заметили положительную тенденцию. После того, как мы измерили нашу производительность доставки программного обеспечения, мы могли бы улучшить его. Были преимущества за пределами чисел и графиков. Работа была веселее! Некоторые люди слышат «непрерывную доставку» и думают, что это звучит утомительно. Они думают, что это означает бесконечные, изученные усилия. Инженеры могут представить себе, что босс звонит в свой офис, чтобы рассказать о том, почему время их цикла выросло на 10 минут вчера. Для меня нет ничего больше от истины. Наши инженерные усилия видят свет как можно быстрее. Мы ежедневно отправляемся. Отставание уменьшается. Мы создаем продукт, над которым мы гордимся.
* Стоит отметить, что ускорение относится к моему «времени цикла» как «время заказа». Из чего Я читал «Время выполнения» — более длинная метрика. Он представляет время от того, когда выявлено требование, или в отставание возникает проблема, пока эта проблема не будет завершена. Здесь может быть какой -то спор. Несколько человек было более комфортно с «временем велосипеда» в PBS, и это то, с чем мы застряли.
Оригинал: «https://dev.to/acceldelivery/delivery-metrics-worth-tracking-4oad»