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.