Практики и возможности, о которых идет речь в саммари, возникли в рамках движения DevOps[1], и они способны трансформировать и уже трансформируют различные отрасли. Авторы делают акцент не на разработке программного обеспечения (о ней уже написано достаточно книг), а на доставке ПО, которая представляет собой путь от коммита[2] к запуску в производство и в большей степени способствует ускорению. Они пришли к выводу, что улучшения в доставке программного обеспечения возможны для каждой команды и в каждой компании, если руководство последовательно поддерживает эти улучшения.
Непрерывная доставка (НД, CD – Continuous Delivery) – набор возможностей, которые позволяют быстро, безопасно и устойчиво внедрять изменения в производство или непосредственно пользователю. При НД программное обеспечение находится в состоянии постоянной доставки в производство на протяжении всего жизненного цикла, и поддержание ПО в развертываемом состоянии для команды приоритетнее, чем работа над новыми функциями. Проще говоря, смысл постоянной доставки в том, что в код сразу вносятся даже самые маленькие изменения, вопреки практике накопления больших пакетов обновлений. Быстрая обратная связь по качеству и развертываемости системы доступна всем членам команды, и когда они получают отчеты о том, что система не может быть развернута оперативно исправляют ошибки. В основе непрерывной доставки лежит пять ключевых принципов:
▶ Качество сборки. При непрерывной доставке инвестируют в создание культуры, поддерживаемой инструментами и людьми, в которой можно быстро обнаружить любые проблемы и устранить их, пока это еще достаточно дешево.
▶ Работа короткими итерациями. Организации, как правило, планируют работу большими частями. Однако, разделяя ее на меньшие части, выполнение которых быстро обеспечивает измеримые результаты для небольшого сегмента целевого рынка, можно получить качественную обратную связь и благодаря этому оперативно вносить изменения в продукт.
▶ Автоматизация. Компьютеры выполняют повторяющиеся задачи, а люди решают проблемы. Инвестируя в упрощение и автоматизацию повторяющейся работы, которая занимает много времени (например регрессионное тестирование и развертывание ПО), можно снизить затраты и освободить людей для более ценной работы, например по улучшению структуры систем и процессов в ответ на обратную связь.