Термин «бессерверный», как и многие вещи в нашей сфере, становится перегруженным термином… но в целом он означает «Функционально наша архитектура не зависит от предоставления или текущего обслуживания сервера».
Первый случай, который приходит на ум, — это одностраничное приложение JavaScript, которое использует локальное хранилище и хранится на чем-то вроде Amazon S# или Github Pages (или на любом статическом сайте — это всего лишь общие примеры). Представьте себе что-то вроде приложения в стиле «задача» или «выполнение задач», которое полностью работает в вашем браузере. Ваш браузер обращается к такому сервису, как S3, для загрузки кода, и все сохраняемые вами элементы сохраняются в локальном хранилище вашего браузера. Для этого у вас нет сервера.
Второй вариант, немного более сложный (а также тот, который популяризировал термин «бессерверный»), использует такой сервис, как AWS Lambda. Позвольте мне объяснить это, представив проблему, которую он решает:
Много раз за свою карьеру я решал бизнес-задачу для клиента, используя всего лишь небольшой код Ruby, который выполнял периодическое извлечение, преобразование и загрузку (обычно написанную в виде rake-задачи). После решения я обычно автоматизирую его с помощью cron. Тогда возникает проблема: «Где мне разместить эту штуку, которая запускается раз в час?» Для некоторых клиентов мы установили сервер в их существующей инфраструктуре. Для других мы установили экземпляр EC2, хотя 99% времени он простаивал. В любом из этих случаев существует сервер, который требует подготовки, исправления, мониторинга, обновления и т. д.
С помощью Amazon Lambda я могу взять эту задачу rake и запустить ее на их сервисе как чистую «функцию». Я даже могу запланировать это. Этому клиенту больше не понадобится часть инфраструктуры для такой простой операции, выполняемой раз в час.
В «бессерверном» варианте все равно остается сервер, как и в «облаке» все еще остается компьютер. Поверх всего этого есть лишь уровень абстракции, который берет на себя часть ответственности за окружающую среду.