Поделиться через


Перспектива Azure Well-Architected Framework в Функциях Azure

Функции Azure — это бессерверная служба вычислений, которую можно использовать для запуска управляемого событиями кода без необходимости напрямую управлять инфраструктурой. Функции Azure — это функция как услуга, которая абстрагирует базовую инфраструктуру. Эта абстракция позволяет сосредоточиться на коде. Функции Azure автоматически масштабируются по требованию и взимается плата только за ресурсы, используемые во время операции.

В этой статье предполагается, что в качестве архитектора вы рассмотрели дерево решений вычислений и выбрали Функции Azure в качестве вычислительного решения для вашей рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.

Важный

Как использовать это руководство

Каждый раздел содержит контрольный список проектирования, который включает архитектурные аспекты, вызывающие обеспокоенность, а также стратегии проектирования, адаптированные к конкретным технологиям.

Также включены рекомендации по возможностям технологий, которые помогут материализовать эти стратегии. Рекомендации не представляют исчерпывающий список всех конфигураций, доступных для функций Azure. Вместо этого они перечисляют ключевые рекомендации, сопоставленные с перспективами проектирования. Используйте рекомендации для создания подтверждения концепции или оптимизации существующих сред.

Базовая архитектура, демонстрирующая основные рекомендации: архитектура веб-приложений.

область технологий

В этом обзоре рассматриваются взаимосвязанные решения для следующего ресурса Azure:

  • Функциональные приложения

Заметка

Это руководство по службе основывается на руководстве по службе Службы приложений Azure (веб-приложения). Функции Azure — это бессерверная служба вычислений. Функции развертываются в планах службы приложений, которые предоставляют базовую инфраструктуру вычислений для рабочей нагрузки. Вы можете выбрать один из нескольких планов размещения.

План потребления полностью управляется и не поддерживает доступ к связанной инстанции службы приложений. Планы размещения "Выделенный" и "Премиум" позволяют настраивать экземпляр службы приложений и управлять им. Обратитесь к руководству по службе App Service для рекомендаций и соображений при выборе плана хостинга "Выделенный" или "Премиум".

Надёжность

Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.

Принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.

Контрольный список для проектирования

Начните стратегию проектирования на основе контрольного списка для проверки надежности. Определите, насколько это соответствует вашим бизнес-требованиям, учитывая конкретные функции и конфигурации Azure Functions. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • Понять триггеры: убедитесь, что вы полностью понимаете, как активируются функции Azure. Триггеры включают HTTP-запросы, таймеры, очереди и многое другое. Выберите триггеры, соответствующие требованиям надежности приложения.

    Например, если функция обрабатывает сообщения из очереди, убедитесь, что сама очередь устойчива и что сообщения можно повторно обработать, если происходит сбой.

  • Осуществите повторные попытки и устойчивые шаблоны: Используйте встроенные политики повторных попыток для временных сбоев. Для более сложных рабочих процессов рекомендуется использовать расширение Durable Functions в Azure Functions. Она обеспечивает управление состоянием и координацию между несколькими функциями.

    Устойчивые функции особенно полезны для сценариев, требующих надежности в длительных рабочих процессах. Он поддерживает автоматические повторения и надёжное управление задачами.

  • Обеспечить правильную обработку исключений: реализовать надежную обработку исключений, чтобы обеспечить правильность работы функций. Журналировать ошибки и реализовать механизмы оповещения для критических сбоев.

  • План масштабируемости: Функции Azure автоматически масштабируются по требованию. Убедитесь, что приложение предназначено для обработки пиков, проверяя производительность при загрузке.

    Рассмотрите возможность использования Application Insights для мониторинга производительности и отслеживания масштабирования функций в реальном времени.

  • Разработка для идемпотентности: убедитесь, что ваши функции можно безопасно повторно выполнять, не вызывая непреднамеренных побочных эффектов. Идемпотентность имеет решающее значение для функций, взаимодействующих с внешними системами или изменяющих данные.

  • Используйте Durable Functions для длительных операций: Для операций, требующих оркестрации или длительных процессов, используйте Durable Functions для поддержания состояния и обеспечения надежности на каждом этапе.

  • Отслеживать работоспособность решения: Интегрировать решение Функций Azure в общую систему мониторинга работоспособности и оповещения нагрузки.

Рекомендации

