Last chance! 50% off DataCamp Premium
Sale ends in
Azure Functions — это часть бессерверного вычислительного сервиса Microsoft. Он позволяет запускать небольшие фрагменты кода в ответ на события, не управляя серверами самостоятельно.
Например, функция может выполняться при поступлении HTTP-запроса, при загрузке файла в хранилище или по расписанию.
«Бессерверный» не означает отсутствие серверов. Это значит, что инфраструктурой управляет Azure. Azure берет на себя подготовку, масштабирование и обслуживание за кулисами.
В этом руководстве разберём базовые элементы: триггеры, привязки, варианты хостинга и практический пример для быстрого старта.
Azure Function — это небольшой фрагмент кода, который запускается по выбранному вами событию. Вы пишете логику, а остальным занимается Azure.
Эту модель определяют три идеи.
В идеале одна функция решает одну задачу — например, изменяет размер изображения или обрабатывает сообщение. Function App — это контейнер, который содержит одну или несколько функций. Он управляет общими настройками (конфигурация и деплой) для всех функций внутри.
Жизненный цикл функции следует простой схеме:
Этот поток в целом одинаков независимо от языка или варианта хостинга. Меняются только триггер, код и привязки.
У каждой функции ровно один триггер. Триггер определяет, как именно запускается функция. Вот наиболее распространённые типы, которые стоит знать:
Триггеры и привязки часто путают, но, несмотря на сходство, они решают разные задачи. Триггер запускает функцию, а привязка подключает функцию к данным — читает их или отправляет.
Так вы передаёте функции данные без написания собственного интеграционного кода. Например, функция может автоматически прочитать запись из базы данных, просто объявив привязку.
Это позволяет отправить результат работы функции куда-либо ещё. Например, с помощью выходной привязки можно записать обработанное сообщение в очередь.
Вот пример для наглядности: триггер Blob Storage запускает функцию при загрузке изображения. Выходная привязка затем сохраняет изменённое по размеру изображение в другой контейнер хранилища. Привязки берут на себя подключение к хранилищу, и никакой ручной работы с клиентом хранилища не требуется.
Ниже приведён простой пример HTTP-функции, которая возвращает приветствие. Последовательность шагов такая:
Этот пример намеренно сделан минимальным, чтобы показать общий шаблон и оставить пространство для ваших идей.
Azure Functions поддерживает множество языков, например:
Поддержка и модели разработки могут различаться в зависимости от языка и версии. Поэтому перед началом нового проекта рекомендуется проверить актуальную документацию Azure, так как детали часто меняются.
Не каждая Azure Function работает одинаково. Azure предлагает несколько планов хостинга с разными компромиссами. Правильный выбор зависит от вашего сценария. Основные компромиссы:
В продакшене важны ещё две концепции:
Azure отслеживает нагрузку на функцию: при росте спроса добавляет вычислительные инстансы, при снижении — удаляет. Управлять этим вручную не нужно.
Если функция давно не выполнялась, ей может потребоваться немного времени на запуск перед обработкой нового запроса. Эта задержка называется холодным стартом. Некоторые планы хостинга уменьшают или исключают его, поддерживая инстанс «тёплым», как уже упоминалось.
Событийная модель хорошо подходит для многих повседневных задач. В частности:
Обработка входящих HTTP-запросов без необходимости круглосуточно держать полноценный веб-сервер.
Запускайте функцию при появлении файла в хранилище, затем меняйте размер, конвертируйте или просто сканируйте его.
Запускайте очистку, отчёты или напоминания по таймеру без выделенного постоянно включённого сервера.
Обрабатывайте сообщения или события по мере поступления, шаг за шагом.
Обрабатывайте большие потоки данных от датчиков или устройств по мере их поступления.
Вынесите медленные или эпизодические операции, например отправку email, чтобы они не блокировали основное приложение.
После публикации функции важно видеть, как она работает.
Например, можно просматривать логи, фиксирующие, что происходило при каждом запуске, — это очень удобно для отладки. Также можно использовать Application Insights в инструментах Azure: он отслеживает производительность, запросы и сбои в одном месте.
Стоит отслеживать и неудачные вызовы, чтобы понимать, когда и почему функция не завершилась. Мониторинг производительности помогает заметить медленные функции ещё до того, как они станут проблемой. Кроме того, можно настроить повторные попытки, чтобы неудавшиеся выполнения выполнялись автоматически ещё раз.
Azure Functions позволяет запускать код в ответ на события без необходимости управлять серверами. Триггеры определяют, когда функция стартует. Привязки, в свою очередь, упрощают подключение этой функции к другим сервисам без лишнего интеграционного кода.
По мере перехода от простых тестовых функций к продакшену всё большее значение приобретают выбор хостинга и масштабирования. Правильный план влияет не только на стоимость, но и на скорость и надёжность.
Бессерверный сервис, который запускает небольшие фрагменты кода в ответ на события, без управления серверами с вашей стороны.
События вроде HTTP-запросов, таймеров, загрузки файлов или сообщений в очередях.
Триггер запускает функцию. Привязка подключает её к другим сервисам для получения входных данных или отправки результатов.
Короткая задержка при запуске функции после периода простоя.
C#, JavaScript/TypeScript, Python, Java и PowerShell.
Изучайте Azure с DataCamp
{count, plural, one {Курс} few {Курса} many {Курсов} other {Курса}}
{count, plural, one {Курс} few {Курса} many {Курсов} other {Курса}}
{count, plural, one {Курс} few {Курса} many {Курсов} other {Курса}}