Домен
Архитектура и проектирование
Профиль навыка
Command Query Responsibility Segregation: read/write models, eventual consistency
Ролей
10
где встречается этот навык
Грейдов
5
сформированная дорожка роста
Обязательных требований
29
ещё 19 — необязательные
Архитектура и проектирование
Event-Driven архитектура
17.03.2026
Выберите текущий грейд и сравните ожидания. Карточки ниже покажут, что нужно закрыть для следующего уровня.
Таблица показывает, как меняется глубина владения навыком от Junior до Principal.
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Понимает CQRS в .NET экосистеме: знает MediatR для command/query разделения, различает IRequest и INotification. Способен добавить новый query handler с использованием существующих паттернов проекта. | |
| Backend Developer (Elixir) | Понимает CQRS в Elixir: знает Commanded framework, понимает как GenServer и process model Elixir naturally поддерживают CQRS. Способен работать с существующим Commanded-based проектом, добавляя простые command handlers. | |
| Backend Developer (Go) | Понимает принцип CQRS и его реализацию в Go: знает как структурировать код с разделёнными command и query обработчиками, использует разные структуры для чтения и записи. Способен добавить новый query handler по образцу существующих. | |
| Backend Developer (Java/Kotlin) | Понимает CQRS в контексте Java/Spring: знает концепцию разделения Command и Query моделей, различает CommandHandler и QueryHandler. Способен работать с проектами на Axon Framework или Spring CQRS-шаблонах на уровне простых изменений. | |
| Backend Developer (Node.js) | Понимает CQRS в контексте Node.js: знает как разделить read и write endpoints, понимает command/query handlers pattern. Способен работать с NestJS CQRS module на уровне простых command и query handlers. | |
| Backend Developer (PHP) | Понимает принцип CQRS в PHP: знает разницу между command и query операциями, умеет работать с проектами где используется command bus (Tactician, Symfony Messenger). Понимает зачем разделять запросы на чтение и запись. | |
| Backend Developer (Python) | Понимает концепцию разделения моделей чтения и записи: знает зачем нужен CQRS, разницу между command и query. Способен работать с кодовой базой где read и write модели разделены, вносить простые изменения в существующие handlers. | |
| Backend Developer (Rust) | Понимает CQRS в контексте Rust: знает как trait system позволяет чётко разделить command и query interfaces. Способен реализовать простой command/query handler используя enum dispatch и trait objects. | |
| Backend Developer (Scala) | Понимает CQRS в Scala-экосистеме: знает Akka Persistence для event sourcing, различает Command и Event в typed actor model. Способен работать с существующим Akka-based CQRS кодом на уровне простых изменений. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Реализует CQRS в .NET проектах: использует MediatR с FluentValidation для command validation, создает отдельные Dapper-based read repositories от EF Core write repositories, настраивает pipeline behaviors для cross-cutting concerns. Применяет Clean Architecture с CQRS. |
| Backend Developer (Elixir) | Обязателен | Реализует CQRS в Elixir: использует Commanded для aggregates и process managers, настраивает EventStore для event persistence, создает read projections через Commanded.Projections.Ecto. Применяет Elixir pattern matching для event handling и validation. |
| Backend Developer (Go) | Обязателен | Реализует CQRS в Go-проектах: создает отдельные пакеты для commands и queries, использует interface-based dispatch для command/query bus, проектирует read-optimized структуры (denormalized views) отдельно от write models. Применяет Go channels для internal event propagation между моделями. |
| Backend Developer (Java/Kotlin) | Обязателен | Реализует CQRS в Java-проектах: использует Axon Framework для command/query separation, настраивает event handlers для обновления read models, применяет Spring Data для read-optimized repositories. Настраивает saga для координации распределённых команд. |
| Backend Developer (Node.js) | Обязателен | Реализует CQRS в Node.js проектах: использует NestJS CQRS или custom implementation с TypeScript, создает отдельные read models через Prisma/TypeORM, настраивает event handlers для синхронизации. Применяет Repository pattern с разными реализациями для command и query сторон. |
| Backend Developer (PHP) | Обязателен | Реализует CQRS в PHP-проектах: использует Symfony Messenger или Ecotone для command/query bus, создает отдельные Doctrine read models (QueryBuilder + DTO) от write models (Entity + Repository). Настраивает event handlers для синхронизации read моделей. |
| Backend Developer (Python) | Обязателен | Реализует CQRS в Python-проектах: разделяет command и query handlers через mediatr-подобные библиотеки, проектирует отдельные read-модели (денормализованные view таблицы или материализованные представления). Обеспечивает eventual consistency между write и read сторонами. |
| Backend Developer (Rust) | Обязателен | Реализует CQRS в Rust-проектах: создает отдельные command и query modules с typed handlers, использует sqlx/SeaORM для разных read/write models, применяет tokio channels для event propagation. Обеспечивает compile-time гарантии через generic constraints на command/query types. |
| Backend Developer (Scala) | Обязателен | Реализует CQRS в Scala: использует Akka Typed Persistence для event sourced aggregates, настраивает Akka Projection для read models, применяет ZIO + Tapir для typed command/query API. Реализует domain events с sealed trait hierarchies для exhaustive matching. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Проектирует CQRS-архитектуру для .NET микросервисов: интегрирует с Marten или EventStoreDB для event sourcing, реализует projections через subscription processors, настраивает разные read stores (SQL Server for reports, Redis for real-time). Обеспечивает testability через ArchUnit tests для CQRS boundaries. |
| Backend Developer (Elixir) | Обязателен | Проектирует CQRS-архитектуру для Elixir-систем: настраивает multiple read models через Commanded projections, реализует event upcasting для schema evolution, оптимизирует aggregate loading через snapshot strategy. Интегрирует CQRS с Phoenix LiveView для real-time updates. |
| Backend Developer (Go) | Обязателен | Проектирует CQRS-архитектуру для Go-микросервисов: реализует event-driven проекции через Watermill или custom event bus, настраивает async projection rebuilds с checkpoint tracking, обеспечивает idempotency проекций. Оптимизирует read models для специфических query patterns с materialized views. |
| Backend Developer (Java/Kotlin) | Обязателен | Проектирует CQRS-архитектуру для Java-микросервисов: выбирает между Axon Framework и Eventuate, реализует event sourcing с snapshot optimization, настраивает parallel projections для разных read stores (PostgreSQL, Elasticsearch, Redis). Обеспечивает consistency через idempotent event handlers. |
| Backend Developer (Node.js) | Обязателен | Проектирует CQRS-архитектуру для Node.js: интегрирует с EventStoreDB или custom event store, реализует projection rebuilds через event replay, настраивает multiple read stores для разных query patterns. Обеспечивает type safety через TypeScript generics для command/query/event types. |
| Backend Developer (PHP) | Обязателен | Проектирует CQRS для PHP-систем: внедряет Ecotone Framework для full CQRS/ES, реализует async projections через RabbitMQ, настраивает read stores (Elasticsearch, Redis) отдельно от write database. Обеспечивает testability через in-memory event store для интеграционных тестов. |
| Backend Developer (Python) | Обязателен | Проектирует CQRS-архитектуру для Python-сервисов: определяет границы применимости паттерна, выбирает стратегию синхронизации read models (sync vs async projections), реализует event-driven проекции через Kafka/RabbitMQ. Интегрирует CQRS с event sourcing для полной аудитируемости изменений. |
| Backend Developer (Rust) | Обязателен | Проектирует CQRS для high-performance Rust-систем: реализует event sourcing с custom event store, оптимизирует projections через zero-copy десериализацию и parallel processing. Проектирует snapshot strategy для агрегатов и обеспечивает idempotent event handling. |
| Backend Developer (Scala) | Обязателен | Проектирует CQRS-архитектуру для Scala-микросервисов: настраивает Akka Cluster Sharding для distributed aggregates, реализует multiple projections (Slick, Elasticsearch, Cassandra), оптимизирует event journal через snapshot strategy и event deletion. Интегрирует с Kafka для cross-service event propagation. |
| Solutions Architect | Обязателен | Проектирует архитектуру систем с CQRS. Принимает архитектурные решения (ADR). Оценивает нефункциональные требования. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Обязателен | Стандартизирует CQRS в .NET организации: выбирает между MediatR, Wolverine и custom implementations, создает NuGet-пакеты для стандартного CQRS setup, проектирует distributed CQRS через MassTransit. Определяет архитектурные guidelines и обучает команды DDD + CQRS + ES. |
| Backend Developer (Elixir) | Обязателен | Стандартизирует CQRS в Elixir-экосистеме: определяет architectural boundaries для bounded contexts, проектирует inter-aggregate communication через domain events, создает testing utilities для aggregate и projection verification. Обучает команды DDD + CQRS + ES на Elixir. |
| Backend Developer (Go) | Обязателен | Определяет CQRS-стратегию для Go-платформы: стандартизирует patterns для command validation и authorization, проектирует multi-projection architecture для разных read-оптимизированных представлений. Создает internal framework для CQRS с стандартизированным error handling и observability. |
| Backend Developer (Java/Kotlin) | Обязателен | Стандартизирует CQRS в Java-экосистеме компании: определяет когда применять full CQRS vs simplified read/write separation, проектирует инфраструктуру для event store (Axon Server vs EventStoreDB vs custom), стандартизирует testing strategy для CQRS компонентов. Обучает команды DDD + CQRS. |
| Backend Developer (Node.js) | Обязателен | Стандартизирует CQRS в Node.js экосистеме: создает internal library для CQRS с middleware support, проектирует event catalog с versioning, определяет testing patterns для aggregates и projections. Внедряет distributed CQRS через message broker для cross-service consistency. |
| Backend Developer (PHP) | Стандартизирует CQRS в PHP-экосистеме: определяет architectural decision records для CQRS adoption, проектирует стратегию миграции существующего CRUD-кода на CQRS, создает внутренние Composer-пакеты для стандартизации. Обучает PHP-команды DDD-подходам с CQRS. | |
| Backend Developer (Python) | Обязателен | Определяет стратегию применения CQRS в организации: стандартизирует подходы к разделению read/write, проектирует infrastructure для projection rebuilds, внедряет мониторинг consistency lag между моделями. Обучает команды когда CQRS оправдан и как избежать over-engineering. |
| Backend Developer (Rust) | Обязателен | Определяет CQRS-архитектуру для Rust-платформы: создает CQRS framework с derive macros для автоматической генерации command/query handlers, проектирует event schema management с serde и schema validation. Стандартизирует testing через property-based tests для aggregates. |
| Backend Developer (Scala) | Обязателен | Стандартизирует CQRS в Scala-экосистеме: выбирает между Akka Persistence и ZIO-based solutions (zio-entity), проектирует multi-bounded context architecture, создает abstractions для testable CQRS. Определяет migration strategy от Akka Classic к Akka Typed для CQRS модулей. |
| Solutions Architect | Обязателен | Определяет архитектурную стратегию продукта с CQRS. Формирует architecture guidelines. Проводит architecture review. |
| Роль | Обязательность | Описание |
|---|---|---|
| Backend Developer (C#/.NET) | Формирует enterprise CQRS стратегию для .NET: проектирует платформу для self-service CQRS модулей с event store, определяет governance для event schema evolution и cross-domain event contracts. Влияет на архитектуру организации через внедрение CQRS/ES для критических доменов. | |
| Backend Developer (Elixir) | Формирует CQRS стратегию для Elixir-платформы: проектирует distributed CQRS с BEAM clustering, определяет event sourcing governance, разрабатывает подходы для cross-cluster event replication. Влияет на развитие Commanded/EventStore ecosystem через contributions и architectural guidance. | |
| Backend Developer (Go) | Формирует архитектурное видение CQRS для распределённых Go-систем: проектирует cross-service CQRS с federated queries, определяет стратегию для eventually consistent read models в multi-region deployment. Разрабатывает подходы к testing и debugging CQRS-систем в production. | |
| Backend Developer (Java/Kotlin) | Формирует enterprise CQRS стратегию: проектирует multi-bounded context CQRS с shared event bus, определяет governance для event schema evolution, разрабатывает платформу для self-service CQRS модулей. Влияет на архитектурные решения по adoption CQRS в legacy Java-системах. | |
| Backend Developer (Node.js) | Формирует архитектурное видение CQRS для Node.js платформы: проектирует event-driven архитектуру с CQRS как core pattern, определяет стратегию для real-time projections через WebSocket/SSE. Влияет на архитектурные решения по adoption CQRS в организации с учётом Node.js async nature. | |
| Backend Developer (PHP) | Формирует архитектурную стратегию CQRS для PHP-платформы: определяет где CQRS оправдан в контексте PHP process model, проектирует интеграцию PHP CQRS модулей с event-driven микросервисами на других языках. Влияет на развитие CQRS-экосистемы в PHP (Ecotone, Broadway). | |
| Backend Developer (Python) | Формирует архитектурную стратегию CQRS на уровне платформы: проектирует инфраструктуру для multi-tenant CQRS с изолированными read stores, определяет паттерны для cross-service queries и data mesh интеграцию. Влияет на архитектурные решения по decomposition монолитов с использованием CQRS как переходного паттерна. | |
| Backend Developer (Rust) | Формирует стратегию CQRS для распределённых Rust-систем: проектирует multi-region event store с conflict resolution, определяет архитектуру для cross-service CQRS с gRPC-based event propagation. Влияет на развитие Rust CQRS/ES экосистемы через open-source contributions. | |
| Backend Developer (Scala) | Формирует CQRS стратегию для Scala-платформы: проектирует event-driven architecture с CQRS как core pattern, определяет event schema governance с Avro/Protobuf, разрабатывает platform для self-service aggregate creation. Влияет на развитие Scala CQRS экосистемы (Akka, ZIO). | |
| Solutions Architect | Обязателен | Определяет архитектурную стратегию организации. Проектирует reference architectures. Формирует architecture governance. |