Рекомендации DevOps для рабочих нагрузок SaaS в Azure
Методики 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 по возможности. | Обслуживание инфраструктуры вручную становится более рискованным и более обременительным по мере роста объема инфраструктуры. |
Отделите основную инфраструктуру от инфраструктуры уровня клиента. | Различные типы инфраструктуры имеют различные жизненные циклы и действия по управлению. Разделив их, вы можете управлять каждым набором независимо по своему расписанию. |
Используйте управляемые приложения Azure для развертывания ресурсов, развернутых клиентом, и управления ими. | Управляемые приложения Azure предоставляют ряд возможностей, позволяющих развертывать ресурсы и управлять ими в подписке Azure клиента. |
Планирование развертываний приложений
Регулярно обновляйте код приложения и конфигурацию для повышения функциональности. Клиенты ожидают согласованного времени простоя во время обновлений и безопасных развертываниях, чтобы свести к минимуму риск сбоев.
Рекомендации по проектированию
Стандартизация инструментов и процессов. Проверенные в отрасли средства DevOps обеспечивают согласованность между функциями и зрелости в процессах управления развертываниями приложений. Разработка собственных средств считается антипаттерном в большинстве случаев.
Ознакомьтесь с рекомендациями по разработке программного обеспечения OE:03.
Компромисс: сложность и стоимость. Использование знакомых средств DevOps может быть экономически эффективным с точки зрения денег и навыков. Однако она добавляет оперативное бремя управления каждым инструментом отдельно. Важно оставаться открытыми для новых технологических инноваций, которые могут воспользоваться вашей рабочей нагрузкой.
Постепенно развертывайте обновления. Разверните обновления для подмножества клиентов за раз, разделив пользователей на логические группировки. Примените ту же строгость к изменениям конфигурации, так как они могут изменять поведение кода и вызывать сбои. Выполните процесс развертывания для этих изменений.
Примите стратегию управления версиями. Позволяя клиентам выбирать свою версию приложения, добавляет гибкость, но усложняет операции. Задайте четкие ожидания для устаревших старых версий и очертите, что происходит, когда они больше не поддерживаются.
Автоматизация. Развертывания вручную подвержены рискам из-за ошибок человека и отсутствия согласованности. Даже если развертывания активируются вручную, процесс развертывания должен быть автоматизирован как можно больше и должен требовать минимального вмешательства человека. Рассмотрим шаги процесса развертывания и как лучше автоматизировать их.
Тестирование. Интеграция тестирования в процесс развертывания путем выполнения:
- Модульные тесты во время сборки кода
- Тесты интеграции после развертывания
- Регулярные тесты производительности
- Регулярные тесты безопасности и проникновения
Решите принять меры, если тесты завершаются сбоем на любом этапе.
Неудачные развертывания. Планирование сбоев развертывания путем рассмотрения необходимых действий и подготовки стратегии отката.
Доступ к клиентским средам. Если вы развертываете ресурсы в клиентских средах, понять, как можно применять обновления в этих средах. Рассмотрите возможности, предоставляемые управляемыми приложениями Azure, например развертывание обновлений в приложениях.
Рекомендации по проектированию
Рекомендация | Преимущества |
---|---|
Используйте установленные и проверенные средства DevOps в отрасли для управления развертываниями приложений. Разработка собственных средств считается антипаттерном в большинстве случаев. Дополнительные сведения см . в рекомендациях по разработке программного обеспечения OE:03 |
Вы можете убедиться, что ваша команда инженеров эффективно развертывает, не изучая пользовательские встроенные инструменты. |
Упреждающее уведомление клиентов о предстоящих или завершенных развертываниях. | Вы можете убедиться, что правильные ожидания задаются вашими клиентами о внесении изменений в приложение. |
Применяйте безопасные методики развертывания, которые развертывают обновления для групп клиентов с помощью стратегий, таких как прогрессивное воздействие, модели работоспособности и другие. Начните с менее чувствительных или ранних пользователей, прежде чем переходить к более важным. Дополнительные сведения см . в рекомендациях по безопасному развертыванию. |
Этот подход помогает выявить проблемы, прежде чем они влияют на всех клиентов. |
Считайте конфигурацию собственным кодом. | Вы можете снизить вероятность простоя и принять согласованный процесс для изменений в рабочей среде. Это позволяет централизованно выполнять рабочие обязанности, такие как тестирование изменений и постепенное развертывание обновлений конфигурации и кода. |
Определите процесс управления изменениями и сообщите политику обновления версий, чтобы убедиться, что клиенты знают, кто активирует обновления, частоту и условия. Если клиентам разрешено выбрать версию приложения, задайте четкие рекомендации по отмене устаревших версий. Свести к минимуму количество версий приложений, работающих в рабочей среде. |
Сохранение старых версий приводит к неэффективности работы. Предоставьте необходимый контроль для клиентов, избегая переполнения команды, задав четкие ожидания и политики. |
Избегайте настройки приложений для одного клиента. Для поддержки различных потребностей клиентов можно создать различные уровни решения или использовать флаги компонентов для включения определенных функций для определенных пользователей. |
Избегайте неоднозначности о том, какие функции развертываются в какой версии, и сокращайте нагрузку на обслуживание. |
У вас есть план отката для неудачных развертываний, включая критерии для активации и необходимых утверждений. | Планы отката помогают обеспечить восстановление после ошибок развертывания даже в непредвиденных обстоятельствах. |
Регулярно тестируйте приложение и на нескольких этапах процесса разработки программного обеспечения. Применяйте менталитет "shift-left" и перехват ошибок и отклонений в начале жизненного цикла. | Помогите предотвратить критические ошибки, влияющие на клиентов. |
Дополнительные ресурсы
Мультитенантность — это основная бизнес-методология разработки рабочих нагрузок SaaS. В этих статьях содержатся дополнительные сведения о внедрении методик DevOps:
- Архитектурные подходы к развертыванию и настройке мультитенантных решений
- Рекомендации по обновлению мультитенантного решения
- Рекомендации по многотенантным плоскостям управления
- Архитектурные подходы для плоскостей управления в мультитенантных решениях
Следующий шаг
Узнайте о рекомендациях по управлению инцидентами для реализации процессов и средств, поддерживающих решение SaaS в Azure.