Взгляд 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.
Дальнейшие действия
Рассмотрим следующие ресурсы для дальнейшего изучения рекомендаций, выделенных в этом документе:
- Эталонные архитектуры: