Бессерверные вычисления (serverless computing), на мой взгляд, крайне спорное название для технологии, которая использует серверы для своей работы. Бессерверные вычисления, которые выполняются серверами… Поскольку я провел очень много времени за построением инфраструктурных решений, то у меня от этого названия прям конкретно припекает.
С другой же стороны, когда смотришь на это со стороны потребителя, то всё выглядит очень заманчиво, но и в этом случае где-то на краю подсознания возникает какой-то когнитивный диссонанс, ведь что-то должно выполнять эти вычисления, а что если не серверы?
Такое ощущение, что маркетологи в погоне за новой абстракцией решили воспользоваться диалектикой отрицания отрицания. Следуя логике которой, получается, что у нас были серверные вычисления, теперь бессерверные, а впереди нас ждут не бессерверные вычисления.
Впрочем, хватит философии, а то выйдет целый роман «СерверLess. Повесть о ненастоящем сервере».
Откуда же взялось это бессерверие?
Понятие бессерверных вычислений появилось уже давно, где-то вместе с появлением облачных сервисов. Те сервисы, которые предоставляют уже готовый интерфейс для работы, без необходимости дополнительно устанавливать и настраивать серверы, например, облачное хранилище, облачные базы данных и так далее, были одними из первых представителей бессерверных вычислений.
Любопытный олдфаг сразу же вспомнит свой уютный виртуальный-хостинг и будет прав, ведь его тоже можно считать бессерверным.
Таким образом чтобы стать бессерверным, сервис должен:
- не требовать администрирования;
- иметь возможность авто-масштабирования;
- предоставлять API или любой другой интерфейс для взаимодействия.
Почему только сейчас serverless начинает набирать обороты?
В первую очередь serverless — это подход для разработки приложений, которые напрямую не используют серверы в своей работе и всю работу за них выполняют облачные сервисы, работоспособность которых полностью обеспечивает сервис-провайдер.
Несмотря на то, что подходящие облачные сервисы существуют уже давно, их использование без запуска приложения на своем сервере требует полного изменения подхода к архитектуре приложения. Для связывания всех этих сервисов воедино требуется дополнительный слой, который бы избавил от необходимости использования серверов.
И здесь нам на помощь приходит Function as a Service, который и имеют в виду по умолчанию, когда говорят про serverless, ведь без него serverless не был бы serverless.
Не любое приложение можно реализовать бессерверно, но если ваше приложение:
- выполняет работу в ответ на событие (event-based);
- не хранит состояние (stateless);
- выполняет непродолжительные задачи (ephemeral);
- не изменяется в процессе работы (immutable);
- может легко масштабироваться (auto-scaling).
то вы можете использовать весь потенциал, который предоставляет бессерверная архитектура.
Итого
Основной посыл данного поста это призыв к правильному употреблению терминологии. Если вы спрашиваете про serverless у программиста, то это нормально, но не стоит будить дракона, спрашивая это у админа.