Definition of Done

Definition of DoneОдно из важных концептуальных понятий DevOps — определение завершения (англ. — Definition of Done). Как и многие другие важные концептуальные понятия DevOps, оно появилось и сформировалось задолго до возникновения этого самого DevOps. Однако именно в DevOps определение завершения развили, продолжили и наполнили дополнительным смыслом. Давайте разберёмся, каким.

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

Первая ступень под кодовым названием "совсем, совсем плохо" такова: завершено тогда, когда разработчик сказал, что всё работает. Очень понятно почему это плохо — кто же станет верить разработчику? То, что на его ПК (в среде разработки) код не выдаёт ошибок, либо просто компилируется без существенных замечаний, в реальной жизни мало что означает.

Вторая ступень, чуть лучше: завершено тогда, когда тестировщик после разработчика сказал, что всё работает. Понятно, что это лучше, ведь появилась относительно независимая точка контроля. Однако и этого недостаточно.

Те, кто читал про Agile, скажут, что следующая ступень такова: завершено, когда владелец продукта принял результат разработки. Буквально, читаем в SAFe: "The product owner is the only team member who can accept stories as done. This includes validation that ... it meets its Definition of Done". Конечно, для больших ребят команд пришлось картинку усложнить, добавив приёмку на уровне команды (владельцем продукта), системы (менеджерами продукта), решения (менеджерами решения) и релиза (менеджерами решения и релиза), но суть остаётся той же — кто-то в определённый, далёкий от продуктива момент решает, что всё завершено.

Непорядок, конечно же, говорят любители DevOps. Мало ли что там владелец продукта считает. Не он использует продукт, и не он за продукт платит, так не ему и решать. Следующая ступень эволюции, уже согласно DevOps: завершено тогда, когда код работает в продуктиве. Только тогда можно расслабиться (что, разумеется, невозможно, так как уже наступила следующая итерация).

Но и эта ступень не является финальной. Ценители единорогов обязательно добавят, что совсем-совсем правильное определение таково: завершено тогда, когда код работает в продуктиве, а вся сборка, всё тестирование и всё развёртывание выполнены автоматическими средствами.

Definition of doneТаким образом, условный флажок "Готово?" переезжает ещё дальше вправо (см. иллюстрацию выше). И это то хорошее, что с собой приносит DevOps.

Картинка для надёжного запоминания, что пользователь — это самое главное:

definition_of_done

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

The Phoenix Project Основы DevOps

Новый учебный курс 2017
 

Проект Феникс — DevOps на практике

Новая деловая игра от GamingWorks
 

DevOps: погружение

Новый корпоративный семинар
 

Комментарии и мнения

  1. Ilgizar TalipovIlgizar Talipov

    Линейный процесс из картинки нужно закольцевать в цикл. В центре поместить Definition of Done. Тогда понятно будет, что завершение может возникать на любом этапе при удовлетворении условию.

    0
    0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Ближайшие мероприятия

Зарегистрируйтесь, чтобы получить больше полезных знаний:

НОЯ
27
Учебный курс:
Основы ITIL (очно)