System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 03:00

Kappa Architecture: stream-first альтернатива Lambda

hard

Единый потоковый контур без отдельного batch layer: immutable log, materialized views, replay/backfill и сравнение с Lambda.

Kappa интересна там, где команда устала платить за дублирование batch и speed layer и готова сделать immutable log центром всей архитектуры.

На практике эта глава помогает понять, когда stream-only контур действительно упрощает систему, а когда цена replay, retention и долговечности логов оказывается выше, чем выигрыш от отказа от Lambda-подхода.

В интервью и архитектурных разборах она особенно полезна, когда нужно объяснить, почему batch-слой убрали, какие сложности исчезли и какие требования к log storage, backfill и materialized views появились взамен.

Практическая польза главы

Практика проектирования

Помогает спроектировать stream-only контур без дублирования batch и stream логики.

Качество решений

Дает метод выбора Kappa для доменов, где replay и near-real-time критичнее batch-стоимости.

Interview-аргументация

Позволяет объяснить, как в Kappa закрываются backfill, bootstrap и historical recompute.

Риски и компромиссы

Показывает цену подхода: требования к retention, storage и долговечности логов.

Связанная книга

Big Data (Nathan Marz)

Базовая формулировка Lambda Architecture и контекст, из которого выросла Kappa.

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

Kappa Architecture - это stream-first подход к обработке данных, в котором основной вычислительный контур един: события пишутся в immutable log, а все представления строятся потоковой обработкой и материализуются в целевые хранилища.

Почему появилась Kappa

Один контур вместо двух

Lambda требует поддерживать два пути вычислений (batch и speed), что усложняет разработку и эксплуатацию.

Replay как штатный механизм

Пересчет выполняется переигровкой событий из лога тем же кодом, который обслуживает realtime.

Stream-native платформа

Современные стриминговые платформы позволяют строить устойчивые stateful пайплайны без отдельного batch-стека.

Базовый поток Kappa

Producersapps, services, CDCImmutable LogKafka / Pulsar / Redpandapartitioned event streamStream Processingenrich, join, aggregatesame code for online + replayServing DBlow-latency readsOLAP ViewanalyticsSearch/Indexspecialized queryReplay / Backfill Modeset offsets/timestampand re-run pipelineOne processing model for online and historical datano separate batch layerpublish eventsconsume streamreplay

В Kappa нет отдельного batch layer: один и тот же stream pipeline обрабатывает и живой поток, и исторический replay.

Lambda vs Kappa

КритерийLambdaKappa
Compute modelBatch + Speed + Serving layers.Single stream pipeline + materialized views.
Code pathsДва отдельных контура вычислений (batch и realtime).Один контур обработки для online и replay сценариев.
ReprocessingЧасто через batch-recompute всего датасета.Replay из immutable log через тот же stream pipeline.
LatencyНизкая через speed layer + eventual merge с batch.Низкая, если stream processor и state store справляются с нагрузкой.
Operational complexityВыше из-за двух стеков и согласования семантики.Ниже по количеству контуров, но выше требования к stream stack.
Best fitКогда batch/ETL и stream миры уже сильны и разделены.Когда платформа строится вокруг событийного лога (Kafka/Pulsar).

Как внедряют Kappa на практике

  1. Сделайте event log источником истины: immutable события с versioned схемами.
  2. Перенесите ключевые materialized views в stream processing контур.
  3. Добавьте replay/backfill pipeline: переигровка событий должна быть штатной операцией.
  4. Отделите stateful processing от serving API через четкие контракты данных.
  5. Зафиксируйте SLA по late events, ordering и exactly-once/at-least-once семантике.

Когда выбирать и на что смотреть

Kappa подходит, если

  • Основные доменные данные уже генерируются как события.
  • Нужна единая логика для realtime и для исторического пересчета.
  • Команда готова эксплуатировать stream-first стек и stateful processors.

Зоны риска

  • Некачественные event-схемы и отсутствие schema governance.
  • Слишком тяжелые join/window вычисления без контроля state size.
  • Недооценка стоимости replay: CPU, storage I/O, backpressure.

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

Чтобы отмечать прохождение, включи трекинг в Настройки