Рекомендации по методам безопасного развертывания
Применимо к этой рекомендации Power Platform контрольного списка хорошо спроектированного операционного совершенства:
О.Э.:10 | Четко определите методы безопасного развертывания вашей рабочей нагрузки. Подчеркивайте идеалы небольших, постепенных, контролируемых по качеству методов выпуска. Используйте современные шаблоны развертывания для контроля рисков. Учитывайте рутинные и аварийные развертывания или развертывания с исправлениями. |
---|
В этом руководстве описаны рекомендации по использованию безопасных методов развертывания. Процессы и процедуры безопасного развертывания определяют, как безопасно вносить и развертывать изменения в вашей рабочей нагрузке. Их внедрение требует от вас рассмотрения развертывания через призму управления рисками. Внедрив эти практики, вы сможете свести к минимуму риск человеческих ошибок при развертывании и ограничить влияние проблемных развертываний на ваших пользователей.
Ключевые стратегии проектирования
При внедрении методов безопасного развертывания следует учитывать важные рекомендации:
- Безопасность и последовательность: все изменения в рабочей нагрузке производства по своей сути рискованны и должны осуществляться с упором на безопасность и последовательность.
- Модели работоспособности: Развертывания должны пройти проверку работоспособности перед началом каждой фазы постепенного воздействия.
- Обнаружение проблем: при обнаружении проблем развертывание следует немедленно остановить и начать восстановление.
В следующих разделах приведены подробные рекомендации для каждого из этих пунктов.
Безопасность и согласованность
Независимо от того, развертываете ли вы обновление кода приложения, инфраструктуры как кода (IaC), флага функции или конфигурации, вы создаете риск для рабочей нагрузки. Не существует низкорисковых развертываний в производстве. Каждое развертывание должно следовать стандартному шаблону и должно быть автоматизировано, чтобы обеспечить согласованность и минимизировать риск человеческой ошибки. Крайне важно, чтобы ваша цепочка поставок рабочей нагрузки и конвейеры развертывания были надежными, безопасными и имели четко определенные стандарты развертывания. Рассматривайте каждое развертывание как возможный риск и подвергайте каждое развертывание одинаковому уровню управления рисками.
Несмотря на риски, вам следует продолжать регулярно вносить изменения в свою рабочую нагрузку. Отсутствие регулярного развертывания обновлений создает другие риски, такие как уязвимости безопасности, которые необходимо устранять посредством развертывания. Подробнее читайте в Рекомендациях по проектированию разработки рабочей нагрузки цепочка поставок.
Частые небольшие развертывания предпочтительнее нечастых крупных развертываний. Небольшие изменения легче разрешить при возникновении проблем, а частые развертывания помогают вашей команде укрепить уверенность в процессе развертывания. Также важно учиться на производстве, анализируя процессы рабочей нагрузки, когда вы сталкиваетесь с аномалиями во время развертывания. Вы можете обнаружить слабые места в конструкции вашей инфраструктуры или ее развертывании. Если во время развертывания возникают проблемы, убедитесь, что частью вашего процесса являются безупречные вскрытия, позволяющие извлечь уроки из инцидента.
Модели работоспособности
Разработайте надежную модель работоспособности как часть вашей платформы мониторинга наблюдаемости и стратегий надежности. Ваша модель работоспособности должна обеспечивать детальное представление о компонентах и общем состоянии рабочей нагрузки. Внимательно следите за показателями работоспособности после внедрения. Если во время развертывания вы получили оповещение об изменении работоспособности, немедленно расследуйте проблему и определите дальнейший курс действий, например, откат изменения. Если пользователи не сообщат о проблемах и все индикаторы работоспособности останутся зелеными, развертывание следует продолжить. Обязательно включите показатели использования в свою модель работоспособности, чтобы убедиться, что отсутствие сообщений о проблемах со стороны пользователей и негативных сигналов о работоспособности не скрывает проблему. Подробнее читайте в разделе Рекомендации по выполнению анализа видов отказов.
Обнаружение проблем
Если ваше развертывание вызывает проблему в одной из групп развертывания, развертывание должно быть немедленно прекращено. Выясните причину проблемы и серьезность последствий сразу после получения предупреждения. Восстановление после проблемы может включать в себя:
- Откат путем отмены изменений, внесенных в развертывание, и возврата к последней известной рабочей конфигурации.
- Продолжение путем решения проблемы во время развертывания. Вы можете устранить проблемы в середине развертывания, применив исправление или иным образом минимизировав проблему.
- Развертывание новой инфраструктуры с использованием последней известной рабочей конфигурации.
Откат изменений, особенно изменений базы данных, схемы или других компонентов с отслеживанием состояния, может оказаться сложной задачей. Ваши рекомендации по безопасному развертыванию должны содержать четкие инструкции о том, как обрабатывать изменения данных в соответствии с дизайном хранилища данных для вашей рабочей нагрузки. Аналогичным образом, откат вперед должен осуществляться осторожно, чтобы гарантировать, что безопасные процессы развертывания не будут проигнорированы, а исправление или другие минимизирующие усилия будут выполнены безопасно.
Общие рекомендации
Внедрите управление версиями в артефактах сборки, чтобы при необходимости можно было выполнить откат назад и вперед.
Используйте поток выпуска или структуру ветвления на основе соединительной линии, которая обеспечивает тесное синхронизированное взаимодействие в команде разработчиков, вместо Gitflow или структуры ветвления на основе среды.
Автоматизируйте как можно большую часть безопасного развертывания. Подробнее читайте в разделе Рекомендации по внедрению автоматизации.
Используйте методы непрерывной интеграции (CI) для регулярной интеграции изменений кода в репозитории. Практики CI могут помочь вам выявить конфликты интеграции и снизить вероятность крупных и рискованных слияний. Подробнее читайте в разделе Рекомендации по непрерывной интеграции.
Используйте флаги функций, чтобы выборочно включать или отключать новые функции или изменения в производстве. Флаги функций могут помочь вам контролировать доступность нового кода и быстро откатить развертывание в случае возникновения проблем.
Развертывайте изменения в промежуточных средах, отражающих вашу производственную среду. Тренировочные среды позволяют тестировать изменения в контролируемых условиях перед развертыванием в реальной среде.
Установите проверки перед развертыванием, включая проверку кода, сканирование безопасности и проверку соответствия нормативам, чтобы гарантировать безопасность развертывания изменений.
Используйте автоматические выключатели для автоматического прекращения трафика к сервису, в котором возникли неполадки, и предотвращения дальнейшей деградации системы.
Аварийные протоколы
Разработайте предписывающие протоколы, определяющие, как можно скорректировать ваши безопасные процессы развертывания для исправления или решения чрезвычайных проблем, таких как нарушение безопасности или выявление уязвимостей. Например, ваши протоколы действий в чрезвычайных ситуациях могут включать:
- Ускорение этапа продвижения и одобрения
- Ускорение дымового тестирования и интеграционного тестирования
- Сокращение времени выпечки
В некоторых случаях чрезвычайная ситуация может ограничить контрольные точки проверки качества и тестирования, но контрольные точки все равно следует запускать как можно быстрее, как внеплановое учение. Обязательно определите, кто может одобрить ускоренное безопасное развертывание в чрезвычайной ситуации, а также критерии, которым должно соответствовать ускорение для одобрения. Согласуйте свои протоколы действий в чрезвычайных ситуациях с вашим планом действий в чрезвычайных ситуациях ответ , чтобы гарантировать, что все чрезвычайные ситуации будут обрабатываться в соответствии с одними и теми же протоколами.
Рекомендации
Создание и поддержание методов безопасного развертывания является сложной задачей. Ваш успех в полном внедрении надежных стандартов зависит от зрелости вашей практики во многих областях разработки программного обеспечения. Использование автоматизации, IaC только для изменений инфраструктуры, последовательности в стратегиях ветвления, флагов функций и других практик может помочь обеспечить безопасное развертывание. Используйте это руководство, чтобы оптимизировать свою рабочую нагрузку и составить планы по улучшению по мере развития вашей практики.
Возможности в Power Platform
Pipelines Power Platform направлены на демократизацию управления жизненным циклом приложений (ALM) для Power Platform клиентов Dynamics 365 путем внедрения в сервис возможностей автоматизации ALM, непрерывной интеграции и непрерывной поставки (CI/CD).
Microsoft Power Platform Инструменты сборки для Azure DevOps могут использоваться для автоматизации общих задач сборки и развертывания, связанных с приложениями, созданными на Power Platform.
Действия GitHub для Power Platform позволяют разработчикам создавать автоматизированные рабочие процессы жизненного цикла разработки программного обеспечения. С помощью GitHub Actions для Microsoft Power Platform вы можете создавать бизнес-процессы в своем репозитории для создания, тестирования, упаковки, выпуска и развертывания приложений; выполнять автоматизацию; и управлять ботами и другими компонентами на базе Power Platform.
ALM Accelerator — это инструмент с открытым исходным кодом, состоящий из набора приложений, скриптов и конвейеров, предназначенных для автоматизации процесса непрерывной интеграции/непрерывной поставки.
Автоматизируйте тесты с помощью Azure Pipelines.
Переменные среды в решениях сохраняют ключи и значения параметров, которые затем служат входными данными для других объектов приложения. Отделение параметров от объектов-потребителей позволяет изменять значения в той же среде или при переносе решений в другие среды.
Power Platform среды предоставляют функциональность восстановления на определенный момент времени, которая может помочь вам выполнить откат.