Ускоряйся! Наука DevOps. Как создавать и масштабировать высокопроизводительные цифровые организации. Николь Форсгрен, Джез Хамбл, Джин Ким. Саммари
Оригинальное название:
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Авторы:
Nicole Forsgren, Jez Humble, Gene Kim
Скорость решает все
В наши дни оставаться конкурентоспособными все сложнее. Успешные компании отказываются от крупных долгосрочных проектов, предпочитая им проектную деятельность в коротких временных циклах и небольших командах. Они быстро выпускают товары и услуги на рынок, получают обратную связь от пользователей и стремительно меняют свои продукты, учитывая потребности и интересы клиентов. Потому что сегодня побеждает не самый сильный и привлекательный для инвесторов, а самый быстрый.
Чтобы преуспевать на рынке сегодня, организации должны ускориться:
▶ в доставке товаров и услуг;
▶ во взаимодействии с рынком для выявления и понимания потребительского спроса;
▶ в соблюдении требований законодательства;
▶ в реакции на потенциальные риски, такие как угрозы безопасности или экономические изменения.
Организация из любой отрасли может добиться значительного ускорения за счет эффективного использования программного обеспечения (ПО). Более того, современные компании сами становятся цифровыми платформами.
Банки больше не создают ценность за счет золотых слитков в хранилищах. Они преуспевают за счет быстрой и надежной торговли, создания новых каналов и продуктов для привлечения клиентов.
Компании розничной торговли завоевывают и удерживают клиентов, предлагая им превосходный выбор и обслуживание, причем обслуживание заключается в молниеносной оплате на кассе и удобном онлайн-шопинге. Даже традиционно прижимистые и консервативные правительственные организации инвестируют в технологии ради повышения эффективности своей работы.
ПО и технологии преобразуют и ускоряют организации всех видов и становятся определяющими факторами для компаний при формировании ценности как для клиентов, так и для акционеров.
Исследование Джеймса Бессена из Бостонского университета, проведенное в 2017 году, показало, что стратегическое использование технологий влияет на увеличение доходов и производительности больше, чем слияния и поглощения.
Николь Форсгрен, Джез Хамбл и Джин Ким провели четырехлетнее исследование, в ходе которого опросили 23 тысячи человек из более чем двух тысяч организаций различных отраслей по всему миру и выявили возможности, помогающие компаниям (не только технологическим) проводить цифровую трансформацию, ускоряться и преуспевать.
Практики и возможности, о которых идет речь в саммари, возникли в рамках движения DevOps[1], и они способны трансформировать и уже трансформируют различные отрасли. Авторы делают акцент не на разработке программного обеспечения (о ней уже написано достаточно книг), а на доставке ПО, которая представляет собой путь от коммита[2] к запуску в производство и в большей степени способствует ускорению. Они пришли к выводу, что улучшения в доставке программного обеспечения возможны для каждой команды и в каждой компании, если руководство последовательно поддерживает эти улучшения.
Непрерывная доставка
Непрерывная доставка (НД, CD – Continuous Delivery) – набор возможностей, которые позволяют быстро, безопасно и устойчиво внедрять изменения в производство или непосредственно пользователю. При НД программное обеспечение находится в состоянии постоянной доставки в производство на протяжении всего жизненного цикла, и поддержание ПО в развертываемом состоянии для команды приоритетнее, чем работа над новыми функциями. Проще говоря, смысл постоянной доставки в том, что в код сразу вносятся даже самые маленькие изменения, вопреки практике накопления больших пакетов обновлений. Быстрая обратная связь по качеству и развертываемости системы доступна всем членам команды, и когда они получают отчеты о том, что система не может быть развернута оперативно исправляют ошибки. В основе непрерывной доставки лежит пять ключевых принципов:
▶ Качество сборки. При непрерывной доставке инвестируют в создание культуры, поддерживаемой инструментами и людьми, в которой можно быстро обнаружить любые проблемы и устранить их, пока это еще достаточно дешево.
▶ Работа короткими итерациями. Организации, как правило, планируют работу большими частями. Однако, разделяя ее на меньшие части, выполнение которых быстро обеспечивает измеримые результаты для небольшого сегмента целевого рынка, можно получить качественную обратную связь и благодаря этому оперативно вносить изменения в продукт.
▶ Автоматизация. Компьютеры выполняют повторяющиеся задачи, а люди решают проблемы. Инвестируя в упрощение и автоматизацию повторяющейся работы, которая занимает много времени (например регрессионное тестирование и развертывание ПО), можно снизить затраты и освободить людей для более ценной работы, например по улучшению структуры систем и процессов в ответ на обратную связь.
▶ Постоянные улучшения. Высокоэффективные команды никогда не бывают удовлетворены: они всегда стремятся к максимальному результату, и улучшение становится частью ежедневной работы каждого сотрудника.
▶ Ответственность каждого. В бюрократических организациях сотрудники обычно сосредоточены на целях своего подразделения, а не на организационных целях. Так, разработка фокусируется на пропускной способности, тестировании качества и обеспечении стабильности. Однако эти системные результаты могут быть достигнуты только при тесном сотрудничестве между всеми участниками процесса доставки программного обеспечения – разработчиками и тестировщиками, UX-специалистами, менеджерами по продукту, сотрудниками техподдержки. Для того чтобы каждый сотрудник понимал свою ответственность за общий результат, руководство должно: сделать прозрачным процесс достижения этих системных результатов; донести до остальной части компании организационные цели – измеримые, достижимые, привязанные к срокам; помочь командам в работе над ними.
Вот несколько способов улучшить доставку в вашей организации:
▶ Внедряйте непрерывную доставку. При НД система может быть развернута в производство или конечным пользователям в любое время.
▶ Используйте контроль версий для всех артефактов проекта. Контроль версий – это использование системы управления версиями, такой как Git или Subversion, для всех артефактов[3], включая код приложения, конфигурации приложений, системные конфигурации и скрипты для автоматизации сборки и настройки среды.
▶ Автоматизируйте процесс развертывания ПО.