Розробка Serverless Functions для сайту (AWS Lambda)

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка Serverless Functions для сайту (AWS Lambda)
Середній
~3-5 днів
Часті запитання

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

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

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

  • 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

Контактна форма на React-сайті при 2000+ заявок на день почала падати: відповідь приходила через 30 секунд, листи губилися. Старий моноліт на EC2 не справлявся з піками. Замінили його на AWS Lambda — час відповіді впав до 300 мс, вартість обробки однієї форми — частки цента ($0.0002 за запит). Серверлес-архітектура позбавляє від управління серверами: ви фокусуєтеся на коді, а AWS масштабує навантаження. Але холодний старт і робота з базами даних потребують акуратного проєктування. Ми розберемо типові сценарії, покажемо код і дамо готові рішення. За 5 років роботи ми виконали понад 50 проектів на AWS Lambda, гарантуємо якість завдяки сертифікованим інженерам.

Сфери застосування Lambda

Lambda ефективна для асинхронних та епізодичних завдань. Порівняно з класичним сервером на EC2, Lambda масштабується автоматично та коштує у понад 100 разів дешевше при невеликому навантаженні (наприклад, $0.05/міс проти $8/міс).

Критерій AWS Lambda AWS EC2
Управління сервером Не потрібно Повне управління
Масштабування Автоматичне Ручне / автоскейлінг
Холодний старт 100–500 мс Немає
Ціна За виконання За час роботи
Ліміт часу 15 хвилин Безліміт

Підходить: обробка форм зворотного зв'язку, генерація PDF/зображень за запитом, вебхуки від платіжних систем та CRM, ресайз зображень при завантаженні, планувальники завдань (cron через EventBridge), API-проксі для сторонніх сервісів.

Не підходить: довготривалі з'єднання (WebSocket потребує окремого сервісу), завдання довше 15 хвилин, високочастотні операції з БД без connection pooling. У таких випадках Lambda не тільки дорожча, але й повільніша: при 5000 запитів/с EC2 з автоскейлінгом обійдеться дешевше, ніж Provisioned Concurrency.

Чому AWS Lambda вигідніша за традиційний сервер?

З точки зору витрат Lambda виграє при нерівномірному навантаженні. На EC2 ви платите за запущений сервер 24/7, навіть якщо він обробляє запити раз на годину. Lambda оплачується за викликами — економія на простої сягає 90%. AWS Lambda Developer Guide наводить приклад: сайт з 10 000 запитів на день на EC2 t3.micro обійдеться ≈ $8/міс, а Lambda — $0.05 за виконання. При цьому не потрібно налаштовувати автоскейлінг, патчити ОС та стежити за моніторингом. Наші клієнти економлять до 70% на інфраструктурі, переходять на Lambda.

Як Lambda обробляє форму? Приклад коду

Контактна форма на React-сайті відправляє POST-запит на API Gateway, який тригерить Lambda. Функція валідує дані за допомогою Zod і відправляє email через SES. Код:

import { APIGatewayProxyHandler } from "aws-lambda";
import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses";
import { z } from "zod";

const ses = new SESClient({ region: "eu-west-1" });

const ContactSchema = z.object({
  name: z.string().min(2).max(100),
  email: z.string().email(),
  message: z.string().min(10).max(2000),
});

export const handler: APIGatewayProxyHandler = async (event) => {
  const headers = {
    "Access-Control-Allow-Origin": "https://your-site.com",
    "Content-Type": "application/json",
  };

  try {
    const body = JSON.parse(event.body || "{}");
    const data = ContactSchema.parse(body);

    await ses.send(new SendEmailCommand({
      Source: "[email protected]",
      Destination: { ToAddresses: ["[email protected]"] },
      Message: {
        Subject: { Data: `Нове повідомлення від ${data.name}` },
        Body: {
          Text: { Data: `Від: ${data.name} <${data.email}>\n\n${data.message}` }
        }
      }
    }));

    return { statusCode: 200, headers, body: JSON.stringify({ ok: true }) };

  } catch (error) {
    if (error instanceof z.ZodError) {
      return { statusCode: 400, headers, body: JSON.stringify({ errors: error.errors }) };
    }
    console.error(error);
    return { statusCode: 500, headers, body: JSON.stringify({ error: "Internal error" }) };
  }
};

Методи зниження холодного старту

Холодний старт — затримка на ініціалізацію після тривалого простою. На Node.js 20 він становить 200–500 мс, на Python — 100–300 мс. Якщо для вас критичний субсекундний час відповіді, використовуйте один із методів:

Метод Опис Додаткові витрати
Provisioned Concurrency N прогрітих екземплярів $0.015 за екземпляр/год
esbuild + tree-shaking Зменшення розміру бандла Немає
SnapStart (Java) Знімок стану після ініціалізації Немає
Пінг-запити EventBridge раз на 5 хвилин Мізерно

Приклад підготовки клієнтів поза handler (виконується один раз):

const dbClient = new DynamoDBClient({ region: "eu-west-1" });
const sesClient = new SESClient({ region: "eu-west-1" });

export const handler = async (event) => {
  // handler використовує вже ініціалізовані клієнти
};

Типові помилки та їх уникнення

  • Надмірний розмір бандла: включення всіх залежностей без tree-shaking збільшує холодний старт на 200–500 мс.
  • Створення клієнтів всередині handler: кожен виклик створює нове з'єднання з базою — призводить до проблеми N+1.
  • Ігнорування ліміту часу: якщо функція виконується довше таймауту (макс. 15 хв), вона завершується з помилкою.
  • Відсутність обробки помилок: не перехоплені винятки призводять до повторних викликів і витрат.

Як підключити Lambda до бази даних?

Стандартне TCP-з'єднання до PostgreSQL/MySQL у Lambda створює нове з'єднання на кожен виклик — при 1000 RPS база захлинається. Рішення:

Рішення Особливості Ціна
RDS Proxy Пул з'єднань перед RDS +$0.015 за vCPU/год
DynamoDB Нативний serverless, без з'єднань За запитами
PlanetScale / Neon Serverless-БД з HTTP API За використанням

Для великої кількості одночасних викликів RDS Proxy може стати вузьким місцем — у таких випадках переходять на DynamoDB або шардування.

Процес розробки та деплою

  1. Проєктування: визначення тригерів, ролей IAM, таймаутів та пам'яті.
  2. Розробка: написання функції на TypeScript з валідацією та обробкою помилок.
  3. Локальне тестування: запуск через SAM CLI або Docker з емуляцією API Gateway.
  4. Збірка: використання esbuild для бандла (tree-shaking, мініфікація).
  5. Деплой: через AWS SAM (template.yaml) — перший раз sam deploy --guided, потім sam deploy.
  6. Моніторинг: налаштування дашбордів CloudWatch, алертів за помилками та часом виконання.

Ми використовуємо AWS SAM для інфраструктури як код. Приклад template.yaml:

AWSTemplateFormatVersion: "2010-10-09"
Transform: AWS::Serverless-2016-10-31

Globals:
  Function:
    Runtime: nodejs20.x
    Timeout: 10
    MemorySize: 256
    Environment:
      Variables:
        NODE_ENV: production

Resources:
  ContactFormFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: dist/handlers/contact-form.handler
      Events:
        Api:
          Type: HttpApi
          Properties:
            Path: /contact
            Method: POST
      Policies:
        - SESCrudPolicy:
            IdentityName: your-site.com

Команди:

npm run build
sam build
sam deploy --guided
sam deploy

Логування та трейсинг

AWS Lambda Powertools — офіційна бібліотека для структурованого логування, трейсингу через X-Ray та метрик через CloudWatch EMF.

import { Logger } from "@aws-lambda-powertools/logger";
import { Tracer } from "@aws-lambda-powertools/tracer";

const logger = new Logger({ serviceName: "contact-form" });
const tracer = new Tracer({ serviceName: "contact-form" });

export const handler = tracer.captureLambdaHandler(async (event) => {
  logger.addContext(context);
  logger.info("Processing contact form", { email: event.body?.email });
  // ...
});
Детальніше про ціноутворення

Вартість Lambda: $0.20 за 1M запитів + час виконання ($0.0000166667 за кожну 1ms). Для функції з MemorySize 256 MB і часом 300 ms один запит коштує ~$0.00000125. 10 000 запитів на день обійдуться у $0.375 на місяць.

Що входить в роботу

  • Архітектурне проєктування: вибір тригерів, балансування холодного старту
  • Розробка функцій на TypeScript з валідацією та обробкою помилок
  • Налаштування CI/CD через GitHub Actions: збірка, тести, деплой
  • Документація API та опис інфраструктури
  • Моніторинг: дашборди CloudWatch, алерти на помилки та час виконання
  • Навчання команди: code-review, керівництво з подальшої підтримки

Строки

Одна Lambda-функція з деплоєм через SAM — 1–2 дні. Набір з 5–7 функцій з CI/CD та моніторингом — 5–7 днів. Наші інженери мають багаторічний досвід, виконали десятки проєктів різної складності. Точні строки залежать від інтеграцій. Отримайте консультацію з архітектури рішення — підготуємо детальну пропозицію під ключ.

Серверлес архітектура сайту на Lambda дозволяє гнучко масштабуватися. Порівняння Lambda vs EC2 показує, що Lambda виграє за вартістю та простотою обслуговування. Приклади serverless функцій включають обробку форм, генерацію PDF, вебхуки.

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