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-инженера на практических курсах с менторами и реальными проектами.
Выбрать курс