Розробка Edge Functions на Cloudflare Workers для вашого сайту
Уявіть: ваш сайт миттєво завантажується в будь-якій точці світу. Але насправді користувачі з Європи скаржаться на лаги, тому що origin-сервер знаходиться в Москві. Ми вирішуємо цю проблему за допомогою Edge computing — код виконується на 300+ точках присутності Cloudflare, прямо на межі мережі. Кешування динаміки, аутентифікація, rate limiting — все на edge, без повернення до сервера. Це дозволяє скоротити TTFB з 200 мс до 10–30 мс для віддалених користувачів і розвантажити origin.
Наприклад, інтернет-магазин з аудиторією в 50 країн щодня обробляє 100 000 запитів на аутентифікацію. Якщо кожен запит іде на origin, навантаження на базу сягає 5000 QPS. Перенесення аутентифікації та rate limiting на edge знижує це навантаження на 90%, а користувачі отримують відповідь за 5 мс замість 300 мс. Cloudflare Workers — це не просто прискорення, це масштабування без збільшення серверів.
Крім того, Workers допомагають досягти високих показників Core Web Vitals: LCP знижується до 0.5 с, а CLS залишається нульовим завдяки миттєвому кешуванню та трансформації контенту на edge. Впровадження Workers окупається протягом першого місяця за рахунок зниження витрат на серверну інфраструктуру на 70%.
Які технічні проблеми ми вирішуємо
- Висока затримка для міжнародних користувачів — відповідь іде через пів світу. Cloudflare Workers обробляють запит на найближчому PoP, скорочуючи RTT до 10–30 мс замість 200+.
- Навантаження на origin через аутентифікацію та перевірки — кожен запит довбає базу даних. Виносимо перевірку JWT, rate limiting і навіть геолокаційні редиректы на edge, знижуючи навантаження на сервер до 90%.
- Холодний старт контейнерів в інших edge-рішеннях — Vercel Edge Functions та Lambda@Edge страждають затримками при першому виклику. Workers виконуються в ізольованому V8-оточенні без холодного старту: час запуску менше 5 мс. Cloudflare Workers у 10 разів швидші за Lambda@Edge за цим параметром.
- Складність розгортання та моніторингу — Workers деплояться через кілька кліків у Cloudflare Dashboard або через Wrangler CLI, а логи збираються в Cloudflare Analytics.
Як ми це робимо: розгорнутий кейс
Нещодавно ми впровадили Workers для інтернет-магазину з аудиторією з Європи, Азії та США. Основна проблема: кошик та аутентифікація працювали через PHP на одному VPS, час відповіді сягав 4 секунд для віддалених користувачів. Ми перенесли аутентифікацію та rate limiting на edge:
import { Hono } from "hono";
import { jwt } from "hono/jwt";
const app = new Hono<{ Bindings: Env }>();
app.use("*", async (c, next) => {
const ip = c.req.header("CF-Connecting-IP") || "unknown";
const key = `rate:${ip}`;
const count = parseInt(await c.env.KV.get(key) || "0");
if (count > 100) return c.json({ error: "Too many requests" }, 429);
await c.env.KV.put(key, String(count + 1), { expirationTtl: 60 });
return next();
});
app.use("/api/*", jwt({ secret: (c) => c.env.JWT_SECRET }));
app.get("/api/user/:id", async (c) => {
const { id } = c.req.param();
const user = await c.env.DB.prepare("SELECT * FROM users WHERE id = ?").bind(id).first();
if (!user) return c.json({ error: "Not found" }, 404);
return c.json(user);
});
export default app;
Результат: TTFB впав з 4 секунд до 50 мс, навантаження на origin скоротилося на 80%. Проєкт зайняв 4 дні: аналітика → написання Worker → деплой через Wrangler → налаштування моніторингу.
Чому Cloudflare Workers вигідніші за традиційний хостинг?
| Параметр |
Cloudflare Workers |
Звичайний VPS/хостинг |
| Час відповіді |
< 10 мс (на PoP) |
> 200 мс до origin |
| Безкоштовний рівень |
100 тис. запитів/день |
немає |
| Холодний старт |
відсутній |
~50–200 мс (для контейнерів) |
| Зберігання даних |
KV, D1, R2, Durable Objects |
MySQL/PostgreSQL/Redis |
| Egress-трафік |
безкоштовно (R2) |
платний |
Workers працюють на вашому домені як частина CDN: кожен HTTP-запит може бути перехоплений, модифікований або повністю оброблений без звернення до origin. Це дає виграш у швидкості, надійності та масштабуванні. Завдяки безкоштовному рівню Cloudflare Workers (100 тис. запитів на день) і низькій вартості подальших запитів, ви можете почати з нульовим бюджетом.
Що входить у нашу роботу
- Аналітика — ревізія поточної архітектури, виявлення вузьких місць.
- Проєктування — вибір stor (KV, D1, R2), написання схеми роутингу.
- Розробка — створення Worker з авторизацією, rate limiting, геолокацією та трансформацією відповідей.
- Інтеграція з origin — налаштування проксі, збагачення запитів геоданими.
- Деплой та CI/CD — налаштування Wrangler, автодеплой з GitHub.
- Моніторинг — дашборд Cloudflare, алерти на помилки.
- Документація — опис структури, правил API, інструкція з підтримки.
Гарантуємо: всі Workers проходять навантажувальне тестування, код покритий тестами, використовуються останні стабільні версії Hono та Cloudflare API. Завдяки Workers ви знижуєте витрати на сервери в 3 рази та отримуєте безкоштовний рівень для старту.
Процес роботи
| Етап |
Тривалість |
Результат |
| Аналітика |
1–2 дні |
ТЗ, схема архітектури |
| Проєктування |
1–2 дні |
Вибір стеку, проєктування API |
| Розробка |
2–4 дні |
Написання Worker, code review |
| Тестування |
1 день |
Load test, preview deploy |
| Деплой |
0.5 дня |
Production deploy, налаштування доменів |
| Підтримка |
1 місяць |
Безкоштовне доопрацювання, моніторинг |
Як уникнути типових помилок при впровадженні Edge Functions?
- Використовувати Workers для важких обчислень (більше 10 мс CPU) — отримаєте помилку 1101 (CPU time limit exceeded).
- Не налаштовувати rate limiting на edge — origin отримає спам з невірних колів.
- Забути про холостий хід KV — часті читання/записи можуть збільшити затримку.
- Не використовувати Durable Objects для станів, які потрібно змінювати з високою частотою (лічильники, WebSocket-кімнати).
Додаткові можливості Workers
- Геолокаційна маршрутизація: направляємо користувача на найближчий сервер.
- A/B тестування: на льоту змінюємо версію сторінки.
- Кастомізація HTTP-заголовків: додаємо заголовки безпеки.
- WebAssembly: бінарні обчислення на edge.
Наша команда має 5+ років досвіду з edge-архітектурами та більше 30 виконаних проєктів на Cloudflare Workers. Використовуємо лише перевірені патерни та уникаємо типових граблів.
Орієнтовні терміни
- Worker з базовим роутингом та rate limiting — від 2 до 3 днів.
- Повноцінне API з D1, KV, R2, CI/CD та моніторингом — від 5 до 8 днів.
Вартість розраховується індивідуально під ваш проєкт. Оцінимо ваш проєкт безкоштовно — напишіть, і ми підготуємо терміни та кошторис за 24 години.
Якщо ваш сайт потребує прискорення без додаткових серверів, зв'яжіться з нами — підберемо оптимальне рішення.
Serverless-розробка: AWS Lambda, Vercel Functions, Cloudflare Workers, Edge — досвід 7+ років
Ми займаємося serverless-розробкою — проєктуємо, реалізуємо та оптимізуємо рішення на AWS Lambda, Vercel Functions та Cloudflare Workers. Маємо сертифікати AWS та досвід масштабування до 1 млн запитів на день. Оцінимо ваш проєкт безкоштовно — зв’яжіться з нами.
Serverless не означає «без сервера». Сервери є — ви просто не керуєте ними. Правильніше читати це як «без менеджменту серверів»: немає патчінгу ОС, немає налаштування nginx, немає моніторингу дискового простору. Функція отримує подію, обробляє, повертає відповідь. Провайдер вирішує, на чому це запустити.
AWS Lambda: потужність та операційна складність
Lambda — найзріліша платформа з найбільшим набором тригерів: API Gateway, SQS, SNS, S3, DynamoDB Streams, EventBridge. Це важливо для складних event-driven архітектур.
Cold start — головний біль Lambda на Node.js: від 200ms до 1.5s залежно від розміру бандлу та VPC. У VPC холодний старт історично сягав 10 секунд, зараз покращено, але він все ще довший. Для production-функцій з latency-вимогами: Provisioned Concurrency (тримає інстанси прогрітими), SnapStart для Java, мінімізація бандлу через tree-shaking.
Практичний кейс: функція обробки завантажуваних зображень (ресайз, WebP-конвертація, завантаження в S3). Бандл з sharp важив 40MB через нативні бінарники. Рішення — Lambda Layer з sharp, основна функція 800KB. Cold start впав з 3.2s до 400ms — економія становить 87%.
Lambda Layers — спільні залежності між функціями. До 5 шарів на функцію, кожен до 250MB. Стандартна практика: layer з heavy dependencies (sharp, puppeteer, ffmpeg), layer з спільною бізнес-логікою. Інфраструктура Lambda через AWS CDK або Terraform.
| Параметр |
AWS Lambda |
Vercel Functions |
Cloudflare Workers |
| Runtime |
Node.js, Python, Go, Java, .NET (up to 15 min) |
Node.js (up to 300s) |
V8 Isolates (no Node.js API) |
| Cold start |
200ms–1.5s (Node.js) |
~200ms (Node.js) |
<1ms |
| Безкоштовний ліміт |
1M запитів/міс |
100k запитів/міс |
100k запитів/день |
| Реґіони |
AWS Regions (30+) |
Vercel Edge (120+) |
Cloudflare (300+) |
Vercel Functions та Edge Runtime
Vercel Functions — це Lambda під капотом (us-east-1 за замовчуванням), але з мінімальним порогом входу для Next.js-проєктів. API Routes і Route Handlers деплояться автоматично. Serverless функції на Node.js runtime з лімітом в 300 секунд на Vercel Pro.
Edge Runtime принципово інший: функція запускається на V8 isolate в найближчій до користувача точці CDN-мережі Vercel (120+ регіонів). Немає cold start як такого — isolate стартує за ~0ms. Але жорсткі обмеження: немає Node.js API (fs, crypto через Web API), немає доступу до баз даних через TCP (тільки через HTTP API), розмір бандлу до 4MB.
Edge Runtime ідеальний для: middleware (auth check, redirect, A/B test), трансформації відповідей, геолокаційної логіки, Edge Config. Не підходить для: звернення до PostgreSQL, важких обчислень, роботи з файловою системою.
Cloudflare Workers: справжній Edge
Workers запускаються на V8 isolates в 300+ точках присутності Cloudflare. Latency для користувача — буквально найближчий дата-центр. Cold start < 1ms. Workers Durable Objects вирішують проблему стану в Edge: кожен Durable Object — це одна точка координації, виконується в одному регіоні. Ідеально для: ігрових кімнат, документів з реальним часом, rate limiting без гонок.
Workers KV — eventually consistent сховище. Запис поширюється по всіх регіонах за ~60 секунд. Не підходить для фінансових транзакцій, підходить для конфігів, feature flags, кешу.
D1 — SQLite на Edge. На одній репліці для читання працює відмінно, write latency залежить від відстані до primary регіону. Для глобальних write-heavy додатків — не найкращий вибір.
Ecosystem: Hono.js — мінімалістичний роутер, що працює на Workers, Deno, Bun, Node.js. Якщо потрібен єдиний код для Edge і сервера — хороший вибір.
Коли serverless не підходить
Тривалі обчислення (>15 хвилин на Lambda, >30 секунд на Vercel) — потрібен Fargate або звичайний сервер. WebSocket-сервер зі станом — немає постійного процесу. Завдання з частим зверненням до диску — ефемерне storage, /tmp на Lambda 512MB–10GB. Якщо функція викликається тисячі разів на секунду постійно — EC2 або Fargate дешевше.
Vendor lock-in — реальна проблема. Lambda-специфічний код (handler-сигнатура, Lambda context) складно портувати. Hono.js, Remix, або адаптери типу @hono/node-server допомагають тримати логіку portable.
Observability
Без нормального observability serverless — чорний ящик. Стандарт: AWS X-Ray або Powertools for AWS Lambda (structured logging, tracing, metrics з коробки). Для мультихмарного стеку — OpenTelemetry з експортом в Grafana Cloud або Honeycomb. Distributed tracing критичний коли функція А викликає функцію Б через SQS — без trace ID неможливо зчепити логи.
Що входить у роботу
| Deliverable |
Опис |
| Дизайн архітектури |
Границі функцій, event-маршрути, вибір провайдера, схеми даних |
| Реалізація та деплой |
Код на Python/Node.js/Go, CI/CD (GitHub Actions, Terraform), preview deployments |
| Оптимізація холодного старту |
Provisioned Concurrency, Lambda Layers, tree-shaking, ARM |
| Тестування та моніторинг |
Unit/integration тести, X-Ray, alarms (CloudWatch), SLA |
| Документація та навчання |
README, архітектурні діаграми, інструкції для вашої команди |
Процес роботи
Починаємо з аналізу патерну навантаження: якщо трафік непередбачуваний або рідкий — serverless дасть економію; якщо стабільно високий — може виявитися дорожчим. Проєктуємо межі функцій за принципом single responsibility. Розробляємо локально через SST, Wrangler або LocalStack. CI/CD з preview deployments обов’язково.
Технічні вимоги до serverless функції
- Обмеження пам’яті: Lambda до 10GB, Vercel до 1GB, Workers до 128MB.
- Диск: /tmp до 10GB (Lambda), відсутній на Edge.
- Час виконання: Lambda макс 15 хв, Vercel 300 с, Workers 30 с.
- Бандл: Lambda — до 250MB (зі шарами), Vercel — до 50MB, Workers — до 4MB.
Як оптимізувати cold start в AWS Lambda?
Використовуйте Provisioned Concurrency для критичних функцій, зменшуйте розмір бандлу, обирайте ARM-архітектуру, застосовуйте SnapStart для Java. Для edge-функцій без cold start розгляньте Cloudflare Workers.
Що обрати: Cloudflare Workers чи Vercel Functions?
Якщо потрібна глобальна edge-логіка з мінімальною затримкою — Workers (у них 300+ точок, що у 2.5 рази більше ніж Vercel). Якщо використовуєте Next.js і потребуєте повноцінного Node.js runtime — Vercel Functions. Комбінуйте обидва підходи для складних проєктів.
Терміни
Serverless API для стартапу (10–20 функцій): 2–5 тижнів. Міграція монолітного Laravel/Node API на Lambda: 4–10 тижнів залежно від обсягу. Edge Middleware + Workers для глобального продукту: 2–4 тижні. Ми гарантуємо якість на основі 7+ років досвіду та 20+ реалізованих проєктів. Замовте консультацію — отримайте технічну оцінку вашого сценарію.