За шесть лет число программистов в Facebook выросло в 20 раз, а размер кодовой базы — в 50 раз [1], однако продуктивность труда разработчиков, измеряемая числом строк в единицу времени, сохраняется на неизменном уровне. В Facebook считают это достижением, связывая его с применением методики непрерывного развертывания (Continuous Deployment), суть которой — в автоматизации тестирования инкрементальных изменений программного обеспечения и в оперативном развертывании обновленных версий на рабочей платформе. При работе в таком режиме изменения, вносимые программистами, могут попадать к клиентам за считанные дни или даже часы.

Переход на новые принципы привел к масштабным переменам в мире разработки ПО, оказав сильное влияние на корпоративную культуру, востребованные навыки сотрудников и сами принципы работы в организациях. Совместное исследование этих изменений провели специалисты компаний Cisco, Facebook, Google, IBM, LexisNexis, Microsoft, Mozilla, Netflix, Red Hat и SAS. В этот ряд вошли как первопроходцы непрерывного развертывания, на сегодня уже располагающие соответствующими зрелыми процессами, так и компании, которым с учетом их архитектурного балласта потребуются годы на реализацию соответствующих инициатив. Темпы развертывания ПО в перечисленных компаниях разнятся от тысячи раз за день до двух раз за год, но все они стремятся ускорять этот процесс, чтобы быстрее предоставлять высококачественное ПО клиентам. Для этого применяются методы сложной аналитики, с помощью которых водопады данных телеметрии преобразуются в полезную информацию, позволяющую совершенствовать программные продукты.

Одним из результатов исследования и стала формулировка десятка принципов непрерывного развертывания, представляющх собой рабочий набор методов, на которые сегодня опирается соответствующая практика и которые новички могут использовать в качестве мерила самооценки. Эти принципы выведены по результатам опроса, проведенного в перечисленных компаниях. Респонденты сообщали, насколько часто в своей работе они прибегают к различным стандартным методам и практикам, перечисленным в диаграмме (см. рисунок). Самыми распространенными оказались автоматическое модульное тестирование, промежуточное развертывание (staging) и ветвление. Распространены также ревизии кода и ручное утверждение в рамках высокоавтоматизированных процессов развертывания. Наблюдается рост популярности инструментов ревизии кода, в особенности распределенных систем, — сегодня разработчики с большей готовностью предоставляют код для проверки другим специалистам, стремясь минимизировать количество дефектов в выпускаемом ПО. Наряду с этим оказался очень популярен принцип владения изменениями, согласно которому техническую поддержку своих продуктов и устранение дефектов осуществляют сами разработчики, а не специальная группа, которая берет на себя и весь груз ответственности. В результате у разработчиков появляется больше личной заинтересованности в развертывании более качественного ПО [2].

Частота использования 11 методов непрерывного развертывания
Частота использования 11 методов непрерывного развертывания

 

Среди преимуществ, полученных благодаря непрерывному развертыванию, респонденты чаще всего отмечали ускорение реализации функциональности, улучшение качества ПО и повышение удовлетворенности клиента, что,...

Это не вся статья. Полная версия доступна только подписчикам журнала. Пожалуйста, авторизуйтесь либо оформите подписку.

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF