В продакшені ми часто стикаємося з ситуацією: стандартний сервер не справляється з піковими навантаженнями, а піднімати кластер заради пари ендпоінтів — стрілянина з гармати по горобцях. Cloudflare Workers вирішують цю проблему: код виконується на V8 isolates з холодним стартом менше 1 мс на 300+ edge-вузлах. Безкоштовний тариф покриває 100 000 запитів на добу — цього вистачає для більшості проєктів. Наш досвід впровадження Workers на десятках сайтів показує: відмовостійкість зростає, а вартість інфраструктури знижується на 40-60% порівняно з традиційними рішеннями. Типовий проект обходиться в $500-1500, а економія на хостингу складає до $200 на місяць.
Як Cloudflare Workers забезпечують холодний старт менше 1 мс?
Workers працюють на технології Cloudflare Workers з ізоляцією V8, де кожен Worker запускається в окремому контексті V8. На відміну від контейнерів, V8 isolates не потребують завантаження ОС або runtime — код компілюється та виконується миттєво. Це дає час ініціалізації менше 1 мс, тоді як у AWS Lambda він становить 500-2000 мс через ініціалізацію контейнера. Наприклад, Workers обробляє запити в 100 разів швидше при першому запуску, що критично для API з низькою латентністю. Cloudflare Workers швидші за AWS Lambda у 100 разів при холодному старті, а за Vercel Functions — у 50 разів. Workers забезпечують у 10 разів більше точок присутності, ніж AWS Lambda.
Відмінність від AWS Lambda та Vercel Functions
Workers запускаються в кожному PoP Cloudflare — користувач з Києва отримує відповідь з найближчого вузла, а не з us-east-1. Це принципово для latency-sensitive завдань. Обмеження: Workers використовують Web API, а не Node.js API — fs, child_process, нативні модулі недоступні. Зате немає cold start, як у Lambda (де він може досягати кількох секунд при дефолтних налаштуваннях). Vercel Functions теж не позбавлені затримок — вони покладаються на контейнери. Workers на V8 isolates виграють у швидкості ініціалізації.
Як вибрати між Workers та традиційним бекендом?
Якщо ваш сайт потребує низької затримки для API-запитів, гео-розподілу або інтеграції із зовнішніми сервісами — Workers очевидний вибір. Коли варто залишитися на повноцінному сервері? Якщо потрібні довгі з'єднання до PostgreSQL, робота з великими файлами або складні обчислення на CPU. Для всього іншого Workers — легковажна та дешева альтернатива.
Базовий Worker
// src/index.ts
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === "/api/contact" && request.method === "POST") {
return handleContact(request, env);
}
if (url.pathname === "/api/geo") {
return handleGeo(request);
}
return new Response("Not found", { status: 404 });
},
};
async function handleContact(request: Request, env: Env): Promise<Response> {
const data = await request.json<{ name: string; email: string; message: string }>();
// Відправка через Resend API
const emailResponse = await fetch("https://api.resend.com/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${env.RESEND_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: env.FROM_EMAIL,
to: [env.TEAM_EMAIL],
subject: `Повідомлення від ${data.name}`,
text: `${data.name} (${data.email}): ${data.message}`,
}),
});
if (!emailResponse.ok) {
return Response.json({ error: "Email send failed" }, { status: 500 });
}
return Response.json({ ok: true });
}
// Геолокація із заголовків Cloudflare
function handleGeo(request: Request): Response {
const cf = (request as any).cf;
return Response.json({
country: cf?.country,
city: cf?.city,
timezone: cf?.timezone,
latitude: cf?.latitude,
longitude: cf?.longitude,
});
}
Wrangler та деплой
# wrangler.toml
name = "my-site-api"
main = "src/index.ts"
compatibility_date = "2024-11-01"
[vars]
ENVIRONMENT = "production"
[[routes]]
pattern = "{YOUR_DOMAIN}/api/*"
zone_name = "{YOUR_ZONE}"
Кроки для деплою:
- Встановіть Wrangler:
npm install -g wrangler - Авторизуйтесь:
wrangler login - Налаштуйте
wrangler.tomlз назвою та маршрутами. - Розробляйте локально:
wrangler dev - Деплойте:
wrangler deploy - Додайте секрети:
wrangler secret put FROM_EMAIL,wrangler secret put TEAM_EMAIL,wrangler secret put RESEND_API_KEY
wrangler dev # локальна розробка
wrangler deploy # деплой
Секрети:
wrangler secret put RESEND_API_KEY
wrangler secret put DATABASE_URL
Workers KV та D1: зберігання даних на границі
KV — key-value сховище, eventually consistent. Підходить для кешу, сесій, конфігурації.
// Прив'язка в wrangler.toml
// [[kv_namespaces]]
// binding = "CACHE"
// id = "abc123..."
export default {
async fetch(request: Request, env: Env & { CACHE: KVNamespace }) {
const cacheKey = new URL(request.url).pathname;
const cached = await env.CACHE.get(cacheKey);
if (cached) {
return new Response(cached, {
headers: { "Content-Type": "application/json", "X-Cache": "HIT" }
});
}
const data = await fetchFreshData(request);
await env.CACHE.put(cacheKey, JSON.stringify(data), { expirationTtl: 300 });
return Response.json(data);
}
};
D1 — serverless SQLite-база даних Cloudflare. Підходить для невеликих обсягів даних (до 10 GB).
export default {
async fetch(request: Request, env: Env & { DB: D1Database }) {
const { results } = await env.DB.prepare(
"SELECT * FROM products WHERE category = ? ORDER BY created_at DESC LIMIT 20"
).bind("electronics").all();
return Response.json(results);
}
};
Робота з даними та обмеження
- CPU time: 10 мс (безкоштовно), 30 с (Paid)
- Пам'ять: 128 MB
- Нема Node.js built-ins (
fs,path,crypto— тільки Web Crypto API) - Нема довгоживучих з'єднань до PostgreSQL (використовуйте Hyperdrive або HTTP API)
Чому Hyperdrive вирішує проблему підключення до PostgreSQL?
Hyperdrive проксує з'єднання до зовнішньої PostgreSQL через connection pool на стороні Cloudflare, вирішуючи проблему latency при підключенні до віддаленої БД. Це дозволяє Workers працювати з реляційними базами без затримок на встановлення нового з'єднання.
Порівняння продуктивності Workers vs AWS Lambda vs Vercel Functions
| Параметр | Cloudflare Workers | AWS Lambda | Vercel Functions |
|---|---|---|---|
| Холодний старт | <1 мс | 500-2000 мс | 100-500 мс |
| Гео-розподіл | 300+ PoP | 30+ регіонів | по регіону деплою |
| Макс. CPU | 30 с | 15 хв | 60 с |
| Безкоштовний ліміт | 100k запитів/день | 1M запитів/міс | 100k запитів/міс |
Workers значно виграють у холодному старті та глобальній доступності.
Що входить в роботу
При замовленні розробки Workers ви отримуєте:
- Проектування архітектури та вибір оптимальних сервісів (Workers KV, D1 database, Cloudflare Hyperdrive)
- Реалізацію всіх ендпоінтів з обробкою помилок та тайм-аутів
- CI/CD з GitHub Actions та автоматичний деплой через Wrangler
- Документацію з експлуатації та опис всіх змінних оточення
- Тестування на навантаження до 1000 RPS з подальшою оптимізацією
- Навчання команди роботі з Cloudflare Dashboard та Wrangler CLI
Наша команда має понад 5 років досвіду з Cloudflare Workers, реалізувала 30+ проектів на edge-платформі. Ми сертифіковані Cloudflare Developers. Гарантія 99.9% аптайму.
Строки та вартість
Базовий Worker з роутингом та 3–5 ендпоінтами — від 2 до 3 днів. Інтеграція KV та D1, CI/CD через GitHub Actions — плюс 2 дні. Повне рішення з Hyperdrive та кастомними доменами — до тижня. Вартість базового рішення від $500 під ключ. Пишіть нам — оцінимо ваш проект безкоштовно та запропонуємо рішення під ключ за 2-3 дні.
Бессерверні обчислення з Cloudflare Workers
Розробка Cloudflare Workers — це створення serverless функцій на граничних вузлах. Edge computing для сайту стає простим завдяки Workers KV, D1 database та Cloudflare Hyperdrive. Бессерверні обчислення знижують витрати. Порівняння Workers Lambda показує перевагу Workers. API на Cloudflare працюють швидко. Прискорення сайту edge забезпечується Workers. Wrangler деплой автоматизовано через CI/CD. V8 isolates гарантують ізоляцію.







