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


Использование бессерверных функций

Подсказка

Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.

Миниатюра обложки электронной книги Azure с Cloud Native .NET приложениями.

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

Что такое бессерверные технологии?

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

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

Какие проблемы решаются с помощью бессерверной архитектуры?

Бессерверные платформы устраняют множество временных и дорогостоящих проблем:

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

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

Какова разница между микрослужбой и бессерверной функцией?

Как правило, микрослужба инкапсулирует бизнес-возможности, например корзину покупок для веб-сайта электронной коммерции. Он предоставляет несколько операций, позволяющих пользователю управлять своим покупательским опытом. Однако функция — это небольшой упрощенный блок кода, который выполняет операцию с одним назначением в ответ на событие. Микрослужбы обычно создаются для реагирования на запросы, часто из интерфейса. Запросы могут основываться на HTTP REST или gRPC. Бессерверные службы реагируют на события. Архитектура на основе событий идеально подходит для обработки краткосрочных фоновых задач.

Какие сценарии подходят для бессерверных?

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

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

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

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

Когда следует избегать бессерверных технологий?

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

На рисунке 3-9 показан шаблон холодного запуска. Обратите внимание на дополнительные шаги, необходимые, когда приложение находится в неактивном состоянии.

Холодный и теплый старт Рисунок 3-9. Холодное начало и теплое начало.

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

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

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