Рекомендация Выгода
Сконфигурируйте автоматические перезапуски для временных ошибок. Узнайте больше об обработке ошибок и повторных попытках функций Azure . Повышает надежность путем автоматического повтора неудачных запусков, что снижает вероятность потери или прерывания данных.
Используйте Durable Functions для оркестрации сложных рабочих процессов и длительных задач. Узнайте больше о Durable Functions. Обеспечивает надежную работу длительных рабочих процессов с встроенным управлением состоянием и автоматическими повторными попытками.
Реализация мониторинга и централизованного ведения журнала с помощью Application Insights. НастройкаApplication Insights. Улучшает мониторинг и устранение неполадок, предоставляя подробные сведения о операциях функций и зависимостях.
Выполняется автоматическое масштабирование на основе плана размещения для функций, типа триггера и спроса. Дополнительные сведения о масштабировании. Помогает гарантировать, что приложение может обрабатывать увеличение трафика без ручного вмешательства, что повышает надежность и производительность.

Безопасность

Цель компонента "Безопасность" — обеспечить гарантии конфиденциальности, целостности и доступности для рабочей нагрузки.

Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию функций Azure.

Контрольный список для проектирования

Начните стратегию проектирования на основе контрольного списка для проверки проектирования безопасности и выявления уязвимостей и элементами управления, чтобы улучшить уровень безопасности. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • Использовать управляемые удостоверения: Включить управляемые удостоверения для функциональных приложений для безопасного доступа к другим службам Azure без необходимости управления учетными данными.

  • Защитить приложение-функцию с помощью идентификатора Microsoft Entra: Ограничить доступ к функциям, настроив Функции Azure, чтобы требовать проверки подлинности идентификатора Microsoft Entra ID.

  • Применить элементы управления безопасностью сети: Понять доступные параметры сети функций Azure для модели размещения, чтобы защитить конфигурацию сети Функций Azure. Защитите сеть в соответствии с вашими требованиями.

Рекомендации

Рекомендация Выгода
Включить управляемые идентификации для безопасного доступа к ресурсам Azure. Включение управляемых удостоверений Упрощает управление учетными данными, устраняя необходимость хранения и смены секретов. Этот подход повышает безопасность.
Используйте Azure Key Vault для управления секретами и регулярной смены. интеграция Key Vault с функциями Azure. Помогает защитить конфиденциальную информацию, например ключи API и строки подключения, безопасно сохраняя ее и автоматизируя смену секретов, если невозможно использовать управляемое удостоверение.
Интеграция с виртуальной сетью и использование частных конечных точек. Защищает функциональные приложения путем ограничения доступа к вашей внутренней сети и предотвращения их доступа в общедоступный интернет.

интеграция виртуальной сети и частные конечные точки недоступны в плане размещения Consumption.

Оптимизация затрат

Оптимизация затрат фокусируется на выявлении тенденций расходов, приоритетном вложении инвестиций в критически важные области и оптимизации затрат в других сферах путем соблюдения бюджета организации при выполнении бизнес-требований.

Принципы проектирования оптимизации затрат обеспечивают высокоуровневую стратегию проектирования для достижения этих целей и обеспечения компромиссов в техническом проектировании, связанном с функциями Azure и ее средой.

Контрольный список для проектирования

Начните стратегию проектирования на основе контрольного списка оценки для оптимизации затрат при инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.

  • Выберите правильный план ценообразования: Функции Azure имеют несколько тарифных планов, включая план потребления, план "Премиум" и "Выделенная служба приложений". Выберите план ценообразования , который соответствует рекомендациям по рабочей нагрузке и затратам.

    План потребления идеально подходит для непредсказуемых рабочих нагрузок, которые имеют редкие операции, так как вы оплачиваете только время операции и ресурсы, потребляемые. Когда приложение неактивно, плата не взимается.

  • Оптимизировать время операции: сократить время операции путем оптимизации кода функции. Свести к минимуму использование внешних зависимостей и оптимизировать логику кода, чтобы уменьшить продолжительность каждой операции.

  • Мониторинг и анализ затрат: регулярно отслеживать использование и затраты приложений-функций с помощью Microsoft Cost Management и настройки оповещений для обнаружения аномалий затрат.

Рекомендации

Рекомендация Выгода
Используйте план потребления для рабочих нагрузок с непредсказуемым трафиком. Общие сведения о плане потребления. Снижает затраты за счет оплаты только за ресурсы, используемые при выполнении задач, что помогает избежать затрат, связанных с бездействующими ресурсами.
Резервируйте емкость для планов Elastic Premium или выделенных планов службы приложений, если рабочая нагрузка предсказуема. Снижает затраты за счет скидок на прогнозируемые рабочие нагрузки с устойчивыми закономерностями использования.
Регулярно отслеживать расходы и настраивать оповещения для аномалий. Контролируйте расходы с помощью уведомлений. Помогает определить пики затрат раньше, что позволяет упреждающее управление и оптимизацию.

Операционное превосходство

Операционное совершенство главным образом сконцентрировано на процедурах практик разработки , наблюдаемости и управления выпусками.

Принципы проектирования операционной эффективности предоставляют высокоуровневую стратегию проектирования для достижения этих целей в отношении эксплуатационных требований нагрузки.

