) 🕸 CQRS: когда разделение на чтение и запись — не усложнение, а спасение CRUD — это просто. Один и тот же объект, одна модель, одна БД. Всё хорошо, пока проект не вырастает. Проблемы классического CRUD на масштабе: Нагрузка несимметрична: чтения в 100 раз больше, чем записи, но они конкурируют за одни ресурсы. Бизнес-логика сложна: одна операция записи затрагивает 10 таблиц, а для чтения нужны данные из 5 разных агрегатов. Сложные запросы: для отчётов и аналитики нужны JOIN-ы, которые замедляют основной OLTP. 🌌 CQRS (Command Query Responsibility Segregation): Разделяем модель для записи и модель для чтения. Command side: только операции изменения состояния. Без сложных запросов. Query side: только чтение. Оптимизировано под конкретные view. 🔄 Простейшая реализация: Команды пишут в основную БД (3NF, нормализованную). Асинхронно (через Event Bus) данные проецируются в read-only кэш/БД. Запросы идут в read-модель. ⏱️ Trade-offs: Плюсы: Масштабирование чтения и записи н