Внедрение методов безопасного развертывания
Реализуйте охранники в процессе развертывания, чтобы свести к минимуму влияние ошибок или непредвиденных условий. |
---|
Во время цикла разработки артефакты рабочей нагрузки проходят множество изменений по мере их реализации и тестирования, а также исправления ошибок.
Процесс развертывания должен соответствовать стандартной операционной процедуре. Любое изменение должно быть развернуто с тем же уровнем строгости. Этот принцип применяется одинаково к коду, конфигурации и всем связанным артефактам. Ключ заключается в применении безопасных методик как можно раньше, чтобы у вас была прогнозируемость в рабочей среде. Даже если ошибки достигают клиентов, вы сможете развернуть изменения восстановления как можно скорее.
Пример сценария
Компания Contoso Air разработала веб-приложение, которое позволяет клиенту забронировать рейсы непосредственно через приложение. Приложение работает в рабочей среде в течение более года.
Приложение полностью развернуто в Azure и основано на службе приложение Azure, Azure Cosmos DB, Функции Azure, Azure Logic Apps и Служебная шина Azure.
Кодифицировать стандарты автоматического развертывания
Стандартизируйте процесс для развертывания любых изменений с помощью автоматизированных процессов развертывания, таких как конвейеры. Все среды должны использовать конвейеры. Классифицируйте ресурсы и версии для каждой среды, чтобы сделать их легко трассируемыми и идентифицируемыми.
Согласованные методы развертывания сокращают проблемы, вызванные ошибками процесса и дисперсией, и позволяют сосредоточить усилия на проблемах рабочей нагрузки.
Стандартизация гарантирует, что развертывание выполняется безопасно, надежно и с возможностью повторяемости.
Классификация позволяет легко просматривать журналы предыдущих развертываний и проблем, которые произошли. Эту информацию можно использовать для ускорения операций отката и отката.
Задача Компании Contoso
- Команда рабочей нагрузки Contoso Air использует автоматизированные конвейеры сборки и развертывания, но развертывания обычно требуют ручного вмешательства во время операции для изменения и проверки различных параметров конфигурации.
- Из-за вмешательства вручную в развертывании возникают частые ошибки, что делает каждый выпуск очень стрессовым и разрушительным событием для всей команды. Вмешательство вручную также затрудняет откат при сбое развертывания.
Применение подхода и результатов
- Команда выделяет время для автоматизации изменений конфигурации в рамках развертывания и интеграции добавленных функций в существующие конвейеры развертывания.
- Параметры конфигурации, связанные с каждой средой, являются внешними для соответствующих JSON-файлов, которые сохраняются в системе управления версиями для дополнительной трассировки. Параметры, которые считаются секретами, сохраняются в хранилищах секретов, которые также выделяются для каждой среды.
- Все изменения теперь регистрируются во время развертывания, чтобы обеспечить полную трассировку, чтобы помочь в устранении неполадок и аудитах. Команда также добавляет автоматические тесты для проверки изменений конфигурации в конвейере.
- Затем команда будет работать над полной автоматизацией откатов для дальнейшего оптимизации процессов.
- В результате новой автоматизации развертывания были более надежными и предсказуемыми, и моральный дух команды также вырос.
Часто развертывать
Развертывание небольших добавочных обновлений на регулярном уровне.
Этот подход поможет обеспечить управление историями пользователей и рабочими элементами с точки зрения управления проектами и снизить риск крупномасштабных проблем при сбое развертываний.
Задача Компании Contoso
- Процессы развертывания команды исторически были делать основные выпуски каждые три до четырех месяцев. Эта практика затрудняет проверку выпуска. Команда также столкнулась с трудностями в устранении неполадок с таким количеством движущихся частей.
- Проблемные выпуски, требующие горячих исправлений в середине выпуска или должны быть откатированы и отменены несколько раз.
- Выпуски очень стрессовые и рассматривались как "все руки на палубе" ситуации, которая негативно влияет на моральный дух команды.
Применение подхода и результатов
- После последнего проблемного выпуска заинтересованные лица попросили команду придумать лучший подход к развертыванию. Команда решила изменить свои методики для поддержки частых, небольших изменений. Они ограничивают область каждого выпуска до одного или (в большинстве случаев) нескольких связанных изменений, которые тщательно тестируются по мере продвижения сборки в более низких средах.
- В результате выпуски стали гораздо более эффективными, и качество увеличилось. Выпуски проще проверять, а проблемы проще устранять.
- Имея регулярный курс прогнозируемых выпусков, помог восстановить уверенность и моральный дух команды. Пользователи также получают выгоду. С более высоким качеством выпуска они видят меньше нарушений и получают доступ к новым функциям гораздо раньше.
Использование прогрессивного подхода к воздействию
Постепенное развертывание обновлений с учетом должного анализа данных. Используйте модели развертывания, которые позволяют управлять постепенно увеличением числа экземпляров и клиентов до тех пор, пока обновление не будет принято всеми.
Протестируйте каждое обновление в управляемом режиме, чтобы проблемы были исправлены в начале рабочей среды. Избегайте развертывания неисправного обновления, влияющего на всю базу клиентов.
Проверьте, совместимо ли обновление назад и вперед.
Задача Компании Contoso
- Команда видит большие преимущества от переключения их подхода, чтобы сделать небольшие выпуски. Они выделяют меньше времени сейчас на выпуски и чувствуют себя энергичным, чтобы продолжить путь к улучшению операционного превосходства.
- По мере того как они экспериментируют с новыми функциями, некоторые изменения не были хорошо получены пользователями или вызвали увеличение вызовов поддержки из-за крутой кривой обучения они приносят вместе.
- Они задаются вопросом, как они могут продолжать инновации своих приложений, чтобы максимально повысить производительность своих пользователей, в то время как по-прежнему минимизирует влияние выпуска функций, которые могут быть не столь популярными или простыми для использования.
Применение подхода и результатов
- Они решили реализовать модель выпуска компонентов, которая предоставляет новые функции пользователям постепенно, используя флаги компонентов.
- На этапах планирования для новых функций определяется критерий выбора того, какие пользователи будут предоставляться функции первым. Для получения новой функции выбрана небольшая группа пользователей. В зависимости от отзывов пользователей функция развертывается в последовательно больших группах, пока не будет запущена новая версия всей совокупности пользователей. По мере того как пользователи получают доступ к новым функциям, группа поддержки документируют результаты случаев поддержки для совместного использования внутренних и потенциально заполнений внешних часто задаваемых вопросов.