Prog Academy
RU UA
DevOps та хмари

Що таке 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 до одного провайдера?

Значною мірою так: формат функцій, тригери й сусідні сервіси в кожної хмари свої, тому переїзд потребує переписування обвʼязки. Знизити залежність допомагає винесення бізнес-логіки в окремі модулі, не повʼязані з конкретною платформою.

Повʼязані терміни