Релиз

Три ингредиента для отличных выпусков релизов программного обеспечения

Объедините одну часть архитектуры с двумя частями командной работы. Добавьте автоматизацию и перемешайте.

В какой-то момент вашей карьеры - если вы еще этого не сделали - вы будете вовлечены в выпуск релиза монолитного программного обеспечения. То есть релиза с неустраненными ошибками и взаимозависимостями, которые требуют, чтобы вся команда работала круглосуточно. Не говоря уже о том, что как только релиз выйдет в производство, он, вероятно, потребует несколько патчей.

Поставляемый код  - релиз - является сильным показателем гибкости для разработчиков программного обеспечения. Все усилия по ускорению планирования, написания кода и тестирования будут напрасными, если выпуск  релиза не будет гладким процессом. Чтобы сделать выпуск релиза  гибким делом, ключевым моментом является автоматизация развертывания, так как она объединяет кодеров и операторов на ранних этапах разработки, практикует непрерывную интеграцию и немедленно устраняет дефекты. Хранение кода в доступном для использования состоянии является отличительной чертой agile разработки. Все бережливое планирование и итеративная разработка в мире ничего не значат, если вы не можете предоставить код в тот момент, когда решите, что он готов.

Большие выпуски релизов  программного обеспечения начинаются с модульной архитектуры

В любой программе лучше всего выпускать легко и часто. Команда может сделать выпуск  релиза естественной частью своей agile культуры, создав (или реорганизовав) модульную архитектуру. Вместо того, чтобы иметь одно большое приложение (например, упомянутый выше монолит), на ранних этапах программы его можно разделить на несколько частей. Сгруппируйте аналогичные функции в более мелкие приложения или компоненты и получите четкие контракты API между каждым из приложений и компонентов. Эти API-интерфейсы можно тестировать автоматически при каждой сборке, чтобы обеспечить совместимость и снизить риски при выпуске релиза программного обеспечения.

Модульная архитектура означает, что вам не нужно выпускать весь программный стек в виде «большого взрыва», а контракты API упрощают обновление компонентов и обеспечивают совместимость между версиями. Короче говоря, модульные релизы требуют меньше движущихся частей. И это переводит их в более простые выпуски релизов.

Великолепные релизы  программного обеспечения основаны на хороших отношениях

Разработка программного обеспечения редко осуществляется в вакууме. Действительно, отличная разработка программного обеспечения включает всю команду от управления продуктом до операций. Например, рабочая команда является ключевым партнером в предоставлении (поставке) программного обеспечения в производство, поскольку они помогают программному обеспечению достигать конечных пользователей.

Команды разработчиков могут помочь информировать и расширить возможности рабочих команд с помощью следующих методов:

  • Сделайте ясным список материалов для каждого выпуска релиза. Рабочие команды не всегда имеют тот же уровень контекста в отношении выпуска релиза, что и команда разработчиков.
  • Для каждой задачи, которая решена в релизе, предоставьте ссылку на свой трекер задач и систему контроля версий, так чтобы у проектной команды  был тот же уровень контекста, если проблемы возникают во время развертывания.
  • Иногда возникают проблемы при передаче кода из среды разработки в промежуточную среду. Вызовите эти проблемы, поскольку они могут всплыть снова во время производственного пуска.
  • Происходят сбои в развертывании, поэтому всегда предоставляйте операционной команде четкий путь эскалации для плавного решения проблем.

Оперативные команды могут помочь своим коллегам в разработке с этими предложениями:

  • Когда возникают проблемы при производстве, найдите время, чтобы понять основные причины и решения. Их будут избегать (или обрабатывать более изящно) в будущем.
  • Перенесите данные конфигурации из производства обратно в промежуточную среду и среду разработки, чтобы предотвратить смещение конфигурации.

По мере того как код переходит от разработки к подготовке и к производству, ключевые настройки и пользовательские данные переносятся прямо противоположным образом: с производства на подготовку к разработке.

Наличие этих двунаправленных отношений помогает среде разработки тесно моделировать производственную среду. Это означает меньше ошибок и сюрпризов в день релиза.

Большие выпуски релизов программного обеспечения просты для выталкивания

Автоматизируйте! Автоматизируйте! Автоматизируйте!

Автоматизация релиза - лучший способ улучшить культуру релиза. Если релиз не автоматизирован сегодня, начните с автоматизации релиза в промежуточной среде. Как только все увидят, насколько это просто, естественным шагом будет также автоматизировать развертывание производства.

Если релизы трудны, сделайте практику выпускать часто - даже если это просто подготовка. Когда команда разработчиков почувствует болевые точки релиза, она будет вдохновлена инновациями на то, чтобы упростить его (и автоматизировать).

Автоматизированное тестирование и непрерывная интеграция являются ключевыми дисциплинами, обеспечивающими отличные релизы. Убедитесь, что время сборки и время тестирования максимально короткие, и помните, что сборки, которые легко проверить, легче выпустить. Это потому, что цикл проверки более точно следует за командой.

 

Большие релизы программного обеспечения - это здорово!

Хранение кода в высвобождаемом состоянии является отличительной чертой гибкой разработки.

ТВИИТ: Все ваше бережливое планирование и итеративная разработка ничего не значат, если вы не можете быстро отгрузить.

КАК МЫ ЭТО ДЕЛАЕМ

Мы находим небольшие, частые релизы, которыми легче управлять для наших свойств SaaS. Для загружаемых продуктов тесное сотрудничество между группами разработки, эксплуатации и сборки имеет большое значение. Эти группы должны работать вместе, чтобы автоматизировать релизы и заранее адаптировать автоматизацию к предстоящим изменениям в продуктах. Многие команды Atlassian автоматически развертывают каждую успешную сборку мастера в тестовую среду. Когда пришло время рекламировать релиз или выпустить его для клиентов, эти группы могут запустить автоматизацию развертывания одним нажатием кнопки.

Как разработчики программного обеспечения, релиз должен быть основным моментом нашего инновационного цикла. Мы видим, как клиенты взаимодействуют с написанным нами кодом и обеспечивают обратную связь. Ура! Делая релизы естественной частью вашего рабочего дня, вам будет легче выпускать код в производство и получать удовольствие от слов: «Это мой код!»

По материалам Agile Coach "Release"