В данной статья я хочу сделать обзор того чем сегодня является serverless, что значит сделать serverless решение, какие инструменты для этого есть, какие есть ограничения и когда стоит задуматься о serverless. Даннная статья не полный и всеобъемлющий гайд по serverless, я постараюсь описать то, что знаю, слышал, с чем имел дело. Надеюсь, что статья будет полезна на начальном этаме знакомства с serverless и поможет быстрее съориентироваться и пойти в правильном напривлении.
Serverless как подход для построения решений
Часто под serverless подразумевают только вычисления и функции типа aws lambda. Но serverless намного шире, это не только вычисления но и хранение данных, интеграции, бизнес процессы.
Определение
Посмотрим для начала на определение от AWS:
Бессерверная архитектура – это способ создания и запуска приложений и сервисов без необходимости управления инфраструктурой. Приложение по‑прежнему будет работать на серверах, но управление этими серверами AWS полностью берет на себя. Вам больше не придется заниматься выделением ресурсов, масш табированием и обслуживанием серверов для запуска приложений, баз данных и систем хранения данных.
from: https://aws.amazon.com/ru/lambda/serverless-architectures-learn-more/
Тут главная мысль, что инфраструктурой владеет облачный провайдер. Это определенение описывает только одну особенность serverless и поэтому оно не точное.
Вот что пишут в Yandex Cloud о serverless:
Теперь разработчики не задумываются об эксплуатации инфраструктуры и оплачивают только те ресурсы, которые используются для работы приложения.
from: Всё, что вы хотели знать о бессерверных технологиях, но боялись спросить
Тут учтено и то, что мы не платим за ресурсы когда не используем их. Важная оговорка тут в том, что контроль за тем платим мы или нет возложена на провайдера услуг. Это важнр так как и с виртуальными машинами мы можем создавать VM когда она нужна и удалять когда не нужно. Но это дополнительный процесс который мы должны поддерживать и это не serverless.
Довольно точно serverless определяет Yandex Cloud так:
Serverless - это:
- LowCode
- LowOps
- Pay as you go
from: - Yandex Scale 2024. Serverless
где
- LowCode - это не код перенесенный в квадратики, а с LowCode разработчик должен писать меньше кода так как весь бойлерплейт реализован поставщиком сервиса. Например CloudFunction & AWS Lambda берут на себя прием, парсинг запроса, возврат результата и преобразование запроса и ответа.
- LowOps - заботу о инфраструктуре берет на себя провайдер облачных услуг. Разработчик или девопс в декларативном стиле определяет что какая инфраструктура ему нужна.
- Pay as you go - плата только реально потребленные ресурсы. Место в S3, реально потребленные cpu и mem в функциях, контейнерах и БД.
Вполне исчерпывающее определение того, что такое serverless.