# Что общего и в чем разница

## Что общего

1. **Цель:** Обе созданы для построения отказоустойчивых, масштабируемых систем обработки данных (data processing) .
2. **Неизменяемость:** Обе требуют хранения исходных данных в неизменяемом виде (как в Datalake), чтобы иметь возможность пересчета .
3. **Распределенность:** Обе рассчитаны на горизонтальное масштабирование.

## В чем разница

| Характеристика       | Lambda Architecture                                                           | Kappa Architecture                                                               |
| -------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **Базовый принцип**  | Разделение на Batch (точность) и Speed (скорость) .                           | Унификация: всё есть поток .                                                     |
| **Количество логик** | **Две кодовые базы** (для batch и streaming), которые нужно синхронизировать. | **Одна кодовая база** (только стриминг).                                         |
| **Сложность**        | **Высокая.** Сложно разрабатывать, тестировать и поддерживать .               | **Средняя/Низкая.** Проще в поддержке .                                          |
| **Пересчет данных**  | Выполняется Batch слоем (запуск отдельной задачи по пересчету всей истории).  | Выполняется перезапуском потокового движка с воспроизведением лога (replay) .    |
| **Ресурсы**          | **Высокие.** Две параллельные инфраструктуры работают постоянно.              | **Оптимальные.** Одна инфраструктура, но мощный движок для обработки состояния . |
| **Задержка выдачи**  | Низкая (за счет Speed), но сложность объединения.                             | Низкая (единый конвейер).                                                        |

## Какую архитектуру выбрать?

- **Выбирайте Lambda**, если:
  - У вас унаследованная инфраструктура с мощным Hadoop-кластером, от которого нельзя отказаться.
  - Вам нужны сложные ETL-процедуры, которые невозможно эффективно выполнить в потоке (например, тяжелые joins терабайтных исторических таблиц) .
  - Требования к точности исторических данных настолько высоки, что вам психологически спокойнее пересчитывать всё "по-старинке" раз в сутки, имея полный срез данных.
- **Выбирайте Kappa**, если:
  - Вы строите новую систему с нуля (Greenfield project) .
  - Ваш бизнес требует реакции в реальном времени (секунды/минуты), а не часы.
  - Вы хотите упростить жизнь команде разработки (одна кодовая база) .
  - Ваши данные поступают как непрерывный поток (логи, события IoT, транзакции).
