Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Методики DevOps являются неотъемлемой частью управления рабочими нагрузками в Azure, особенно для приложений SaaS. Ключевыми аспектами управления рабочей нагрузкой являются внедрение, выведение из эксплуатации и изменение клиентских экземпляров. Эти методики упрощают операции и повышают масштабируемость и надежность, что сводит к минимуму вероятность сбоев.
В этой статье описываются рекомендации по проектированию для эффективного управления жизненным циклом клиентов и методики безопасного развертывания.
Управление жизненным циклом клиентов
Управление событиями жизненного цикла клиентов имеет решающее значение для любого приложения SaaS. Как правило, эти события включают следующее:
- Подключение: При регистрации клиента.
- Изменение: При изменении экземпляра клиента (например, изменения ценовой категории).
- Деактивация: Когда клиент отменяет учетную запись.
Вы можете столкнуться с другими событиями жизненного цикла. Например, вы можете позволить клиентам приостановить подписку, сохраняя данные в течение заданного периода и возобновить подписку позже. Каждое событие может иметь уникальные последствия для приложения.
В некоторых решениях управление жизненным циклом клиентов может потребовать только создания или управления данными в таблице базы данных. Для других решений она может включать оркестрацию развертывания инфраструктуры Azure, кода приложения и более сложной конфигурации.
Управление жизненным циклом — это ключевая ответственность за уровень управления решением SaaS. Изначально ваша команда может обрабатывать эти действия вручную. Со временем попробуйте перенести больше функциональности в формализованное решение или приложение уровня управления.
Рекомендации по проектированию
Согласованность. При планировании стратегии управления жизненным циклом рассмотрите сложность действий, необходимых каждому событию жизненного цикла клиента. К этим аспектам относятся размер вашего решения, размер клиентской базы и организационные накладные расходы. Четко представляйте необходимые шаги для каждого события и инвестируйте в элементы управления для поддержания согласованности. Регулярно просматривайте и обновляйте процессы, чтобы гарантировать, что они остаются действительными по мере развития решения.
Модель аренды. Подход к обработке событий жизненного цикла клиента зависит от модели аренды.
Полностью мультитенантные решения с ресурсами инфраструктуры. Подключение или отключение клиента обычно включает обновление списка клиентов и связанных данных в хранилище данных приложения.
Выделенные ресурсы для каждого клиента. Обычно эти задачи включают инициирование развертываний в Azure, мониторинг хода выполнения и обработку сбоев развертывания, возможно, с помощью вмешательства человека.
Развернутые клиентом ресурсы. Возможно, вам потребуется напрямую мешать команде инженеров клиента для подключения или отключения.
Уровни. Рассмотрим модель ценообразования и различные потребности инфраструктуры каждого уровня, особенно если клиенты могут свободно изменять свой номер SKU в любое время. Например, если решение SaaS включает основное приложение и несколько платных модулей надстроек, убедитесь, что ресурсы основного приложения развертываются во время подключения. Кроме того, можно разрешить динамическое добавление и удаление модулей надстройки. При удалении модуля решите, следует ли удалять связанные данные или хранить его для потенциальной повторной активации.
Рекомендации по проектированию
| Рекомендация | Преимущества |
|---|---|
| Задокументируйте каждый тип события жизненного цикла клиента. Убедитесь, что вы записываете пошаговые сведения о процессе для каждого события. |
Вы можете спланировать реагирование на каждое событие в проектировании решения. Четкие инструкции помогают человеческим операторам поддерживать согласованность и служить основой для будущей автоматизации. |
| Обмен данными о общей ответственности между вами и клиентом для каждого события жизненного цикла. Четко и рано сообщайте о том, какие действия вы ожидаете от клиентов, чтобы завершить этап жизненного цикла. | Вы можете уменьшить потенциальные ошибки и разочарование клиентов, вызванные несогласием. |
| Планирование емкости для каждого события жизненного цикла. Например, при подключении нового клиента запланируйте развертывание нового экземпляра приложения, если существующие экземпляры не имеют достаточной емкости для обработки дополнительной нагрузки. Дополнительные сведения см. в статье "Управление выставлением счетов и затратами" для рабочих нагрузок SaaS в Azure. |
Вы можете упростить масштабирование и предотвратить сбои развертывания. |
| Автоматизируйте события жизненного цикла, когда это целесообразно. Для решений с низким объемом или ранним этапом может быть достаточно развертывания и настройки вручную. Но по-прежнему следует использовать сценарии, даже если инженер запускает их каждый раз при возникновении события жизненного цикла. По мере того как ваше решение зрело, интегрируйте эти обязанности в плоскость полного контроля, чтобы уменьшить человеческую ошибку и поддерживать более высокий масштаб. |
Вы можете снизить значительный риск человеческой ошибки и поддержать более высокий масштаб. |
Планирование стратегии управления инфраструктурой
Разработайте стратегию развертывания, обслуживания и управления инфраструктурой Azure на раннем этапе. По мере масштабирования SaaS число ресурсов растет. Проще следовать стратегии управления с самого начала, чем примирить инфраструктуру позже, когда она становится слишком сложной для обработки вручную.
Рекомендации по проектированию
Управление ресурсами клиента. Модель аренды влияет на развертывание ресурсов в решениях SaaS. Вы можете развернуть выделенные ресурсы Azure для каждого клиента или предоставить общий доступ к ресурсам среди определенного числа клиентов. Кроме того, можно использовать один набор общих ресурсов и перенастроить их при подключении новых клиентов. Рассмотрим эти типичные подходы для управления жизненным циклом ресурсов:
Обратитесь к списку клиентов как к конфигурации ресурсов для развертывания. Используйте централизованные конвейеры развертывания для развертывания и настройки этих ресурсов.
Рассматривать список клиентов как данные. Используйте приложение уровня управления для подготовки и настройки инфраструктуры.
Автоматизация инфраструктуры. Многие организации начинают с развертывания облачной инфраструктуры вручную с помощью портала Azure. Эта стратегия сначала легко, но со временем плохо масштабируется. Планируйте автоматизацию развертывания инфраструктуры с помощью средств управления инфраструктурой как кодом (IaC), таких как Bicep или Terraform. Для более сложных требований создайте плоскость управления, которая напрямую использует API Azure Resource Manager.
Атрибуция инфраструктуры. Следите за тем, какие клиенты развертываются в какой инфраструктуре. Отслеживание важно для точного планирования емкости и атрибуции затрат. Вы можете централизованно отслеживать инфраструктуру клиентов в базе данных клиента. Или для выделенной инфраструктуры используйте метаданные ресурсов Azure с группами ресурсов и тегами ресурсов для конкретного клиента. Дополнительные сведения см. в разделе "Организация ресурсов" для рабочих нагрузок SaaS.
Рекомендации по проектированию
| Рекомендация | Преимущества |
|---|---|
| Создайте автоматизацию инфраструктуры с помощью конвейеров развертывания, скриптов или шаблонов с инструментами, с которыми уже знакомы ваша команда. | Знакомые инструменты снижают риск ошибок, так как автоматизация инфраструктуры может быть нарушена, если средства не понимаются. |
| По возможности разверните инфраструктуру с помощью IaC. | IaC помогает сократить ручное обслуживание, что становится более рискованным и более обременительным по мере роста инфраструктуры. |
| Отделите основную инфраструктуру от инфраструктуры уровня клиента. | Различные типы инфраструктуры имеют различные жизненные циклы и действия по управлению. Разделив их, вы можете управлять каждым набором независимо по своему расписанию. |
| Используйте управляемые приложения Azure для развертывания ресурсов, развернутых клиентом, и управления ими. | Управляемые приложения Azure предоставляют ряд возможностей, которые можно использовать для развертывания ресурсов и управления ими в подписке Azure клиента. |
Планирование развертываний приложений
Чтобы улучшить функциональные возможности, регулярно обновляйте код приложения и конфигурацию. Клиенты ожидают согласованного времени простоя во время обновлений и безопасных развертываниях, чтобы свести к минимуму риск сбоев.
Рекомендации по проектированию
Стандартизация инструментов и процессов. Проверенные в отрасли средства DevOps помогают обеспечить согласованность между функциями и зрелости в процессах управления развертываниями приложений. В большинстве случаев разработка собственных инструментов считается антипаттерном. Дополнительные сведения см. в рекомендациях по разработке программного обеспечения OE:03.
Компромисс: сложность и стоимость. Знакомые средства DevOps могут быть экономичными с точки зрения денег и навыков. Однако они добавляют оперативное бремя управления каждым инструментом отдельно. Важно оставаться открытыми для новых технологических инноваций, которые могут воспользоваться вашей рабочей нагрузкой.
Постепенно развертывайте обновления. Осуществляйте развертывание обновлений для клиентов поэтапно. Разделите пользователей на логические группы и разверните изменения в одной группе одновременно. Примените ту же строгость к изменениям конфигурации, так как они могут изменять поведение кода и вызывать сбои. Выполните процесс развертывания для этих изменений.
Примите стратегию управления версиями. Когда клиенты могут выбрать версию приложения, она добавляет гибкость, но усложняет операции. Задайте четкие ожидания для устаревших старых версий и очертите, что происходит, когда они больше не поддерживаются.
Реализуйте автоматизацию. Развертывания вручную подвержены рискам из-за человеческой ошибки и отсутствия согласованности. Даже если развёртывания инициируются вручную, вы должны по возможности максимально автоматизировать процесс и свести к минимуму контроль со стороны человека. Рассмотрим шаги процесса развертывания и как лучше автоматизировать их.
Интеграция тестирования. Интеграция тестирования в процесс развертывания путем выполнения:
- Модульные тесты во время сборки кода.
- Тесты интеграции после развертывания.
- Регулярные тесты производительности.
- Регулярные тесты безопасности и проникновения.
Определите план действий, если все тесты завершаются сбоем на любом этапе.
Неудачные развертывания. Планирование сбоев развертывания путем рассмотрения необходимых действий и подготовки стратегии отката.
Доступ к клиентским средам. Если вы развертываете ресурсы в клиентских средах, понять, как можно применять обновления в этих средах. Рассмотрите возможности, которые предоставляет управляемые приложения Azure, например развертывание обновлений в приложениях.
Рекомендации по проектированию
| Рекомендация | Преимущества |
|---|---|
| Используйте установленные отраслевые средства и процессы DevOps для управления развертываниями приложений. В большинстве случаев разработка собственных инструментов считается антипаттерном. Дополнительные сведения см. в рекомендациях по разработке программного обеспечения OE:03. |
Эта стратегия поможет вашей команде разработчиков эффективно развертывать приложения, не изучая настраиваемые средства. |
| Упреждающее уведомление клиентов о предстоящих или завершенных развертываниях. | Эта стратегия поможет обеспечить согласование правильных ожиданий с клиентами относительно предстоящих изменений в вашем приложении. |
| Применяйте безопасные практики развертывания, которые используются для развертывания обновлений в группы клиентов с помощью стратегий, таких как прогрессивная экспозиция и модели состояния. Прежде чем перейти к более широкой клиентской базе, начните с менее чувствительных или ранних пользователей. Дополнительные сведения см . в рекомендациях по безопасному развертыванию. |
Эта стратегия поможет вам определить проблемы, прежде чем они влияют на всех клиентов. |
| Считайте конфигурацию собственным кодом. | Вы можете снизить вероятность простоя и принять согласованный процесс для изменений в рабочей среде. Этот подход централизует операционные задачи, такие как тестирование изменений и постепенное развертывание обновлений конфигурации и кода. |
| Определите процесс управления изменениями и сообщите политику обновления версий, чтобы убедиться, что клиенты знают, кто активирует обновления, частоту и условия. Если клиенты могут выбрать свою версию приложения, задайте четкие рекомендации по отмене устаревших версий. Свести к минимуму количество версий приложений, выполняемых в рабочей среде. |
Сохранение старых версий приводит к неэффективности работы. Предоставьте необходимый контроль для клиентов и избегайте перегрузки вашей команды, задав четкие ожидания и политики. |
| Избегайте настройки приложений для одного клиента. Для поддержки различных потребностей клиентов можно создать различные уровни решения или использовать флаги компонентов для включения определенных функций для определенных пользователей. |
Избегайте неоднозначности о том, какие функции развертываются в какой версии, и сокращайте нагрузку на обслуживание. |
| У вас есть план отката для неудачных развертываний, включая критерии для активации и необходимых утверждений. | Планы отката помогают гарантировать, что вы сможете восстановиться после ошибок развертывания даже в непредвиденных обстоятельствах. |
| Регулярно тестируйте приложение и на нескольких этапах процесса разработки программного обеспечения. Примите методологию сдвига влево и выявляйте ошибки и отклонения на ранних стадиях жизненного цикла. | Помогите предотвратить критические ошибки, влияющие на клиентов. |
Другие ресурсы
Мультитенантность — это основная бизнес-методология разработки рабочих нагрузок SaaS. В следующих статьях содержатся дополнительные сведения о том, как внедрить методики DevOps:
- Архитектурные подходы к развертыванию и настройке мультитенантных решений
- Рекомендации по обновлению мультитенантного решения
- Рекомендации по многотенантным плоскостям управления
- Архитектурные подходы для плоскостей управления в мультитенантных решениях
Следующий шаг
Узнайте о рекомендациях по управлению инцидентами для реализации процессов и средств, поддерживающих решение SaaS в Azure.