Перейти к содержанию
Innovialabs

Edge-функции и serverless-функции: что и когда использовать

Продвинутое3 мин

Коротко

Edge-функции выполняются рядом с пользователем и подходят для лёгкой логики без тяжёлой работы с базой; serverless-функции работают в выбранном регионе рядом с данными и подходят для бизнес-логики, запросов к БД и долгих операций.

Короткий ответ

Edge-функции запускаются в точках присутствия CDN, ближе всего к пользователю. Они стартуют почти мгновенно, но работают в урезанной среде и с жёсткими лимитами. Serverless-функции запускаются в конкретном регионе облака, имеют полноценный runtime и обычно находятся рядом с базой данных.

Простое правило: на edge — то, что зависит от запроса, а не от данных. Всё, что много раз ходит в базу, — в регион, рядом с базой.

Сравнение

КритерийEdge-функцииServerless-функции
Где выполняютсяВо множестве точек по миру, рядом с пользователемВ одном или нескольких выбранных регионах
RuntimeЧаще всего V8-изоляты, Web API, часть Node.js API недоступнаПолноценный Node.js, Python, Go, Java и др.
Холодный стартОчень короткийЗаметнее, зависит от runtime и размера кода
ЛимитыСтроже по CPU-времени, памяти и размеру кодаШире: дольше выполнение, больше памяти
Нативные модули, файловая системаОбычно нетДа
Доступ к БДЧерез HTTP-драйверы или прокси, далеко от базыОбычные драйверы, рядом с базой
Модель оплатыОбычно за запросы и CPU-времяОбычно за запросы, время выполнения и память

Конкретные лимиты и цены различаются у провайдеров (Vercel, Cloudflare Workers, Netlify, AWS Lambda@Edge и CloudFront Functions) и меняются, поэтому сверяйтесь с их документацией.

Задержка: где на самом деле теряется время

Edge даёт выигрыш только тогда, когда ответ можно сформировать без похода к удалённым данным. Если edge-функция в Ташкенте делает три последовательных запроса к базе во Франкфурте, каждый из них проходит большое расстояние, и итог будет медленнее, чем у serverless-функции во Франкфурте, которая делает те же три запроса локально.

Поэтому важно считать не задержку до функции, а полное время ответа с учётом всех запросов к данным.

Паттерны доступа к базе данных

  • Классическая БД в одном регионе. Держите логику с запросами к ней в serverless-функции того же региона. Многие платформы позволяют закрепить регион функций.
  • Edge + распределённое хранилище. KV-хранилища и реплицируемые базы, рассчитанные на edge, дают быстрое чтение по всему миру. Запись обычно идёт в основной регион и распространяется с задержкой.
  • Edge + кеш. Edge-функция отдаёт ответ из кеша, а при промахе обращается к serverless-функции или API.
  • Пул соединений. Edge-функции и короткоживущие serverless-функции могут быстро исчерпать лимит соединений классической БД, поэтому используйте пулер соединений или HTTP-драйвер.

Что куда выносить

Хорошие задачи для edge:

  • редиректы и перезапись URL;
  • геолокация и выбор языка;
  • A/B-тесты и feature-флаги;
  • проверка JWT и базовая защита маршрутов;
  • добавление заголовков безопасности;
  • персонализация из кеша или KV.

Хорошие задачи для serverless в регионе:

  • бизнес-логика с несколькими запросами к БД;
  • оплаты, вебхуки, интеграции со сторонними API;
  • генерация PDF, обработка изображений;
  • операции, требующие нативных библиотек или долгого выполнения.

Для постоянного сервера, а не функций: WebSocket-соединения с долгой жизнью, тяжёлые фоновые задачи, постоянные очереди.

Частые ошибки

  • Перенести всю логику на edge «ради скорости», а базу оставить в одном регионе.
  • Использовать на edge библиотеку, которая зависит от недоступных Node.js API, и узнать об этом только при деплое.
  • Не закрепить регион serverless-функций рядом с базой.
  • Сравнивать цены только по числу запросов, не учитывая время выполнения.

Частые вопросы

Нет. Они быстрее стартуют и ближе к пользователю, но если логика зависит от удалённой базы, общий ответ может быть медленнее. Edge выигрывает на лёгких операциях без обращения к далёким данным.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.