System Design Space

    Глава 140

    Обновлено: 15 февраля 2026 г. в 06:44

    Serverless Patterns

    Прогресс части0/17

    Как проектировать serverless-системы: event-driven flow, cold starts, state management, идемпотентность и cost/latency trade-offs.

    Контекст

    Cloud Native Overview

    Serverless - это один из operating-моделей cloud-native архитектуры, а не отдельная магия.

    Открыть главу

    Serverless patterns помогают ускорить delivery и снять часть эксплуатационной нагрузки, но переносят сложность в event contracts, observability и cost-контроль. Надёжный дизайн строится вокруг асинхронности, идемпотентности и управляемых retry-политик.

    Когда serverless уместен

    • Нерегулярная или burst-нагрузка, где важна оплата за фактическое потребление.
    • Асинхронные workflow и event-driven integration (очереди, webhooks, stream-события).
    • Быстрый запуск продукта без отдельной команды эксплуатации платформы.
    • Автоматизация вокруг storage, messaging, cron/schedule и lightweight API endpoints.

    Ключевые паттерны

    Async first

    Отделяйте прием запросов от тяжелой обработки через queue/topic. Это гасит пики и повышает устойчивость к spikes.

    Idempotent handlers

    Каждая функция должна безопасно обрабатывать повторные события (at-least-once delivery - дефолт во многих managed сервисах).

    Function-per-capability

    Делите логику по bounded context, а не в монолитные lambdas. Так легче масштабировать, тестировать и деплоить.

    State externalization

    Не храните критичное состояние в памяти функции. Используйте managed DB/cache/object storage и versioned schemas.

    FinOps

    Cost Optimization & FinOps

    Экономика serverless должна оцениваться на фактическом production-трафике, а не только на ожиданиях.

    Открыть главу

    Риски и как их закрывать

    Cold starts

    Планируйте latency budget, используйте provisioned concurrency/warmer-подходы и минимизируйте init path.

    Hidden coupling через события

    Вводите event contracts, schema versioning и observability по end-to-end pipeline.

    Timeout и retry storms

    Устанавливайте explicit timeouts, DLQ/retry policy и retry budget на уровне каждого consumer.

    Рост стоимости при высокой постоянной нагрузке

    Сравнивайте unit economics serverless vs containers/VM на production-профиле нагрузки.

    Практический чеклист

    • Определены latency/SLO границы для sync API и async processing отдельно.
    • Все handlers идемпотентны и поддерживают replay без дублирования побочных эффектов.
    • Есть DLQ/parking lot и операционный runbook для зависших/плохих сообщений.
    • Наблюдаемость покрывает trace через API -> queue -> function -> storage.
    • Регулярно пересчитывается экономическая модель на фактическом трафике.

    Частый anti-pattern: переносить синхронный монолит в single function без декомпозиции и без queue-based backpressure.

    Связанные главы

    References