Phone icon Зв'язатись з нами

DevOps та хмари

Що таке serverless?

Serverless (безсерверні обчислення) — це модель запуску коду, за якої розробник завантажує функцію, а хмарний провайдер сам виділяє ресурси під кожен її виклик. Сервери, звісно, існують, але керувати ними не потрібно, а платите ви лише за фактичні виклики.

Такий підхід добре підходить для нерегулярних задач: обробка завантаженого файлу, реакція на вебхук, нічний звіт за розкладом, API, до якого звертаються рідко. Якщо викликів немає, ви не платите нічого, а при різкому зростанні навантаження масштабування відбувається автоматично.

Є й обмеження: ліміт часу виконання, «холодний старт» при першому виклику після паузи, відсутність збереженого стану між запусками і прив’язка до конкретної хмари. Для сервісу з постійним навантаженням звичайний контейнер дешевший і передбачуваніший.

Де застосовується

Serverless добре підходить для задач із нерівномірним навантаженням: обробники вебхуків, надсилання сповіщень, обробка завантажених файлів, задачі за розкладом, невеликі API. Код завантажують як функцію — в AWS Lambda, Azure Functions, Google Cloud Functions — і вона запускається у відповідь на подію.

Економіка тут інша, ніж зі звичайним сервером. Сервіс, який викликають кілька тисяч разів на місяць, коштує центи, бо за простій платити не треба. Але при постійному високому навантаженні serverless стає дорожчим за окремий сервер, і це перше, що перевіряють перед вибором.

Приклад

Користувач завантажує фото у сховище. Ця подія запускає функцію, яка створює зменшену копію і зберігає її поруч. Між завантаженнями нічого не працює і нічого не оплачується — сервера, який чекає на файли, просто немає.

export const handler = async (event) => {
  const { orderId } = JSON.parse(event.body);
  await sendConfirmationEmail(orderId);
  return {
    statusCode: 200,
    body: JSON.stringify({ ok: true }),
  };
};
Функція без сервера: провайдер сам запускає її на кожен виклик і масштабує під навантаження.

Часті запитання

Серверів справді немає?

Звісно, є — просто їх не треба обирати, налаштовувати й оновлювати. Провайдер сам виділяє ресурси під кожен виклик і розподіляє навантаження. Назва говорить не про відсутність серверів, а про те, що ними не потрібно керувати.

Що таке холодний старт?

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

Для яких задач serverless не підходить?

Для тривалих обчислень, бо час виконання функцій обмежений. Для сервісів із постійним високим навантаженням, де звичайний сервер дешевший. І для застосунків, які мають зберігати стан між викликами або тримати постійне з’єднання з базою.

Чи прив’язує serverless до одного провайдера?

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

Навчання DevOps в OWU

Опануйте професію DevOps-інженера на практичних курсах із менторами та реальними проєктами.

Обрати курс