объясни serverless --простыми-словами

Serverless
Название врет в открытую. Сервер там абсолютно точно есть. Иначе никак. Твой код должен выполняться где-то.
"Serverless" значит вот что: это не твой сервер, и это не твоя проблема.
Представь свет в коридоре мотеля и свет с датчиком движения в паркинге. Свет в коридоре горит всю ночь, идет там кто-то или нет, и кто-то платит за каждый из этих часов. Свет в паркинге не горит и ничего не стоит, пока ты не войдешь. Потом он мгновенно включается, делает свою работу и выключается, как только ты ушел. Ты платишь за шаги, а не за здание.
Вот в чем сдвиг. Ты перестал арендовать машину, которая работает круглосуточно, и начал платить только за те моменты, когда твой код реально что-то делает.
Старый способ, чтобы почувствовать разницу. Ты арендуешь сервер (тот самый всегда включенный компьютер на складе), и теперь он твой. Звучит приятно, пока не понимаешь, что значит "твой":
- Он работает 24/7, и ты платишь за все 24 часа, даже за три часа ночи, когда ни один живой человек не пользуется твоим приложением.
- Когда он падает, это твой пейджер орет.
- Когда ему нужно обновление безопасности, это твоя суббота.
- Когда приходит волна трафика, тебе лучше заранее арендовать машину побольше, иначе все развалится.
Ты арендодатель здания, в котором всю ночь горит свет и работает отопление ради случайного посетителя.
При serverless-подходе ты не арендуешь здание. Ты отдаешь провайдеру (компании вроде Vercel, Cloudflare или AWS) маленький кусок кода: одну функцию, которая делает одну задачу. Например:
- уменьши эту картинку
- отправь это письмо с подтверждением
- проверь, настоящий ли этот купон
И уходишь. Когда кто-то реально запускает эту задачу, происходит вот что:
- Приходит запрос. "Кто-то только что оплатил заказ. Отправь чек."
- Провайдер берет машину из огромного общего пула, который он держит теплым для всех.
- Твоя функция запускается на ней, отправляет чек и завершает работу.
- Машина возвращается в пул для следующего, кому она понадобится.
Ты не выбирал машину. Не давал ей имя. Никогда не узнаешь, какая именно это была. И счетчик крутился только те полсекунды, пока твой код реально работал.
Почему это важно для человека, который не пишет код? Две причины: деньги и спокойствие.
- Ты платишь за использование, а не за ожидание. Сайд-проект с десятью посетителями в месяц может стоить почти ничего, потому что пока никого нет, ничего не работает. Сравни это с арендой сервера, который выставляет счет каждый час в любом случае. Для большинства маленьких или скачкообразных проектов это разница между несколькими центами и настоящим ежемесячным счетом.
- Скачки трафика перестают быть страшными. Тебя где-то упомянули, и сразу пришла тысяча человек? Провайдер просто достает тысячу машин из пула, запускает твою функцию тысячу раз и кладет все обратно. Ты не планировал это. Ничего не апгрейдил. Оно просто масштабировалось, потому что изначально не было одной-единственной машины.
Есть один честный подвох, который стоит знать: cold start, холодный старт. Помнишь свет в паркинге, который включается в момент, когда ты вошел? Это почти так же быстро, но не совсем. Если твоя функция давно не запускалась, провайдеру сначала нужно взять машину и разбудить ее, а это добавляет маленькую паузу к первому запросу. Если функция работает постоянно, все остается теплым и быстрым. Если она долго простаивала, следующий посетитель подождет чуть дольше. Обычно никто не замечает. А там, где важна каждая миллисекунда, люди немного доплачивают, чтобы свет всегда был включен.
Вот и вся идея. Ты больше не арендодатель, который всю ночь освещает пустое здание. Свет выключен, пока кто-то не вошел, и ты платишь только за шаги.