Serverless функції на Cloudflare Workers для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Serverless функції на Cloudflare Workers для сайту
Середній
~2-3 дні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    956
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    947

В продакшені ми часто стикаємося з ситуацією: стандартний сервер не справляється з піковими навантаженнями, а піднімати кластер заради пари ендпоінтів — стрілянина з гармати по горобцях. 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}"

Кроки для деплою:

  1. Встановіть Wrangler: npm install -g wrangler
  2. Авторизуйтесь: wrangler login
  3. Налаштуйте wrangler.toml з назвою та маршрутами.
  4. Розробляйте локально: wrangler dev
  5. Деплойте: wrangler deploy
  6. Додайте секрети: 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 гарантують ізоляцію.

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+ реалізованих проєктів. Замовте консультацію — отримайте технічну оцінку вашого сценарію.