advanced
Serverless
Managed functions или контейнеры для снижения владения серверами с учётом cold start, лимитов, observability и привязки к вендору.
Serverless platforms (Lambda, Cloud Functions, Cloud Run, Azure Functions, Workers) выполняют код без управления серверами — биллинг часто от invocations, duration и memory. FullStack JS использует их для webhooks, cron, thumbnails и BFF, а long-lived WebSocket или тяжёлый CPU оставляет на containers или VM.
| Фактор | Следствие | |--------|-----------| | Cold start | Маленькие bundles; provisioned concurrency при нужде | | Timeout | Длинные jobs — в очереди | | State | Внешний DB, cache или object storage | | Observability | Structured logs, traces, метрики cold start |
Сборка через esbuild или аналог; не тащите весь `node_modules`, если хватит minimal handler. Config и secrets — из managers, не из env в репозитории.
На интервью: когда serverless лучше containers, смягчение cold start, trade-offs Lambda в VPC, local dev parity и vendor limits (payload, concurrency).
Типовые ошибки: 15-минутные batch jobs в functions; connection на invocation к Postgres; гигантские dependencies; полный Node API на edge runtime.
Компромисс — простота ops и elastic scale против непредсказуемой latency, лимитов execution и platform coupling.
Чеклист:
- Подбор memory после profiling duration cost.
- Очереди для работы beyond timeout budget.
- Shared nothing; session и cache снаружи.
- Cold starts на staging с реалистичными bundles.