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


Взгляд Azure Well-Architected Framework на Функции Azure

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

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

Важный

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

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

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

Основополагающая архитектура, показывающая основные рекомендации: Дизайн архитектуры бессерверных функций

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

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

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

Заметка

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

Надёжность

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Контрольный список по дизайну

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

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

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

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

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

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

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

Основное внимание уделяется определению способов снижения затрат при сохранении необходимых уровней производительности.

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

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

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

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

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

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

  • Мониторинг и анализ затрат. Регулярно отслеживайте использование и затраты приложений-функций с помощью службы "Управление затратами Azure" и настройте оповещения об обнаружении аномалий затрат. Узнайте больше об управлении затратами и их оптимизации.

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

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

Операционное совершенство посвящено процессам и процедурам развертывания, наблюдаемости и управления приложениями Azure Functions.

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

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

Начните использовать стратегию проектирования на основе принципов проектирования и для достижения операционного совершенства, предлагающих стратегии поддержания качества работы функций 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, применяя доступные метрики. Улучшает видимость производительности функций, помогая быстро выявлять и устранять проблемы.

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

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

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

Контрольный список по дизайну

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

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

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

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

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

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

Политики Azure

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

Например, можно применить политики, которые требуют:

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

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

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

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

Дополнительные сведения см. в рекомендациях помощника по Azure.

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

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