Serverless computing - бессерверные вычисления

Бессерверные вычисления (serverless computing), на мой взгляд, крайне спорное название для технологии, которая использует серверы для своей работы. Бессерверные вычисления, которые выполняются серверами… Поскольку я провел очень много времени за построением инфраструктурных решений, то у меня от этого названия прям конкретно припекает.

С другой же стороны, когда смотришь на это со стороны потребителя, то всё выглядит очень заманчиво, но и в этом случае где-то на краю подсознания возникает какой-то когнитивный диссонанс, ведь что-то должно выполнять эти вычисления, а что если не серверы?

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

Впрочем, хватит философии, а то выйдет целый роман «СерверLess. Повесть о ненастоящем сервере».

Откуда же взялось это бессерверие?

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

Любопытный олдфаг сразу же вспомнит свой уютный виртуальный-хостинг и будет прав, ведь его тоже можно считать бессерверным.

Таким образом чтобы стать бессерверным, сервис должен:

  • не требовать администрирования;
  • иметь возможность авто-масштабирования;
  • предоставлять API или любой другой интерфейс для взаимодействия.

Почему только сейчас serverless начинает набирать обороты?

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

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

И здесь нам на помощь приходит Function as a Service, который и имеют в виду по умолчанию, когда говорят про serverless, ведь без него serverless не был бы serverless.

Не любое приложение можно реализовать бессерверно, но если ваше приложение:

  • выполняет работу в ответ на событие (event-based);
  • не хранит состояние (stateless);
  • выполняет непродолжительные задачи (ephemeral);
  • не изменяется в процессе работы (immutable);
  • может легко масштабироваться (auto-scaling).

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

Итого

Основной посыл данного поста это призыв к правильному употреблению терминологии. Если вы спрашиваете про serverless у программиста, то это нормально, но не стоит будить дракона, спрашивая это у админа.