Гайд: создание бессерверных приложений

Сегодня выкладываем гайд по созданию бессерверных приложений. Он включает в себя 3 основных раздела: создание бессерверной логики, настройка триггеров и использование привязок. Присоединяйтесь!

7zev61cth7zx0w8eienjjyxi91a.jpeg

Введение


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

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

При разработке таких служб как эта с применением традиционных стратегий архитектуры предприятий вам потребуется заранее учитывать инфраструктуру сервера и его обслуживание: выделить необходимое оборудование, запланировать его установку, координировать работу с ИТ-отделом для управления им и т. д. Альтернативой являются бессерверные вычисления. С помощью бессерверных вычислений облачный поставщик управляет подготовкой и обслуживанием инфраструктуры, позволяя вам полностью сконцентрироваться на создании приложений логики. Служба «Функции Azure» — это ключевой компонент предложения бессерверных вычислений Azure, позволяющий выполнять фрагменты кода или функции, написанные на языке программирования по своему усмотрению, в облаке.

Цели обучения


В этом модуле вы узнаете, как выполнять следующие задачи:

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


Определение пригодности бессерверных вычислений для удовлетворения потребностей бизнеса


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

Что такое бессерверные вычисления?


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

Что такое Функции Azure?


Функции Azure — это бессерверная платформа вычислений. Она позволяет разработчикам внедрять бизнес-логику, которая может выполняться без подготовки инфраструктуры. Функции конструктивно хорошо масштабируются, и вы оплачиваете только фактически использованные ресурсы. Код функции можно создать на любом удобном языке, включая C#, F# и JavaScript. Также поддерживаются NuGet и NPM, что позволяет использовать в бизнес-логике многие популярные библиотеки.

Преимущества решения на основе бессерверных вычислений


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

Отсутствие избыточного выделения инфраструктуры


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

Логика без отслеживания состояния


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

Управление событиями


Функции управляются событиями. Это означает, что они выполняются только в ответ на некоторое событие (триггер), например получение HTTP-запроса или добавление сообщения в очередь. Триггеры настраиваются в определении функции. Такой подход значительно упрощает базу кода, позволяя объявлять только источники данных (триггер/входная привязка) и точку назначения (выходная привязка). Вам не придется писать создавать собственный код для работы с очередями, BLOB-объектами, концентраторами и т. д. Остается лишь создать бизнес-логику.

Функции можно использовать в традиционных вычислительных средах


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

Недостатки решения на основе бессерверных вычислений


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

Время выполнения


По умолчанию функции используют время ожидания 5 минут. Его можно увеличить, но не более чем до 10 минут. Если выполнение функции занимает больше 10 минут, ее можно разместить на виртуальной машине. Кроме того, если ваша служба запускается по HTTP-запросу и вы рассчитываете получить HTTP-ответ, время ожидания ограничивается 2,5 минутами. И наконец, есть дополнительная возможность создать устойчивые функции, чтобы оркестрировать выполнение нескольких функций без ограничения по времени ожидания.

Частота выполнения


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

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

Создание приложения-функции на портале Azure


Для прохождения этого урока требуется песочница

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

Войти в песочницу


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

Что такое приложение-функция?


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

Выбор плана обслуживания


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

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

Требования к учетной записи хранения


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

Создание приложения-функции


Давайте создадим приложение-функцию на портале Azure.

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

Нажмите кнопку Создать ресурс в верхнем левом углу портала Azure и последовательно выберите Get started > Serverless Function App (Приступая к работе > Бессерверное приложение-функция), чтобы для приложения-функции открыть колонку Создать. Эту же колонку можно открыть через пункт меню Вычисления > Приложение-функция.

qdo6dfwqw05hjofsqltq0ddzqhe.png

Выберите глобально уникальное имя приложения. Оно будет использоваться как базовый URL-адрес вашей службы. Вы можете назвать его, например, escalator-functions-xxxxxxx, заменив крестики инициалами и годом рождения. Если это имя не является глобально уникальным, попробуйте другие сочетания. Допустимые символы: a–z, 0–9 и -.

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

Выберите имеющуюся группу ресурсов с именем [имя группы ресурсов песочницы].

Выберите операционную систему Windows.

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

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

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

  • Западная часть США 2
  • Центрально-западная часть США
  • Центрально-южная часть США
  • Центральная часть США
  • Восточная часть США
  • Западная Европа
  • Юго-Восточная Азия
  • Восточная Япония
  • Южная Бразилия
  • Юго-Восточная Австралия
  • Центральная Индия


Для параметра Стек времени выполнения выберите JavaScript из раскрывающегося списка, так как именно на этом языке мы реализуем примеры функций в этом упражнении.

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

Убедитесь в том, что служба Azure Application Insights включена, и выберите ближайший к вам (или вашим клиентам) регион.

Выберите Создать. Развертывание займет несколько минут. После его завершения вы получите уведомление.

Проверка приложения-функции Azure


В меню в левой части портала Azure выберите Группы ресурсов. Затем вы увидите группу ресурсов [имя группы ресурсов песочницы] в списке доступных групп.

o8rzqwrbnapxppbpsfow18kutmi.png.

Выберите группу ресурсов [имя группы ресурсов песочницы]. Появится список ресурсов, примерно как на следующем изображении.

g2zsp9vbiunm1-gwromnvl1cano.png

Элемент с изображением молнии, обозначенный здесь как служба приложений, — это и есть новое приложение-функция. Щелкните его, чтобы открыть подробные сведения о новой функции. Ей назначен общедоступный URL-адрес, который можно открыть в браузере и убедиться, что приложение-функция работает правильно.

Продолжить изучение гайда вы можете на нашем портале Microsoft Learn.

© Habrahabr.ru