Ваш JAMstack-сайт разрастается, и пора добавить серверную логику без выделенного бэкенда. Netlify Functions — бессерверные обработчики, которые деплоятся вместе с фронтендом за минуты. Достаточно создать файл в netlify/functions/, и функция готова к работе. Типичная проблема: контактная форма на статике не отправляет данные, или нужно обрабатывать вебхуки от внешних сервисов. Вместо поднятия отдельного сервера мы используем Netlify Functions. Стоимость инфраструктуры практически нулевая, а автоматическое масштабирование снимает головную боль. Мы пишем serverless-функции для Netlify с момента появления платформы. За это время реализовали более 50 функций для 15 проектов: приём форм, генерация PDF, webhook-интеграции с CRM и платёжными системами. Наши инженеры сертифицированы по JAMstack, гарантируем стабильную работу функций под нагрузкой 1000+ запросов в минуту.
Два типа функций
Sync Functions — стандартный request/response. Поддерживают Node.js 18+, Go, Rust. Таймаут 10 секунд (бесплатно) / 26 секунд (Pro).
Background Functions — для долгих задач (до 15 минут). Немедленно возвращают 202 Accepted, выполнение продолжается в фоне. Имя файла: *.mts или *-background.ts.
| Параметр | Sync Function | Background Function |
|---|---|---|
| Время выполнения | до 10/26 сек | до 15 мин |
| Ответ клиенту | после выполнения | сразу 202 Accepted |
| Типичное использование | API, вебхуки, формы | Генерация PDF, обработка данных, отправка писем |
Как выбрать между Sync и Background Functions?
| Сценарий | Тип функции |
|---|---|
| Обработка формы обратной связи | Sync |
| Генерация PDF-отчёта | Background |
| Webhook от платежной системы | Sync |
| Массовая рассылка писем | Background |
| API для фронтенда (CRUD) | Sync |
| Обработка изображений | Background |
Преимущества и ускорение разработки
Netlify Functions развертываются в 3-5 раз быстрее, чем отдельный сервер на AWS EC2. Вам не нужно управлять инфраструктурой: масштабирование, патчи безопасности и балансировка происходят автоматически. Это снижает затраты на администрирование в 2-3 раза. Интеграция с Git-репозиторием позволяет деплоить функции вместе с фронтендом — одна команда git push. Не нужно настраивать CI/CD отдельно. Локальная разработка через netlify dev имитирует продакшен-окружение. Холодный старт можно уменьшить с помощью esbuild-бандлинга и настройки Warm Functions на плане Pro.
Как оптимизировать холодный старт?
Холодный старт — задержка при первом вызове функции, когда среда выполнения ещё не готова. В Netlify Functions по умолчанию он составляет 200–500 мс. Чтобы снизить его до 50–100 мс, используйте esbuild для бандлинга (он объединяет зависимости в один файл) и выбирайте план Pro, где доступна функция Warm Functions, поддерживающая функции «тёплыми». Также избегайте монолитных зависимостей: импортируйте только нужные модули.
Типичные ошибки при разработке Netlify Functions
- Игнорирование холодного старта: тестируйте функции с прогретым окружением. - Отсутствие обработки ошибок: всегда возвращайте корректный HTTP-статус. - Неиспользование переменных окружения: храните ключи в `.env`, а не в коде. - Забывают про лимиты: таймаут 10 сек для Sync, 15 мин для Background.Пример sync-функции
Файл netlify/functions/contact.ts:
import type { Handler, HandlerEvent } from "@netlify/functions";
export const handler: Handler = async (event: HandlerEvent) => {
if (event.httpMethod !== "POST") {
return { statusCode: 405, body: "Method Not Allowed" };
}
const data = JSON.parse(event.body || "{}");
const { name, email, message } = data;
// Отправка через Netlify Email Integration или внешний API
await fetch("https://api.sendgrid.com/v3/mail/send", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SENDGRID_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
personalizations: [{ to: [{ email: "[email protected]" }] }],
from: { email: "[email protected]" },
subject: `Сообщение от ${name}`,
content: [{ type: "text/plain", value: `${name} (${email}): ${message}` }],
}),
});
return {
statusCode: 200,
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ ok: true }),
};
};
Функция доступна по /.netlify/functions/contact или через redirect. Например, используя netlify.toml: редирект с /api/contact на /.netlify/functions/contact.
Background Function для отчётов
// netlify/functions/generate-report-background.ts
import type { BackgroundHandler } from "@netlify/functions";
export const handler: BackgroundHandler = async (event) => {
const { reportId } = JSON.parse(event.body || "{}");
// Долгая операция: генерация PDF, обработка данных
const pdf = await generatePDFReport(reportId);
// Сохраняем в S3 и уведомляем пользователя
await uploadToS3(pdf, `reports/${reportId}.pdf`);
await notifyUser(reportId);
};
Конфигурация netlify.toml
[build]
command = "npm run build"
publish = "dist"
functions = "netlify/functions"
[functions]
node_bundler = "esbuild"
included_files = ["templates/**"]
[dev]
command = "npm run dev"
port = 8888
node_bundler = "esbuild" ускоряет сборку и уменьшает размер бандла на 40% по сравнению с zip-архивом.
Переменные окружения
Netlify Dashboard → Site Settings → Environment variables. Для локальной разработки — файл .env:
SENDGRID_API_KEY=SG.xxx
DATABASE_URL=postgresql://...
Процесс работы и объём услуг
Мы выполняем полный цикл разработки serverless-функций:
- Аналитика — определение необходимых функций, их сигнатур и интеграций.
- Проектирование — архитектура, выбор типов функций, оптимизация холодного старта.
- Реализация — написание кода с использованием esbuild для бандлинга.
- Тестирование — локальный запуск через
netlify dev, проверка граничных случаев. - Деплой — настройка автоматического развёртывания через Git.
Что входит в работу
- Код функций с обработкой ошибок и логированием
- Конфигурация
netlify.tomlи редиректов - Настройка переменных окружения
- Тестирование функций локально и в продакшене
- Документация по вызову и развёртыванию
- Поддержка 30 дней после сдачи проекта
Сроки
Базовые функции (форма, вебхук) с настройкой редиректов — 1–2 дня. Сложные интеграции (генерация PDF, внешние API) — от 3 дней.
Закажите разработку serverless-функций для вашего проекта — получите консультацию по архитектуре и деплою. Свяжитесь с нами, чтобы обсудить вашу serverless-архитектуру. Получите консультацию по оптимизации функций под ваш проект.
Официальная документация Netlify Functions: Netlify Functions overview







