19. Read Model на событиях: выбор между JOIN, REST, Replica и CQRS
19. Read Model на событиях: выбор между JOIN, REST, Replica и CQRS
В этом видео я разбираю реальный архитектурный вызов: бизнес хочет аналитику по жизненному циклу заказа – время создания, оплаты, отправки уведомления. Данные живут в трёх независимых микросервисах (Order, Payment, Notification) у двух из которых свои базы данных. Как построить аналитику, не нарушая инкапсуляцию и не создавая синхронной связанности? Я пройду через все популярные альтернативы: 🔹 SQL JOIN между базами – почему это антипаттерн 🔹REST-агрегация – почему не масштабируется 🔹Read Replica – почему не решает проблему агрегации 🔹CDC → ClickHouse – когда это оправдано, а когда избыточно 🔹CQRS + Event‑driven Read Model Projection – наш выбор и его цена Я не просто показываю «как сделать CQRS», а объясняю процесс принятия решения: оцениваю стоимость, производительность, надёжность, сложность и поддерживаемость. Что вы узнаете: 🔹Как отличить операционную аналитику от OLAP-хранилища 🔹Почему CQRS – это не «две базы данных», а принцип разделения команд и запросов 🔹Как строить идемпотентные проекции с помощью INSERT ... ON CONFLICT 🔹Как защитить read-модель от старых событий 🔹Как оценивать архитектурные альтернативы по таблице критериев Проект OrderHub доступен на GitHub: 🔗 https://github.com/Oleborn/OrderHub ⏱ Таймкоды: 00:00 – Вступление 02:04 – Исходная система и новая бизнес-задача - бизнес хочет аналитику 04:00 – Доработка существующего кода 25:00 – Проблема распределённых данных: почему JOIN между базами – не решение 29:27 – REST-агрегация и её проблемы 35:16 – Read Replica: что даёт и что не решает 42:01 – Что такое CQRS и Event‑driven Read Model Projection 54:08 – OLTP vs OLAP: фундаментальное различие, CDC → ClickHouse 01:08:13 – Таблица сравнения альтернатив 01:12:08 – Eventual consistency: как строка заполняется постепенно 01:17:30 – Проектирование и создание analytics‑service 01:51:43 – Запуск после поиска ошибок 01:54:21 – Проверка результата: SQL-запросы и дашборд в Grafana 02:01:03 – Алгоритм выбора альтернативы для Read-сценария Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #Java #CQRS #EventDriven #ReadModel #Microservices #Architecture #Kafka #PostgreSQL #EventualConsistency #SoftwareArchitecture #Java #SpringBoot #Debezium #Grafana #DistributedSystems #Analytics #Upsert #Projection