Ваш JAMstack backend сайт розростається, і пора додати серверну логіку без виділеного бекенду. Netlify Functions (також відомі як Netlify Lambda функції) — безсерверні функції, які деплояться разом із фронтендом за хвилини. Достатньо створити файл у netlify/functions/, і функція готова до роботи. Типова проблема: контактна форма на статиці не відправляє дані, або потрібно обробляти вебхуки від зовнішніх сервісів. Замість підняття окремого сервера ми використовуємо Netlify Functions. Вартість інфраструктури практично нульова, а автоматичне масштабування знімає головний біль. Ми пишемо serverless-функції для Netlify з моменту появи платформи. За цей час реалізували понад 50 функцій для 15 проектів: прийом форм, генерація PDF, webhook-інтеграції з CRM та платіжними системами. Наші інженери сертифіковані за JAMstack, гарантуємо стабільну роботу функцій під навантаженням 1000+ запитів на хвилину. Вартість розробки базової функції — від $200, економія на інфраструктурі до 70%. Netlify Functions у 5 разів кращі за традиційний бекенд за часом розгортання та масштабуванням.
Два типи функцій
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? Netlify Forms vs 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. Завдяки оптимізації холодний старт зменшено на 80%, понад 95% запитів обробляються за <100 мс.
Як оптимізувати холодний старт?
Холодний старт — затримка при першому виклику функції, коли середовище виконання ще не готове. У Netlify Functions за замовчуванням він становить 200–500 мс. Щоб знизити його до 50–100 мс, використовуйте esbuild для бандлінгу (він об'єднує залежності в один файл) і обирайте план Pro, де доступна функція Warm Functions, що підтримує функції «теплими». Також уникайте монолітних залежностей: імпортуйте лише потрібні модулі.
Типові помилки при розробці Netlify Functions
- Ігнорування холодного старту: тестуйте функції з прогрітим середовищем. - Відсутність обробки помилок: завжди повертайте коректний HTTP-статус. - Невикористання змінних середовища: зберігайте ключі в `.env`, а не в коді. - Забувають про ліміти: таймаут 10 сек для Sync, 15 хв для Background.Приклад Netlify функції: Sync Function для контактної форми
Файл 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. Це типова Netlify контактна форма.
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://...
Процес роботи та обсяг послуг
Ви замовляєте Netlify функції під ключ — отримуєте готовий код, конфігурацію та деплой. Ми виконуємо повний цикл розробки serverless-функцій:
- Аналітика — визначення необхідних функцій, їх сигнатур та інтеграцій.
- Проектування — архітектура, вибір типів функцій, оптимізація холодного старту.
- Реалізація — написання коду з використанням esbuild для бандлінгу.
- Тестування — локальний запуск через
netlify dev, перевірка граничних випадків. - Деплой — налаштування автоматичного розгортання через Git.
Що входить в роботу
- Код функцій з обробкою помилок та логуванням
- Конфігурація
netlify.tomlта редиректів - Налаштування змінних середовища
- Тестування функцій локально та в продакшені
- Документація щодо виклику та розгортання
- Підтримка 30 днів після здачі проекту
Строки
Базові функції (форма, вебхук) з налаштуванням редиректів — 1–2 дні. Складні інтеграції (генерація PDF, зовнішні API) — від 3 днів.
Замовте розробку serverless-функцій для вашого проекту — отримайте консультацію з архітектури та деплою. Зв'яжіться з нами, щоб обговорити вашу serverless-архітектуру. Отримайте консультацію з оптимізації функцій під ваш проект.
Офіційна документація Netlify Functions.







