Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба приложений Azure — это платформа как услуга (PaaS), которая предоставляет полностью управляемую среду размещения для создания, развертывания и масштабирования веб-приложений. В качестве решения PaaS служба приложений абстрагирует базовую инфраструктуру, которая позволяет сосредоточиться на разработке приложений. Функция веб-приложений службы приложений запускает приложения в контексте плана службы приложений. Этот план определяет ресурсы, операционную систему, регион и модель цен (SKU), которая используется для размещения приложения.
В этой статье предполагается, что в качестве архитектора вы рассмотрели дерево принятия решений вычислений и выбрали службу приложений в качестве вычислительных ресурсов для рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.
Область технологий
В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:
- Планы службы приложений
- Web Apps
Другие предложения Azure связаны с службой приложений, такими как Функции Azure, Azure Logic Apps и среда службы приложений. Эти возможности выходят за рамки данной статьи. Среда App Service упоминается время от времени для пояснения функций или возможностей основных предложений службы приложений.
Reliability
Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.
Принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка проверки проектирования для надежности. Определите, насколько это соответствует вашим бизнес-требованиям, принимая во внимание уровни и функции Службы приложений и ее зависимости. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Приоритет потоков пользователей: Не все потоки одинаково важны. Определите критически важные пути в приложении и назначьте приоритеты каждому потоку, чтобы управлять решениями по проектированию. Проектирование потока пользователей может повлиять на уровни служб и количество экземпляров, которые вы выбираете для плана и конфигурации службы приложений.
Например, приложение может включать интерфейсные и внутренние уровни, которые взаимодействуют через брокер сообщений. Вы можете сегментировать уровни в нескольких веб-приложениях, чтобы обеспечить независимое масштабирование, управление жизненным циклом и обслуживание. Если вы размещаете большое приложение в одном плане, это может привести к проблемам с памятью или ЦП, которые влияют на надежность.
Для оптимальной производительности на стороне пользовательского интерфейса может потребоваться больше экземпляров на фронтэнде. Однако серверная часть может не требовать того же количества экземпляров.
Предвидеть потенциальные сбои: Планирование стратегий устранения рисков для потенциальных сбоев. В следующей таблице показаны примеры анализа режима сбоя.
Failure Mitigation Сбой базовых или абстрактных компонентов службы приложений Имейте избыточность компонентов в инстанциях и зависимостях. Мониторинг работоспособности экземпляров, производительности сети и производительности хранилища. Сбой внешних зависимостей Используйте такие шаблоны конструктора, как шаблон повторных попыток и шаблон разбиения цепи. Отслеживайте внешние зависимости и задайте соответствующие время ожидания. Сбой из-за перенаправления трафика в неработоспособные экземпляры Мониторинг работоспособности экземпляра. Учтите скорость отклика и избегайте отправки запросов в недоступные экземпляры. Избыточность сборки: Создайте избыточность в приложении и вспомогательной инфраструктуре. Распределите экземпляры между зонами доступности, чтобы повысить отказоустойчивость. Трафик направляется в другие зоны, если одна из зон выходит из строя. Разверните приложение в нескольких регионах, чтобы убедиться, что приложение остается доступным, даже если весь регион испытывает сбой.
Создайте аналогичные уровни избыточности в зависимых службах. Например, экземпляры приложений привязываются к объектному хранилищу. Рассмотрите возможность настройки связанной учетной записи для хранения с хранилищем с зональной избыточностью, если приложение использует развертывание с зональной избыточностью.
Используйте несколько экземпляров: При запуске приложения на одном экземпляре возникает немедленно ситуация с единой точкой отказа. Выделите несколько экземпляров для вашего приложения, чтобы обеспечить его высокую доступность. Если один экземпляр выйдет из строя, другие экземпляры по-прежнему могут обрабатывать входящие запросы. Код приложения должен иметь возможность обрабатывать несколько экземпляров без проблем синхронизации при чтении из источников данных или записи в источники данных.
Избыточность в сетевых компонентах. Например, используйте зонально-избыточные IP-адреса и балансировщики нагрузки.
Укажите надежную стратегию масштабирования: Непредвиденная нагрузка на приложение может сделать его ненадежным. Рассмотрите правильный подход к масштабированию на основе характеристик рабочей нагрузки. Горизонтальное масштабирование или масштабирование позволяет добавлять дополнительные экземпляры для распределения нагрузки. Вертикальное масштабирование или увеличение масштаба увеличивает емкость существующего экземпляра, например ЦП или памяти. Будьте осторожны с перебором ресурсов, так как добавление ненужных экземпляров увеличивает затраты без заметного улучшения производительности.
Иногда можно увеличивать масштаб, чтобы справиться с нагрузкой. Однако если нагрузка продолжает увеличиваться, масштабируйте их до новых экземпляров. Выберите автоматический или автомасштабирование, подход к подходу вручную. Всегда сохраняйте буфер дополнительной емкости во время операций масштабирования, чтобы предотвратить снижение производительности.
Уровень плана службы приложений , который вы выбираете, влияет на масштабирование с точки зрения количества экземпляров и единиц вычислений.
Учитывайте требования к сетевому протоколу при разработке стратегии масштабирования, гарантируя, что рассматриваются шаблоны трафика IPv4 и IPv6. Служба приложений поддерживает входящий IPv6-подключение вместе с IPv4. Сети, использующие только IPv6, решают проблему исчерпания адресов IPv4. Однако клиенты с поддержкой только IPv6 требуют служб трансляции IPv4 в IPv6, если IPv6 не включен, создавая потенциальные сетевые накладные расходы. Дополнительные сведения см. в разделе "Входящие и исходящие IP-адреса" в Службе приложений Azure.
Убедитесь в правильной инициализации приложений, чтобы новые экземпляры быстро прогрелись и могут получать запросы. По возможности старайтесь использовать приложения без сохранения состояния. Надежное масштабирование состояния с новыми экземплярами может повысить сложность. Рассмотрим внешнее хранилище данных, которое можно масштабировать независимо, если необходимо сохранить состояние приложения. Хранение состояния сеанса в памяти может привести к потере состояния сеанса при возникновении проблемы с приложением или службой приложений. Она также ограничивает возможность распространения нагрузки по другим инстанциям.
Регулярно тестируйте правила автомасштабирования. Имитируйте сценарии загрузки, чтобы убедиться, что приложение масштабируется должным образом. Вы должны регистрировать события масштабирования, чтобы устранить проблемы, которые могут возникнуть и оптимизировать стратегию масштабирования с течением времени.
Служба приложений имеет ограничение на количество экземпляров в рамках плана, что может повлиять на возможность надежного масштабирования. Чтобы устранить эту проблему, одной из стратегий является развертывание идентичных штампов, где каждый штамп имеет свой собственный экземпляр плана службы приложений и конечную точку. Важно, чтобы все серверы подключались к внешнему балансировщику нагрузки для распределения трафика между ними. Используйте Шлюз приложений Azure для развертываний с одной зоной и Azure Front Door для развертываний с несколькими регионами. Этот подход идеально подходит для критически важных приложений, когда надежность имеет решающее значение. Для получения дополнительной информации см. раздел Базовый уровень критически важных задач в службе приложений.
Планирование возможности восстановления: Избыточность имеет решающее значение для непрерывности бизнес-процессов. Переключитесь на другой экземпляр, если один из экземпляров становится недоступным. Изучите возможности автоматического восстановления в службе приложений, например автоматическое восстановление экземпляров.
Реализуйте шаблоны проектирования для обработки плавной деградации при временных системных сбоях, таких как проблемы с подключением к сети, и крупномасштабных событиях, таких как региональные отключения. Рассмотрим следующие шаблоны проектирования:
Шаблон типа Bulkhead сегментирует ваше приложение на изолированные группы, чтобы предотвратить распространение сбоя на всю систему.
Шаблон выравнивания нагрузки Queue-Based ставит в очередь рабочие элементы, которые служат буфером для сглаживания пиков трафика.
Шаблон повторных попыток обрабатывает временные сбои из-за сбоя сети, удаленных подключений к базе данных или занятых служб.
шаблон разбиения цепи запрещает приложению многократно пытаться выполнить операцию, которая, скорее всего, завершится ошибкой.
Дополнительные сведения см. в шаблонах проектирования архитектуры, поддерживающих надежность.
Провести тестирование надежности: Проводите нагрузочное тестирование, чтобы оценить надежность и производительность приложения под нагрузкой. Планы тестирования должны включать сценарии, которые проверяют автоматические операции восстановления.
Используйте инъекцию ошибок, чтобы намеренно вводить сбои и проверить механизмы самовосстановления и самосохранения. Дополнительные сведения см. в библиотеке ошибок и действий Azure Chaos Studio.
Служба приложений накладывает ограничения ресурсов на размещенные приложения. План службы приложений определяет эти ограничения. Убедитесь, что тесты подтверждают, что приложение выполняется в пределах этих ограничений ресурсов. Более подробную информацию см. в разделе ограничения Службы приложений.
Используйте функцию проверки работоспособности для выявления неотвечающих рабочих процессов: Служба приложений имеет встроенные возможности, которые периодически пингуют конкретный путь веб-приложения. Платформа проверяет этот путь для определения работоспособности приложения и реагирования на запросы.
Если сайт масштабируется до нескольких экземпляров, служба приложений исключает любые неработоспособные экземпляры из обслуживающих запросов. Этот процесс улучшает общую доступность.
Путь проверки работоспособности приложения должен опрашивает основные компоненты приложения, такие как база данных, кэш или служба обмена сообщениями. Этот шаг помогает убедиться, что состояние, возвращаемое путем проверки работоспособности , является точным изображением общего состояния приложения.
Используйте функцию автоматического лечения: Иногда приложение может столкнуться с непредвиденным поведением, которое может решить простой перезапуск. Используйте функцию автоматического лечения, чтобы определить условие , которое активирует автоматическое исцеление и действие , которое автоматически исцеляется при выполнении этого условия. Дополнительные сведения см. в обзоре диагностики службы приложений.
Отчет о оценке устойчивости службы приложений: Чтобы ознакомиться с рекомендациями по оптимизации рекомендаций, ознакомьтесь с обзором диагностики службы приложений.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Служба приложений) Выберите уровень "Премиум" версии 3 плана службы приложений для рабочих нагрузок. Установите максимальное и минимальное количество работников в соответствии с планированием мощности. Для получения дополнительной информации см. обзор службы приложений. |
План службы приложений premium версии 3 предоставляет расширенные возможности масштабирования и гарантирует избыточность при возникновении сбоев. |
| (Служба приложений) активировать избыточность зоны. Рассмотрите возможность подготовки более трех экземпляров для повышения отказоустойчивости. Проверьте поддержку избыточности зон в регионе, так как не все регионы имеют эту функцию. |
Ваше приложение может противостоять сбоям в одной зоне, если вы распределите несколько экземпляров по различным зонам. Трафик автоматически перемещается на исправные экземпляры в других зонах и поддерживает надежность приложения, если одна зона недоступна. |
| (Веб-приложения) Рассмотрите возможность отключения функции маршрутизации запросов приложений (ARR). Сопоставление ARR создает липкие сеансы, которые перенаправляют пользователей на узел, обрабатывающий предыдущие запросы. | Входящие запросы равномерно распределяются по всем доступным узлам при отключении привязки ARR. Равномерно распределенные запросы предотвращают перегрузку трафика любого одного узла. Запросы можно легко перенаправлять на другие здоровые узлы, если узел недоступен. Избегайте привязки к сеансу, чтобы убедиться, что экземпляр службы приложений остается независимым от состояния. Экземпляр службы приложений без отслеживания состояния снижает сложность и обеспечивает согласованное поведение между узлами. Удалите липкие сеансы, чтобы App Service могла добавлять или удалять экземпляры для горизонтального масштабирования. |
| (Служба приложений) Не используйте функции резервного копирования и восстановления службы приложений для связанных баз данных. | Использование собственных средств резервного копирования и восстановления для связанных баз данных обеспечивает более надежное и настраиваемое решение для восстановления для хранилища состояний веб-приложения. Резервное копирование связанных баз данных с помощью службы приложений устарело. |
| (Веб-приложения) Определите правила автоматического восстановления на основе количества запросов, медленных запросов, ограничений памяти и других индикаторов, входящих в базовые показатели производительности. Рассмотрим эту конфигурацию как часть стратегии масштабирования. | Правила автоматического восстановления помогают приложению автоматически восстанавливаться после непредвиденных проблем. Настроенные правила активируют действия восстановления при нарушении пороговых значений. Автоматическое восстановление обеспечивает автоматическое упреждающее обслуживание. |
| (Веб-приложения) Включите функцию проверки работоспособности и укажите путь, который отвечает на запросы проверки работоспособности. | Медицинские осмотры могут выявлять проблемы на ранней стадии. Затем система может автоматически выполнять корректирующие действия при сбое запроса проверки работоспособности. Подсистема балансировки нагрузки перенаправляет трафик от неработоспособных экземпляров, направляя пользователей на здоровые узлы. |
| (Веб-приложения) Включите Always on, когда веб-приложение размещает веб-задание. | Веб-приложения могут истекать по времени после периода бездействия HTTP. Параметр Always on помогает обеспечить надежное выполнение как непрерывных, так и триггерных веб-заданий. |
Security
Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.
Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию в контексте хостинга на платформе App Service.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования, основываясь на контрольном списке проверки проектирования для безопасности, и выявляйте уязвимости и меры управления для улучшения состояния безопасности. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Просмотрите базовые показатели безопасности: Чтобы повысить уровень безопасности приложения, размещенного в плане службы приложений, просмотрите базовые показатели безопасности для службы приложений.
Используйте последнюю среду выполнения и библиотеки: Тщательно протестируйте сборки приложения, прежде чем выполнять обновления, чтобы быстро перехватывать проблемы и обеспечить плавное переход на новую версию. Служба приложений поддерживает политику поддержки среды выполнения языка для обновления существующих стеков и завершения поддержки стека.
Создайте сегментацию через границы изоляции, чтобы содержать нарушения: Примените сегментацию удостоверений. Например, реализуйте управление доступом на основе ролей (RBAC) для назначения определенных разрешений на основе ролей. Следуйте принципу наименьших привилегий, чтобы ограничить права доступа только тем, что необходимо. Кроме того, создайте сегментацию на уровне сети. Интеграция приложений Службы приложений с виртуальной сетью Azure для изоляции и определения групп безопасности сети (NSG) для фильтрации трафика.
Планы службы приложений предоставляют уровень среды службы приложений, обеспечивающий высокую степень изоляции. В среде службы приложений вы получаете выделенные вычислительные ресурсы и сети.
Применение контроля доступа к идентификациям: Ограничить входящий доступ к веб-приложению и исходящий доступ из веб-приложения к другим ресурсам. Эта конфигурация применяет контроль доступа к идентичностям и помогает поддерживать общую защиту рабочей нагрузки.
Используйте идентификатор Microsoft Entra для всех потребностей проверки подлинности и авторизации. Используйте встроенные роли, такие как участник веб-плана, участник веб-сайта, а также универсальный участник, читатель и владелец.
Применение элементов управления безопасностью сети: Интеграция службы приложений с виртуальной сетью для управления исходящим трафиком. Используйте частные конечные точки для контроля входящего трафика, ограничения доступа к экземпляру Службы приложений из виртуальной сети и отключения общедоступного доступа к Интернету. Дополнительные сведения см. в разделе "Маршрутизация сети".
Разверните брандмауэр веб-приложения (WAF), чтобы защититься от распространенных уязвимостей. Шлюз приложений и Azure Front Door интегрируют возможности WAF.
Настройте правила обратного прокси-сервера и параметры сети соответствующим образом, чтобы обеспечить требуемый уровень безопасности и контроля. Например, добавьте правила NSG в подсеть частной конечной точки, чтобы принимать трафик только из обратного прокси-сервера.
Исходящий трафик из приложения в другие службы PaaS должен выполняться через частные конечные точки. Рассмотрите возможность размещения компонента брандмауэра для ограничения исходящего трафика в общедоступный Интернет. Оба подхода помогают предотвратить кражу данных.
Дополнительные сведения см. в разделе "Сетевые функции службы приложений".
Шифрование данных: Помогите защитить передаваемые данные с помощью сквозного протокола TLS. Используйте ключи, управляемые клиентом , для полного шифрования неактивных данных.
Не используйте устаревшие протоколы, такие как TLS 1.0 и 1.1. Убедитесь, что все веб-приложения используют только HTTPS и применяют TLS 1.2 или более поздней версии. Минимальная версия TLS по умолчанию — 1.2. Дополнительные сведения см. в обзоре TLS службы приложений .
Все экземпляры службы приложений имеют доменное имя по умолчанию. Используйте личный домен и защитите этот домен с помощью сертификатов.
Сквозное шифрование TLS: Сквозное шифрование TLS доступно в планах службы приложений уровня "Премиум". Эта функция шифрует трафик во всей транзакции, что сводит к минимуму риск перехвата трафика.
Уменьшите область атаки: Удалите конфигурации по умолчанию, которые вам не нужны. Например, отключите удаленную отладку, локальную проверку подлинности для сайтов диспетчера управления версиями (SCM) и обычную проверку подлинности. Отключите незащищенные протоколы, такие как ПРОТОКОЛ HTTP и протокол передачи файлов (FTP). Принудительное применение конфигураций с помощью политик Azure. Дополнительные сведения см. в политиках Azure.
Реализуйте ограничивающие политики общего доступа к ресурсам (CORS): Используйте ограничивающие политики CORS в веб-приложении, чтобы принимать только запросы из разрешенных доменов, заголовков и других критериев. Применение политик CORS с помощью встроенных определений политик Azure.
Используйте управляемые удостоверения: Включите управляемые удостоверения для экземпляра службы приложений для более безопасного доступа к другим службам Azure без необходимости управлять учетными данными.
Защита секретов приложений: Необходимо обрабатывать конфиденциальную информацию, например ключи API или маркеры проверки подлинности. Вместо жесткого написания этих секретов непосредственно в коде приложения или файлах конфигурации можно использовать ссылки Azure Key Vault в параметрах приложения. При запуске приложения служба приложений автоматически извлекает значения секретов из Key Vault с помощью управляемого удостоверения приложения.
Включите журналы ресурсов для приложения: Включите журналы ресурсов для приложения для создания комплексных следов действий, которые предоставляют ценные данные во время расследований, которые следуют инцидентам безопасности. Для получения дополнительной информации см. журналы ресурсов Azure Monitor.
При оценке угроз рассмотрите возможность ведения журнала в рамках процесса моделирования угроз.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Веб-приложения) Назначение управляемых удостоверений веб-приложению. Чтобы поддерживать границы изоляции, не передавайте и не повторно используйте учетные записи в приложениях. Убедитесь, что вы безопасно подключаетесь к реестру контейнеров, если вы используете контейнеры для развертывания. |
Приложение извлекает секреты из Key Vault для проверки подлинности исходящего взаимодействия из приложения. Azure управляет удостоверением и не требует настройки или скрытия секретов. У вас есть отдельные идентификации для гранулярного управления. Различные идентичности упрощают отзыв, если одна из них скомпрометирована. |
| (Веб-приложения) Настройте пользовательские домены для приложений. Отключите HTTP и примите только HTTP-запросы. |
Пользовательские домены обеспечивают безопасную связь через HTTPS с помощью протокола TLS, что помогает обеспечить защиту конфиденциальных данных и создает доверие пользователей. |
| (Веб-приложения) Оцените, является ли встроенная проверка подлинности службы приложений правильным механизмом проверки подлинности пользователей, обращаюющихся к приложению. Встроенная проверка подлинности службы приложений интегрируется с идентификатором Microsoft Entra. Эта функция обрабатывает валидацию токенов и управление идентификацией пользователей для нескольких поставщиков аутентификации и поддерживает OpenID Connect. С помощью этой функции у вас нет авторизации на детальном уровне, и у вас нет механизма проверки подлинности. | При использовании этой функции не требуется использовать библиотеки проверки подлинности в коде приложения, что снижает сложность. Пользователь уже проходит проверку подлинности, когда запрос достигает приложения. |
| (Веб-приложения) Настройте приложение для интеграции виртуальной сети. Используйте частные конечные точки для приложений App Service. Блокировать весь общедоступный трафик. Направьте загрузку образа контейнера через интеграцию виртуальной сети. Весь исходящий трафик из приложения передается через виртуальную сеть. |
Получите преимущества безопасности для использования виртуальной сети Azure. Например, приложение может безопасно получить доступ к ресурсам в сети. Добавьте частную конечную точку для защиты приложения. Частные конечные точки ограничивают прямой доступ к общедоступной сети и разрешают контролируемый доступ через обратный прокси-сервер. |
| (Веб-приложения) Для реализации усиления безопасности: - Отключить базовую проверку подлинности, которая использует имя пользователя и пароль в пользу проверки подлинности на основе идентификатора Microsoft Entra. — отключите удаленную отладку, чтобы не открывались входящие порты. — включение политик CORS для ужесточения входящих запросов. — отключите протоколы, такие как FTP. |
Мы не рекомендуем обычную проверку подлинности в качестве безопасного метода развертывания. Идентификатор Microsoft Entra использует проверку подлинности на основе маркеров OAuth 2.0, которая предоставляет множество преимуществ и улучшений, которые устраняют ограничения, связанные с базовой проверкой подлинности. Политики ограничивают доступ к ресурсам приложения, разрешают только запросы из определенных доменов и безопасные запросы между регионами. |
| (Веб-приложения) Всегда используйте ссылки Key Vault в качестве параметров приложения. |
Секреты хранятся отдельно от конфигурации приложения. Параметры приложения шифруются при хранении. Служба приложений также управляет сменами секретов. |
| (Служба приложений) включитьMicrosoft Defender для облачной службы приложений. | Получите защиту в режиме реального времени для ресурсов, работающих в плане службы приложений. Защита от угроз и повышение общего уровня безопасности. |
| (Служба приложений) включить ведение журнала диагностики и добавить инструментирование в приложение. Журналы отправляются в учетные записи хранения Azure, Центры событий Azure и Log Analytics. Дополнительные сведения о типах журналов аудита см. в разделе Поддерживаемые типы журналов. | Ведение журнала записывает шаблоны доступа. Он записывает соответствующие события, которые предоставляют ценные сведения о взаимодействии пользователей с приложением или платформой. Эта информация имеет решающее значение для обеспечения подотчетности, соответствия требованиям и безопасности. |
Оптимизация затрат
Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.
Принципы проектирования оптимизации затрат обеспечивают высокоуровневую стратегию проектирования для достижения этих целей и обеспечения компромиссов в техническом проектировании, связанном с веб-приложениями и ее средой.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка оценки для оптимизации затрат при инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.
Оценка начальной стоимости: В рамках упражнения по моделированию затрат используйте калькулятор цен Azure для оценки приблизительных затрат, связанных с различными уровнями на основе количества экземпляров, которые планируется запустить. Каждый уровень службы приложений предоставляет различные параметры вычислений.
Непрерывно отслеживайте модель затрат для отслеживания расходов.
Оцените дисконтированные варианты: Более высокие тарифные планы включают выделенные вычислительные экземпляры. Вы можете применить скидку на резервирование, если рабочая нагрузка имеет прогнозируемый и согласованный шаблон использования. Убедитесь, что вы анализируете данные об использовании, чтобы определить тип резервирования, соответствующий рабочей нагрузке. Дополнительные сведения см. в разделе Экономия затрат на зарезервированные экземпляры службы приложений.
Понимание счетчиков использования: Azure взимает почасовую ставку, рассчитанную до секунды, на основе ценовой категории вашего плана App Service. Взимается плата за каждый экземпляр горизонтального масштабирования в вашем плане, в зависимости от времени, на которое выделяется экземпляр виртуальной машины. Обратите внимание на неиспользуемые вычислительные ресурсы, которые могут увеличить затраты в результате перемещений из-за неоптимального выбора SKU или плохо настроенной конфигурации масштабирования.
Дополнительные функции службы приложений, такие как регистрация личного домена и пользовательские сертификаты, могут добавить затраты. Другие ресурсы, такие как виртуальные сети, которые изолируют решение или хранилища ключей, которые защищают секреты рабочей нагрузки, также могут интегрироваться с ресурсами службы приложений и добавлять затраты. Дополнительные сведения см. в статье "Общие сведения о полной модели выставления счетов для службы приложений".
Рассмотрим компромисс между плотностью и изоляцией: Вы можете использовать планы службы приложений для размещения нескольких приложений на одном вычислительном ресурсе, что экономит затраты на общие среды. Дополнительные сведения см. в разделе "Компромиссы".
Оцените последствия вашей стратегии масштабирования на затраты: При реализации автомасштабирования необходимо правильно разработать, протестировать и настроить процесс масштабирования как в сторону увеличения, так и в сторону уменьшения. Установите точные и минимальные ограничения для автомасштабирования.
Упреждающая инициализация приложения для надежного масштабирования. Например, не подождите, пока ЦП достигнет 95% использования. Вместо этого запустите масштабирование при примерно 65%, чтобы дать достаточно времени для выделения и инициализации новых экземпляров в процессе масштабирования. Однако эта стратегия может привести к неиспользуемой емкости.
Рекомендуется объединить и сбалансировать механизмы вертикального и горизонтального масштабирования. Например, приложение может сначала масштабироваться вертикально, а затем по мере необходимости масштабироваться горизонтально. Изучите высокоуровневые уровни, обеспечивающие большую емкость и эффективное использование ресурсов. В зависимости от шаблонов использования более высокие категории "Премиум" часто являются более экономичными, так как они более способны.
Оптимизируйте затраты на среду: Рассмотрите возможность использования базового уровня или бесплатного уровня для запуска предварительных сред. Эти уровни отличаются низкой производительностью и низкими затратами. Если вы используете базовый или бесплатный уровень, используйте управление для принудительного соблюдения уровня, ограничения количества экземпляров и ЦП, ограничения масштабирования и ограничения хранения журналов.
Реализуйте шаблоны проектирования: Эта стратегия уменьшает объем запросов, создаваемых рабочей нагрузкой. Рассмотрите возможность использования таких паттернов, как «Backends for Frontends» и «агрегации шлюза», чтобы свести к минимуму количество запросов и сократить затраты.
Регулярно проверяйте затраты, связанные с данными: Расширенные периоды хранения данных или дорогие уровни хранилища могут привести к высокой стоимости хранения. Дополнительные расходы могут накапливаться из-за использования пропускной способности и длительного хранения данных ведения журнала.
Рекомендуется реализовать кэширование для минимизации затрат на передачу данных. Начните с кэширования локальной памяти, а затем изучите параметры распределенного кэширования, чтобы уменьшить количество запросов к серверной базе данных. Учитывайте затраты на трафик пропускной способности, связанные с обменом данными между регионами, если база данных находится в другом регионе.
Оптимизация затрат на развертывание: Воспользуйтесь преимуществами слотов развертывания для оптимизации затрат. Слот выполняется в той же вычислительной среде, что и рабочий экземпляр. Используйте их стратегически для таких сценариев, как сине-зеленые развертывания для переключения между слотами. Этот подход сокращает время простоя и обеспечивает плавные переходы.
Используйте слоты развертывания с осторожностью. Вы можете вызвать проблемы, такие как исключения или утечки памяти, которые могут повлиять как на существующие, так и на новые экземпляры. Убедитесь, что вы тщательно тестируете изменения. Дополнительные сведения об операционных рекомендациях см. в разделе "Операционное превосходство".
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Служба приложений) Выберите бесплатные уровни или базовые уровни для более низких сред. Мы рекомендуем использовать эти уровни для экспериментального использования. Удалите уровни, когда они больше не нужны. | Бесплатные уровни и базовые уровни являются бюджетными по сравнению с более высокими уровнями. Они предоставляют экономичное решение для непроизводственных сред, которые не нуждаются в полных функциях и производительности планов premium. |
| (Служба приложений) Воспользуйтесь преимуществами скидок и изучите предпочтительную цену для: — более низкие среды с планами разработки и тестирования. - Резервирования Azure и планы экономии Azure для выделенных вычислений, подготовленных на уровне "Премиум" версии 3 и в среде службы приложений. Используйте зарезервированные экземпляры для стабильных рабочих нагрузок, имеющих прогнозируемые шаблоны использования. |
Планы разработки и тестирования предоставляют сниженные ставки для служб Azure, что делает их экономически эффективными для непроизводственных сред. Используйте зарезервированные экземпляры для предоплаты вычислительных ресурсов и получения значительных скидок. |
| (Веб-приложения) Отслеживайте затраты , связанные с ресурсами службы приложений. Запустите средство анализа затрат на портале Azure. создание бюджетов и оповещений для уведомления заинтересованных лиц. |
Вы можете определить пики затрат, неэффективные или непредвиденные расходы на ранних этапах. Этот упреждающий подход помогает обеспечить бюджетные средства контроля, чтобы предотвратить перерасход. |
| (Служба приложений) Уменьшайте масштаб, когда спрос снижается. Чтобы масштабироваться, определите правила масштабирования, чтобы уменьшить количество экземпляров вAzure Monitor. | Предотвращение потерь и сокращение ненужных расходов. |
Операционное превосходство
Операционное совершенство в основном фокусируется на процессах разработки, наблюдаемости и управления выпусками.
Принципы проектирования операционной эффективности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в соответствии с операционными требованиями рабочей нагрузки.
Контрольный список разработки рабочей нагрузки
Начните разработку стратегии проектирования на основе контрольного списка для проверки разработки в рамках для определения процессов обозримости, тестирования и развертывания, относящихся к веб-приложениям.
Управление выпусками: Используйте слоты развертывания для эффективного управления выпусками. Вы можете развернуть приложение в слоте, выполнить тестирование и проверить его функциональные возможности. После проверки вы можете легко переместить приложение в рабочую среду. Этот процесс не несет дополнительных затрат, так как слот выполняется в той же среде виртуальной машины, что и рабочий экземпляр.
Используйте функцию обмена с предварительным просмотром (многофазный обмен). Переключение с предварительной версией позволяет протестировать приложение в промежуточных слотах с помощью рабочих параметров, а также прогреть приложение. После выполнения тестов и прогревания всех необходимых путей можно завершить переключение. Затем приложение получит рабочий трафик без перезапуска.
Запуск автоматических тестов: Прежде чем продвигать выпуск веб-приложения, тщательно протестируйте его производительность, функциональные возможности и интеграцию с другими компонентами. Используйте нагрузочное тестирование Azure. Он интегрируется с Apache JMeter, популярным средством для тестирования производительности. Изучите автоматизированные средства для других типов тестирования, таких как Фантом для функционального тестирования.
Автоматизация развертываний: Используйте конвейеры непрерывной интеграции и непрерывного развертывания с помощью Azure DevOps или GitHub Actions для автоматизации развертываний и уменьшения усилий вручную. Дополнительные сведения см. в статье "Непрерывное развертывание в службе приложений".
Развертывание неизменяемых единиц: Реализуйте шаблон меток развертывания , чтобы разделить службу приложений на неизменяемую метку. Служба приложений поддерживает использование контейнеров, которые по сути неизменяемы. Рассмотрим пользовательские контейнеры для веб-приложения службы приложений.
Каждый штамп представляет собой автономную единицу, которую можно быстро масштабировать вверх или вниз. Единицы, основанные на этом штампе, являются временными и не имеющими состояния. Проектирование без отслеживания состояния упрощает операции и обслуживание. Этот подход идеально подходит для критически важных приложений. Для получения дополнительной информации см. раздел Базовый уровень критически важных задач в службе приложений.
Используйте технологию "инфраструктура как код" (IaC), такую как Bicep, чтобы создавать единицы с повторяемостью и согласованностью.
Обеспечение безопасности производственных сред: Создание отдельных планов службы приложений для запуска производственных и предпроизводственных сред. Не вносите изменения непосредственно в рабочую среду, чтобы обеспечить стабильность и надежность. Отдельные инстанции позволяют гибко разрабатывать и тестировать, прежде чем вносить изменения в продакшн.
Используйте низкие среды для изучения новых функций и конфигураций изолированным образом. Сохраняйте временные среды разработки и тестирования.
Управление сертификатами: Для пользовательских доменов необходимо управлять сертификатами TLS.
Имеются процессы для приобретения, продления и проверки сертификатов. Если это возможно, выгрузите эти процессы в службу приложений. Если вы используете собственный сертификат, необходимо управлять его продлением. Выберите подход, который лучше всего соответствует вашим требованиям безопасности.
| Recommendation | Benefit |
|---|---|
| (Веб-приложения) Отслеживайте работоспособность экземпляров и активируйте пробы работоспособности экземпляров. Настройте конкретный путь для обработки запросов проверки работоспособности. |
Вы можете быстро обнаруживать проблемы и выполнять необходимые действия для поддержания доступности и производительности. |
| (Веб-приложения) Включите журналы диагностики для приложения и экземпляра. Частое ведение журнала может замедлить производительность системы, добавить затраты на хранение и привести к риску, если у вас нет небезопасного доступа к журналам. Следуйте приведенным ниже рекомендациям. — Регистрируйте правильный объем информации. — задайте политики хранения. — ведите журнал авторизованного доступа и несанкционированных попыток доступа. — обрабатывает журналы как данные и применяет элементы управления защитой данных. |
Журналы диагностики предоставляют ценные сведения о поведении приложения. Отслеживайте шаблоны трафика и выявляйте аномалии. |
| (Веб-приложения) Воспользуйтесь сертификатами, управляемыми службой приложений для разгрузки управления сертификацией в Azure. | Служба приложений автоматически обрабатывает такие процессы, как закупки сертификатов, проверка сертификатов, продление сертификата и импорт сертификатов из Key Vault. Кроме того, отправьте сертификат в Key Vault и авторизуйте поставщик ресурсов службы приложений для доступа к нему. |
| (Служба приложений) проверить изменения приложения в промежуточном слоте перед переключением на рабочий слот. | Избегайте простоя и ошибок. Сохранение ранее развернутой рабочей версии в слоте позволяет вернуться к последнему известному хорошему состоянию при обнаружении проблемы после развертывания. Позволяет убедиться, что все экземпляры разогреваются перед переключением в рабочую среду, чтобы избежать временных проблем с развертыванием при холодном запуске. |
Эффективность производительности
Эффективность производительности заключается в поддержании пользовательского опыта даже при увеличении нагрузки путем управления мощностями. Стратегия включает масштабирование ресурсов, определение и оптимизацию потенциальных узких мест, а также оптимизацию для пиковой производительности.
Принципы проектирования производственной эффективности обеспечивают общую стратегию проектирования для достижения этих целевых показателей пропускной способности с учетом предполагаемой нагрузки.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка проектирования для эффективности производительности. Определите базовые показатели, основанные на ключевых показателях производительности для веб-приложений.
Определите и отслеживайте показатели производительности: Задайте целевые показатели для приложения, такие как объем входящих запросов, время, необходимое приложению для реагирования на запросы, ожидающие запросы и ошибки в ответах HTTP. Рассмотрим ключевые показатели в рамках базовых показателей производительности рабочей нагрузки.
Сбор метрик службы приложений, которые составляют основу индикаторов производительности. Сбор журналов для получения аналитических сведений об использовании ресурсов и действиях. Используйте средства мониторинга производительности приложений, такие как Application Insights, для сбора и анализа данных о производительности из приложения. Дополнительные сведения см. в справочнике по данным мониторинга службы приложений.
Включите инструментирование на уровне кода, трассировку транзакций и профилирование производительности.
Оценка емкости: Имитируйте различные сценарии пользователей, чтобы определить оптимальную емкость, необходимую для обработки ожидаемого трафика. Используйте нагрузочное тестирование, чтобы понять, как работает приложение под разными уровнями нагрузки.
Выберите нужный уровень: Используйте выделенные вычислительные ресурсы для рабочих нагрузок. Уровни Premium v3 предоставляют более крупные SKU с увеличенной емкостью памяти и ЦП, большим количеством экземпляров и дополнительными функциями, такими как резервирование на уровне зоны. Дополнительные сведения см. в ценовой категории "Премиум" версии 3.
Оптимизируйте стратегию масштабирования: По возможности используйте автоматическое масштабирование вместо ручной настройки количества экземпляров в качестве изменений нагрузки приложения. При автомасштабировании служба приложений настраивает емкость сервера на основе предопределенных правил или триггеров. Убедитесь, что вы выполняете достаточное тестирование производительности и задаете правильные правила для правильных триггеров.
Если вы отдаёте приоритет простоте во время начальной настройки, используйте опцию автомасштабирования, которая требует только установки пределов, без необходимости определения правил.
Иметь в наличии достаточные ресурсы, чтобы обеспечить оптимальную производительность. Выделите ресурсы соответствующим образом для поддержания целевых показателей производительности, таких как время отклика или пропускная способность. При необходимости рассмотрите возможность перемещений ресурсов.
При определении правил автомасштабирования следует учитывать время, необходимое для инициализации приложения. Учитывайте эти издержки при принятии всех решений по масштабированию.
Используйте кэширование: Получение сведений из ресурса, который часто не изменяется и является дорогостоящим для доступа к производительности. Сложные запросы, включая соединения и несколько подстановок, влияют на время выполнения. Выполните кэширование, чтобы свести к минимуму время обработки и задержку. Результаты запроса кэшируются, чтобы избежать повторяющихся обходов в базу данных или серверную часть и сократить время обработки для последующих запросов.
Дополнительные сведения об использовании локального и распределенного кэша в рабочей нагрузке см. в разделе "Кэширование".
Просмотрите антипаттерны производительности: Чтобы убедиться, что веб-приложение выполняет и масштабируется в соответствии с вашими бизнес-требованиями, избегайте типичных антипаттернов. В следующей таблице описаны некоторые антипаттерны, которые служба приложений исправляет.
Antipattern Description занятый пользовательский интерфейс Ресурсоемкие задачи могут увеличить время отклика для запросов пользователей и вызвать высокую задержку.
Перенесите процессы, потребляющие значительные ресурсы, в отдельный бэкэнд. Используйте брокер сообщений для постановки в очередь ресурсоемких задач, которые серверная часть подхватывает для асинхронной обработки.Кэширование без кэширования Обслуживайте запросы из промежуточного кэша перед серверной базой данных, чтобы уменьшить задержку. Шумный сосед Многоарендные системы совместно используют ресурсы между арендаторами. Активность одного клиента может негативно повлиять на использование системы другого клиента. Среда службы приложений предоставляет полностью изолированную и выделенную среду для запуска приложений.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| (Служба приложений) Включить параметр AlwaysOn, если приложения совместно используют один план службы приложений. Приложения службы App Service автоматически выгружаются при простое, чтобы экономить ресурсы. Следующий запрос инициирует холодный старт, который может привести к истечению времени ожидания запроса. | Приложение никогда не выгружается с включенной функцией Always On. |
| (Веб-приложения) рекомендуется использовать протокол HTTP/2 для приложений для повышения эффективности протокола. | Выберите HTTP/2 по протоколу HTTP/1.1, так как HTTP/2 полностью мультиплексирует подключения, повторно использует подключения для снижения затрат и сжимает заголовки, чтобы свести к минимуму передачу данных. |
Tradeoffs
Если вы используете подходы в контрольных списках столпов, вам может потребоваться сделать компромиссы по проектированию. Ниже приведены некоторые примеры преимуществ и недостатков.
плотности и изоляции
Более высокая плотность: Колокатируйте несколько приложений в одном плане службы приложений, чтобы свести к минимуму ресурсы. Все приложения совместно используют ресурсы, такие как ЦП и память, что позволяет сэкономить деньги и снизить операционную сложность. Этот подход также оптимизирует использование ресурсов. Приложения могут использовать неактивные ресурсы из другого приложения, если с течением времени шаблоны загрузки изменяются.
Кроме того, учитывайте недостатки, такие как состязание по ресурсам. Например, пики использования или нестабильности приложения могут повлиять на производительность других приложений. Инциденты в одном приложении также могут пронизать другие приложения в общей среде, что может повлиять на безопасность. Для критически важных приложений, требующих высокой доступности и производительности, изолированные среды, такие как среда службы приложений версии 3 , предоставляют выделенные ресурсы, но при более высокой стоимости. Рекомендуется использовать общие среды для некритических рабочих нагрузок и изолированных сред для критически важных приложений.
Более высокая изоляция: Изоляция помогает предотвратить вмешательство. Эта стратегия применяется к безопасности, производительности и даже сегрегации сред разработки, тестирования и рабочей среды.
Среда службы приложений обеспечивает более эффективное управление безопасностью и защитой данных, так как каждое приложение может иметь собственные параметры безопасности. Ваша среда может содержать нарушения, так как изоляция ограничивает радиус взрыва. Минимизация конкуренции за ресурсы с точки зрения производительности. Изоляция позволяет независимо масштабироваться на основе конкретного спроса и планирования отдельных ресурсов.
В качестве недостатка этот подход является более дорогим и требует операционной строгости.
стратегия надежного масштабирования
Хорошо определенная стратегия масштабирования помогает гарантировать, что приложение может обрабатывать различные нагрузки без ущерба для производительности. Однако есть компромиссы по затратам. Выполнение операций масштабирования занимает время. При выделении новых ресурсов приложение должно быть правильно инициализировано, прежде чем он сможет эффективно обрабатывать запросы. Вы можете предоставлять больше ресурсов (или предварительно активировать экземпляры) для обеспечения большого уровня надежности. Без этой дополнительной емкости во время этапа инициализации может возникнуть задержка в обслуживании запросов, что влияет на взаимодействие с пользователем. Операции автомасштабирования могут запускаться достаточно рано, чтобы обеспечить правильную инициализацию ресурсов к моменту, когда клиенты начинают их использовать.
В качестве недостатка избыточные ресурсы стоят больше. Плата взимается в секунду для каждого экземпляра, включая предварительно подготовленные экземпляры. Более высокие уровни включают предварительно подготовленные экземпляры. Определите, стоят ли возможности с более дорогими уровнями стоит инвестиций.
Создание избыточности
Избыточность обеспечивает устойчивость, но также приводит к затратам. Целевые показатели уровня обслуживания для рабочей нагрузки определяют допустимые пороги производительности. Это становится расточительным, если избыточность превышает требования SLO. Оцените, улучшает ли избыточная избыточность целевые показатели обслуживания (SLOs) или добавляет ненужную сложность.
Кроме того, учитывайте недостатки. Например, многорегиональная избыточность гарантирует высокую доступность, но повышает сложность и стоимость из-за синхронизации данных, механизмов отработки отказа и межрегиональной связи. Определите, может ли зональная избыточность соответствовать вашим уровням обслуживания (SLO).
Политики Azure
Azure предоставляет широкий набор встроенных политик, связанных со службой приложений и его зависимостями. Некоторые из предыдущих рекомендаций можно проверять с помощью политики Azure. Например, можно проверить, можно ли:
Надлежащие механизмы управления сетью установлены. Например, можно включить сегментацию сети, разместив службу приложений в виртуальной сети Azure с помощью внедрения виртуальной сети, чтобы обеспечить более широкий контроль над конфигурацией сети. Приложение не имеет общедоступных конечных точек и подключается к службам Azure через частные конечные точки.
Элементы управления удостоверениями функционируют. Например, приложение использует управляемые удостоверения для проверки подлинности в других ресурсах. Встроенная проверка подлинности службы приложений (или простая проверка подлинности) проверяет входящие запросы.
Такие функции, как удаленная отладка и обычная проверка подлинности, отключены, чтобы уменьшить область атаки.
Для комплексного управления ознакомьтесь со встроенными определениями политики Azure для службы приложений и других политик, которые могут повлиять на безопасность вычислительного слоя.
Рекомендации помощника по Azure
Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure.
Дополнительные сведения см. в разделе Помощника по Azure.
Пример архитектуры
Базовая архитектура, демонстрирующая основные рекомендации: базовая архитектура службы приложений.
Дальнейшие шаги
Рассмотрим следующие статьи как ресурсы, демонстрирующие рекомендации, выделенные в этой статье.
Используйте следующие эталонные архитектуры в качестве примеров применения этих рекомендаций к рабочей нагрузке.
- Если вы еще не развернули веб-приложение, см. статью "Базовый веб-приложение".
- Исходная архитектура для развертывания в рабочей среде указана в базовая архитектура высокодоступного зонально-резервируемого веб-приложения.
Используйте следующую документацию по продукту для создания опыта реализации: