Платіть лише за те, що використовуєте, масштабуйтеся до нуля, коли не використовуєте, і повністю припиніть керувати серверами — але знайте, коли економічна доцільність припиняє працювати.

Ваша програма має змінний трафік — тихий вночі, піки в робочі години та непередбачувані сплески від маркетингових кампаній або сезонних подій. Ви платите за сервери, які простоюють 70% часу. Або ви створюєте новий продукт і не бажаєте інвестувати в забезпечення інфраструктури, планування потужностей та чергування до того, як перевірили відповідність продукту ринку. Serverless надає ціноутворення за запит, автоматичне масштабування та нульове керування інфраструктурою — але лише тоді, коли характеристики робочого навантаження відповідають вимогам.
Explore more design patterns and system architectures
Наші архітектори можуть допомогти вам проектувати та будувати системи, використовуючи цей шаблон для ваших конкретних вимог.
Зв'яжіться з намиАрхітектура Serverless-first будує програми повністю на керованих обчислювальних сервісах з масштабуванням до нуля (Lambda, Cloud Functions, Vercel Functions), підключених керованими сервісами подій (EventBridge, SQS, Step Functions). Немає серверів для оновлення, кластерів для зміни розміру, потужностей для планування. Функції виконуються у відповідь на події (HTTP-запити, повідомлення черг, тригери розкладу, зміни бази даних) і автоматично масштабуються від нуля до тисяч одночасних екземплярів. Цей шаблон поширюється на serverless-бази даних (DynamoDB, Neon, PlanetScale), serverless-черги (SQS) та serverless-оркестрацію (Step Functions, Temporal Cloud).
Архітектура за своєю природою є керованою подіями. API Gateway (AWS API Gateway, Vercel) маршрутизує HTTP-запити до окремих функцій. Джерела подій (черги SQS, правила EventBridge, сповіщення S3, потоки DynamoDB) асинхронно запускають функції. Step Functions або Temporal оркеструють багатоетапні робочі процеси, де кожен крок є функцією з вбудованими механізмами повторного виконання, таймауту та обробки помилок. Serverless-бази даних (DynamoDB для ключ-значення, Neon/PlanetScale для реляційних даних) забезпечують зберігання без керування потужностями. Шаблон strangler fig дозволяє поступову міграцію з існуючих монолітів.
| Рівень | Технології |
|---|---|
| Обчислення | AWS Lambda, Vercel Functions (Fluid Compute), Google Cloud Functions, Cloudflare Workers |
| API | API Gateway (REST/WebSocket), Vercel, AppSync (GraphQL) |
| Оркестрація | AWS Step Functions, Temporal Cloud, Vercel Workflow DevKit |
| Дані | DynamoDB, Neon Postgres, PlanetScale, Upstash Redis, S3 |
| Події | EventBridge, SQS, SNS, Vercel Queues |
| Спостережуваність | CloudWatch, Datadog (serverless monitoring), Lumigo, X-Ray |
| Використовуйте, коли | Уникайте, коли |
|---|---|
| Трафік змінний зі значними періодами простою (масштабування до нуля економить гроші) | Трафік стабільний і високооб'ємний — зарезервовані інстанси на 50-70% дешевші при сталому навантаженні |
| Ви хочете нульового керування інфраструктурою та операційних витрат | Вам потрібні постійні з'єднання (сервери WebSocket, пули з'єднань баз даних) — хоча Vercel це обробляє |
| Додаток природно розкладається на керовані подіями функції | Робоче навантаження вимагає > 15 хвилин безперервного виконання на запит |
| Ви поступово мігруєте з моноліту та бажаєте поетапного розгортання по кінцевих точках | Команда не знайома з розподіленими системами — serverless вносить складність у налагодження розподілених систем |
MW розглядає serverless як економічне рішення, а не релігійне. Ми моделюємо вартість serverless проти контейнерів проти зарезервованих інстансів для вашого фактичного шаблону трафіку (а не теоретичного) і рекомендуємо варіант, який мінімізує загальну вартість володіння, включаючи час інженерів на операції. Наші serverless-архітектури включають атрибуцію витрат за функцію (позначення кожного виклику функцією, яка його ініціювала), моніторинг холодного старту з оповіщеннями, коли P99 перевищує порогові значення, та покрокові плани міграції, які переміщують одну кінцеву точку за спринт. Ми мігрували моноліти на serverless для медіакомпаній, SaaS-продуктів та платформ електронної комерції — і в двох випадках ми перемістили частини назад до контейнерів, коли змінилися характеристики робочого навантаження.
Безпека – це не функція, яку додають після запуску. Це архітектурна властивість — система або була розроблена з її урахуванням, або ні.
Serverless-first погано підходить для довготривалих процесів, що перевищують 15 хвилин, навантажень, що вимагають постійних WebSocket з'єднань, застосунків зі стабільним трафіком високої пропускної здатності, де зарезервована потужність дешевша, і систем, що потребують низькорівневої конфігурації OS або мережі. MicrocosmWorks оцінює кожне навантаження щодо цих обмежень під час проектування архітектури та рекомендує гібридні підходи, де serverless обробляє API кінцеві точки та обробку подій, тоді як контейнери або VMs виконують навантаження, що потребують постійних обчислень. Цей прагматичний підхід дозволяє уникнути поширеної помилки примусового інтегрування кожного компонента в serverless, коли він не підходить.
MicrocosmWorks зменшує «холодні старти» Lambda за допомогою підготовленої одночасності для критичних кінцевих точок, оптимізації пакетів функцій для скорочення часу ініціалізації та стратегічного використання Lambda SnapStart для робочих навантажень Java, що скорочує «холодні старти» з секунд до мілісекунд. Ми також проєктуємо застосунки так, що чутливі до затримки шляхи використовують легковагові середовища виконання, такі як Node.js або Python, з мінімальними залежностями, утримуючи «холодні старти» нижче 200 мс навіть без підготовленої одночасності. Для кінцевих точок, де навіть така затримка є неприйнятною, ми використовуємо Lambda@Edge або CloudFront Functions для відповідей менш ніж 10 мс.
MicrocosmWorks налаштовує локальні середовища розробки, використовуючи такі інструменти, як SST (Serverless Stack), LocalStack або офлайн-режим Serverless Framework, які емулюють хмарні сервіси на машині розробника з майже виробничою точністю. Ми реалізуємо набори інтеграційних тестів, які запускаються в тимчасових хмарних середовищах, що створюються для кожного pull request, тому розробники можуть перевіряти роботу проти реальних сервісів AWS без спільного використання staging-середовища. Цей подвійний підхід забезпечує швидкі локальні ітераційні цикли для розробки, водночас виявляючи специфічні для хмари проблеми до того, як код потрапить у продакшн.
MicrocosmWorks виявила, що безсерверні рішення значно дешевші для застосунків зі змінними або піковими схемами трафіку — часто на 70-90% дешевше, ніж еквівалентні постійно активні розгортання контейнерів — але перевага у вартості зменшується при стабільній пропускній здатності понад 10-20 мільйонів викликів на місяць. Ми створюємо моделі прогнозування витрат під час проєктування архітектури, які порівнюють ціноутворення безсерверних рішень за виклик із зарезервованою потужністю контейнерів для ваших конкретних схем трафіку, включаючи приховані витрати, такі як плата за API Gateway та комісії за передачу даних. Наша служба оптимізації, доступна за консультаційними тарифами $10-$35/год, регулярно переглядає рахунки за безсерверні послуги для виявлення марнотратства через надмірно виділену пам'ять, надмірну тривалість функцій або непотрібне використання API Gateway.
MicrocosmWorks використовує проксі-сервери для пулінгу з'єднань, такі як Amazon RDS Proxy або PgBouncer, розгорнуті як постійний шар між функціями Lambda та базою даних, що мультиплексує тисячі з'єднань Lambda в керований пул фактичних з'єднань з базою даних. Ми також розробляємо бессерверні програми, щоб віддавати перевагу DynamoDB або іншим безз'єднаннєвим базам даних для робочих навантажень з високою паралельністю, де пулінг з'єднань все одно створював би вузькі місця. Для програм, які повинні використовувати реляційні бази даних, ми впроваджуємо ліміти масштабування, що враховують з'єднання, які обмежують одночасні виклики Lambda відповідно до ємності з'єднань бази даних.