А руководству всё было мало – оно постоянно заказывало всё новые и новые метрики, очень быстро переставая пользоваться тем, что были сделаны ранее.
Последнее время все только и говорили про LeadTime – время поставки бизнесовых фич. Метрика показала сумасшедшее число – 200 дней на поставку одной задачи. Как же все охали, ахали и воздевали руки к небу!
Через некоторое время шум постепенно затих и от руководства поступил заказ на создание еще одной метрики.
Ивану было совершенно понятно, что и новая метрика точно также тихонько помрёт в тёмном уголке.
Действительно, размышлял Иван, знание числа совершенно никому ни о чём не говорит. 200 дней или 2 дня – нет никакой разницы, потому что по числу невозможно определить причину и понять, хорошо это или плохо.
Это типичная ловушка метрик: кажется, что новая метрика расскажет суть бытия и объяснит какой-то тайный секрет. Все так на это надеются, но ничего почему-то не происходит. Да потому что секрет надо искать вовсе не в метриках!
Для Ивана это был пройденный этап. Он понимал, что метрики – это просто обычная деревянная линейка для измерений, а все секреты надо искать в объекте влияния, т.е. в том, что эту метрику формирует.
Для интернет-магазина объектом влияния будут его клиенты, приносящие деньги, а для DevOps – команды, создающие и раскатывающие дистрибутивы с использованием конвейера.
Однажды, устроившись в холле в удобном кресле Иван решил как следует продумать как бы он хотел видеть метрики DevOps с учётом того, что объектом влияния являются команды.
Цель метрик DevOps
Понятно, что всем хочется уменьшить время поставки. 200 дней – это, конечно, никуда не годится.
В компании работают сотни команд, а в день через DevOps-конвейер проходят тысячи дистрибутивов. Реальное время поставки будет выглядеть как распределение. У каждой из команд будет своё собственное время и свои собственные особенности. Как среди этого месива можно найти хоть что-то?
Ответ возник сам собой – надо найти проблемные команды и разобраться, что у них происходит и почему так долго, а у «хороших» команд научиться как всё делать быстро. А для этого требуется измерить время, проведенное командами на каждом из стендов DevOps:

«Целью системы будет отбор команд по времени прохождения стендов, т.е. в итоге мы должны получить список команд с выбранным временем, а не цифру.
Если мы узнаем сколько времени суммарно потрачено на стенд и сколько времени потрачено на простои между стендами, то сможем найти команды, позвонить им и более подробно разобраться в причинах и устранить их», — подумал Иван.

Как посчитать время поставки для DevOps
Для подсчета необходимо было углубиться в процесс DevOps и его сущности.
В компании используется ограниченное количество систем, и информацию можно получить только из них и больше ниоткуда.
Все задачи в компании регистрировались в Jira. Когда задача бралась в работу, для неё создавался бранч, а после реализации делался коммит в BitBucket и Pull Request. При принятии PR (Pull Request) автоматически создавался дистрибутив и сохранялся в хранилище Nexus.

Далее дистрибутив раскатывался на нескольких стендах с помощью Jenkins для проверки правильности накатки, автоматического и ручного тестирования:

Иван расписал из каких систем какую информацию можно взять, чтобы просчитать время на стендах:
- Из Nexus – Время создания дистрибутива и название папки, в которой содержался код команды
- Из Jenkins – Время старта, длительность и результат отработки каждой джобы, название стенда (в параметрах джобы), стейджи (шаги джоба), ссылка на дистрибутив в Nexus.
- Jira и BitBucket Иван решил в конвейер не включать, т.к. они больше относились к этапу разработки, а не к прокатке готового дистрибутива по стендам.

На основе имеющейся в распоряжении информации прорисовывалась такая схема:

Зная сколько времени создаётся дистрибутивов и сколько времени затрачивается на каждый из них, можно легко посчитать общие затраты на прохождение всего конвейера DevOps (полный цикл).
Вот какие DevOps-метрики получились у Ивана в итоге:
- Количество созданных дистрибутивов
- Доля дистрибутивов, «зашедших» на стенд и «прошедших» стенд
- Время, проведенное на стенде (цикл стенда)
- Полный цикл (суммарное время по всем стендам)
- Длительность джобов
- Простой между стендами
- Простой между запусками джобов на одном стенде
С одной стороны, метрики очень хорошо характеризовали конвейер DevOps с точки зрения времени, с другой — считались очень просто.
Довольный хорошо проделанной работой Иван составил презентацию и пошел представлять её руководству.
Обратно он выходил хмурый и с опущенными руками.
— Это фиаско, братан — улыбнулся ироничный коллега…
Продолжение читайте в статье «Как быстрые результаты Ивану помогли».
ссылка на оригинал статьи https://habr.com/ru/post/459344/
Добавить комментарий