Serverless

Serverless

Serverless — это подход, при котором функции сервера для приложений разработчика переданы облачным сервисам. Сервера баз данных, очереди, API Gateway и прочая инфраструктура становится лишь сервисами, которые проще обслуживать.

Приложения, которые работают в serverless-среде, называют cloud native приложениями. В такой парадигме, разработчики намного меньше тратят времени на инфраструктурные моменты (и больше — на реализацию непосредственной ценности).

Они запускаются как пакеты в контейнерах (в т.ч. FaaS, functions as a service) облачного провайдера: Яндекс.Функции, Google Cloud и др. — и пользуются BaaS (backend as a service).

BaaS-инфраструктура включает постоянно работающие компоненты:

  • IAM-сервисы;
  • DB-сервисы (clouddb, mongodb, и т. п.);
  • брокеры;
  • API gateway сервисы.

Чем это выгодно для разработчика?

  1. Фокус на разработке, а не на администрировании серверов. Разработчик не думает о нюансах операционной системы, настроек, обновлений серверов. Его внимание сосредоточено на области его экспертизы — то есть на разработке ценности.
  2. Не нужно думать о доступных вычислительных ресурсах. Как бы ни менялась нагрузка на приложение, провайдер serverless предоставит достаточно ресурсов.
  3. Оплата только за используемые ресурсы.
  4. Контейнеры заняты приложением только тогда, когда оно запущено.

Это не serverless

VPS, в которой развернут Kubernetes и вы управляете контейнерами.

Сам по себе Kubernetes не работает с нативным запуском приложений serverless. Но есть сервисы, которые помогают использовать Kubernetes в serverless-подходе. Так, можно подключить Knative для запуска приложений, а сервисы Managed Kubernetes — для разворачивания собственные окружения.

Когда применять serverless?

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

Но лучше всего он подходит для отложенных или фоновых задач:

  • создание дополнительных копий изображения после загрузки его на сайт;
  • создание бэкапа по расписанию;
  • асинхронная отправка уведомления пользователю (push, email, sms);
  • различные экспорты и импорты.

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

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

  • чатботов;
  • бэкендов для IoT-приложений;
  • манипуляции запросов к основному бэкенду — например, для идентификации пользователя по User-Agent, IP и прочим данным или для получения информации о его геопозиции по IP;
  • даже как самостоятельные API endpoint'ы.

О serverless https://about.gitlab.com/topics/serverless/

Другие статьи

Смотреть все

Метрики процессов

Читать

Pair Programming

Читать

Ретроспектива прошлого года в проекте

Читать

Ваша заявка отправлена успешно

Отправить снова

Базовый курс управления и построения IT-контура компании. Поток 05.09.23

Контакты

С вами свяжется модератор курса Алексей Клоков