Що таке serverless?
Serverless — модель запуску коду, за якої розробник завантажує функцію, а хмарний провайдер сам виділяє ресурси під кожен її виклик. Сервери, звісно, існують — просто ними не потрібно керувати, а оплата йде за фактичні виклики.
Такий підхід добре пасує для нерегулярних задач: обробка завантаженого файлу, реакція на вебхук, нічний звіт за розкладом, рідко використовуване API. Коли звернень немає, ви не платите нічого, а за сплеску навантаження масштабування відбувається автоматично.
Обмеження теж є: ліміт часу виконання, «холодний старт» при першому виклику після простою, відсутність стану між запусками та привʼязка до конкретної хмари. Для постійно навантаженого сервісу звичайний контейнер виходить дешевшим і передбачуванішим.
Де застосовується
Модель добре лягає на задачі з нерівномірним навантаженням: обробники вебхуків, надсилання сповіщень, обробка завантажених файлів, планові завдання, невеликі API. Код завантажується функцією — AWS Lambda, Azure Functions, Google Cloud Functions — і запускається за подією.
Економіка тут інша, ніж у звичайного сервера. Сервіс, який викликають кілька тисяч разів на місяць, коштує центи, бо в простої оплати немає. Зате за постійного високого навантаження модель стає дорожчою за виділений сервер, і це перше, що перевіряють перед вибором.
Приклад
Користувач завантажує фотографію у сховище. Ця подія запускає функцію, яка робить зменшену копію і записує її поруч. Між завантаженнями нічого не працює і нічого не оплачується — сервера, що чекає на файли, просто немає.
export const handler = async (event) => {
const { orderId } = JSON.parse(event.body);
await sendConfirmationEmail(orderId);
return {
statusCode: 200,
body: JSON.stringify({ ok: true }),
};
}; Часті запитання
Серверів справді немає?
Звісно, є — їх просто не потрібно обирати, налаштовувати й оновлювати. Провайдер сам виділяє ресурси під кожен виклик і масштабує навантаження. Назва відображає не відсутність серверів, а відсутність потреби ними керувати.
Що таке холодний старт?
Затримка при першому виклику функції після простою: провайдеру потрібно підняти оточення. Вона становить від сотень мілісекунд до кількох секунд, залежно від мови й розміру коду. Для фонових задач це непомітно, для інтерактивного інтерфейсу може бути критично.
Для яких задач serverless не підходить?
Для довгих обчислень — у функцій є обмеження за часом виконання. Для сервісів із постійним високим навантаженням, де звичайний сервер обходиться дешевше. І для застосунків, яким треба тримати стан між викликами або постійні підключення до бази.
Чи привʼязує serverless до одного провайдера?
Значною мірою так: формат функцій, тригери й сусідні сервіси в кожної хмари свої, тому переїзд потребує переписування обвʼязки. Знизити залежність допомагає винесення бізнес-логіки в окремі модулі, не повʼязані з конкретною платформою.