Контрольный список для проектирования

Начните вашу стратегию проектирования на основе контрольного списка для проверки разработки, связанного с Операционным мастерством, чтобы определить процессы наблюдаемости, тестирования и развертывания, относящиеся к функциям Azure.

  • Автоматизация развертываний: используйте конвейеры непрерывной интеграции и непрерывной доставки (CI/CD) для автоматизации развертывания функциональных приложений. Интеграция с Azure DevOps или GitHub Actions для простого рабочего процесса развертывания.

  • Реализация мониторинга работоспособности: использовать Azure Monitor и Application Insights для отслеживания работоспособности и производительности функций. Настройте оповещения для критически важных метрик и используйте пользовательские панели мониторинга для аналитики в режиме реального времени. Дополнительные сведения см. в разделе Мониторинг функций Azure.

  • безопасное развертывание решения: понять модели развертывания , доступные для функций Azure, и внедрить модель, которая лучше всего соответствует вашим рекомендациям по безопасному развертыванию.

  • План аварийного восстановления (АВ):Реализовать стратегии АВ с помощью зон аварийного восстановления и зон доступности в разных регионах для критически важных функций.

Рекомендации

Рекомендация Выгода
Автоматизация развертываний с помощью конвейеров CI/CD с помощью Azure DevOps или GitHub Actions. Настройка CI/CD. Улучшает согласованность развертывания, уменьшает количество ручных ошибок и ускоряет вывод на рынок новых функций.
Используйте слоты развертывания для подготовки изменений перед выпуском в производственную среду. Снижает риск возникновения ошибок в рабочей среде и обеспечивает безопасный откат при обнаружении проблем.
Реализуйте централизованный мониторинг с использованием Application Insights и Azure Monitor посредством доступных метрик. Улучшает видимость производительности функций, что помогает быстро выявлять и устранять проблемы.

Эффективность производительности

Эффективность производительности заключается в поддержании пользовательского опыта даже при увеличении нагрузки путем управления мощностями. Стратегия включает масштабирование ресурсов, определение потенциальных узких мест и оптимизацию для достижения пиковой производительности.

Принципы проектирования эффективности производительности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей емкости в отношении ожидаемого использования.

Контрольный список для проектирования

Начните стратегию проектирования на основе контрольного списка проектирования для эффективности производительности. Определите базовые показатели, основанные на ключевых показателях производительности функций Azure.

  • Оптимизировать холодные старты: свести к минимуму эффекты холодных стартов с помощью планов Premium Flex, которые предоставляют предварительно разогретые экземпляры, или гарантировать, что функции остаются активными, используя стратегии, такие как триггер прогрева функций Azure.

  • Оптимизация кода функции: написать эффективный код, чтобы сократить время операции и потребление ресурсов. Избегайте длительных операций и оптимизируйте вызовы внешних служб.

  • Включить автомасштабирование: использовать возможности автомасштабирования функций Azure для автоматического масштабирования на основе спроса. Убедитесь, что правила масштабирования хорошо определены и протестированы.

  • Отслеживать метрики производительности: использовать Application Insights для отслеживания ключевых метрик производительности, таких как время операции, ЦП и использование памяти. Настройте оповещения для снижения производительности.

Рекомендации

Рекомендация Выгода
Используйте план Elastic Premium с предварительно подготовленным экземпляром, чтобы свести к минимуму задержку холодного запуска. Понимание холодных запусков. Уменьшает задержку, связанную с холодным запуском, что повышает время отклика для приложений с учетом времени.
Оптимизировать код функции, чтобы сократить время операции. Ознакомьтесь с рекомендациями по для функций Azure. Повышает производительность, уменьшая время и ресурсы, необходимые для выполнения каждой функции.
включить автоматическое масштабирование для автоматической настройки емкости по требованию. Настройка автомасштабирования. Гарантирует, что приложения-функции могут обрабатывать различные нагрузки без вмешательства вручную. Этот подход помогает поддерживать производительность под давлением.

Политики Azure

Azure предоставляет широкий набор встроенных политик, связанных с функциями Azure и его зависимостями. Набор политик Azure может проверять некоторые из предыдущих рекомендаций. Например, можно проверить, можно ли:

  • Все приложения-функции имеют включенные управляемые удостоверения.
  • Приложения-функции используют только частные конечные точки для безопасности сети.
  • Ведение журнала диагностики включено для всех приложений-функций.

Для комплексного управления ознакомьтесь со встроенными определениями Политики Azure и другими политиками, которые могут повлиять на безопасность сетевого слоя.

Рекомендации помощника по Azure

Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure.

Общие сведения о Помощнике по Azure см. в этой статье.

Дальнейшие действия

Рассмотрим следующие ресурсы для дальнейшего изучения рекомендаций, выделенных в этом документе: