dddesigner

Визуальный инструмент для Domain-Driven Design (DDD) и CQRS

Моделируйте ограниченные контексты, агрегаты, команды, события и модели чтения CQRS. Генерируйте код. Держите архитектуру и реализацию в согласованном состоянии.

Проектируйте DDD-системы до написания кода. Контролируйте границы агрегатов. Контролируйте потоки событий между контекстами. Генерируйте каркас приложения на вашем языке.

Почему важно визуальное проектирование

Команды начинают с принципов DDD и через полгода получают анемичную доменную модель.

Проблема не в понимании теории DDD. Проблема в том, что код пишется, когда модель ещё не спроектирована. Понимание того, что границы агрегатов неправильные, приходит только после написания 200 000 строк кода. Изменить границы — это рефакторинг 150 файлов в 10 сервисах.

Спроектируйте модель визуально до кода. Меняйте границы за минуты, а не недели.

Три проблемы, которые убивают DDD-проекты

Почему DDD-проекты проваливаются на практике

Вы можете использовать ИИ для написания кода. Но модель вам придется проектировать вручную.

Агрегаты превращаются в «божественные» объекты

Начинаете с чистых границ. Через полгода: 50 методов, 20 свойств, бизнес-логика везде. DDDesigner предупреждает, когда агрегаты растут слишком большими, и помогает правильно их разделить.

Потоки событий распределены между инструментами

Команды в Confluence. События в Miro. Код в репозитории. Три источника истины, которые расходятся. Одно место, где видно, как событие OrderPlaced поступает в контексты Payment и Inventory.

Модель расходится с реализацией

Вы проектируете продуманные агрегаты на совместной сессии с командой. Но через три спринта код уже не похож на модель. Решение — генерировать код из модели каждый раз, когда модель меняется. Держите код и модель в согласованном состоянии.

Почему существующие инструменты не работают

Miro и draw.io слишком общие. Они не понимают концепции DDD.

Вы можете нарисовать прямоугольники с надписью 'Агрегат' в любом инструменте. Но они не проверят, что агрегат определен неверно, команда не подключена или поток событий не работает. Это инструменты презентации, а не моделирования.

DDDesigner понимает DDD. Он проверяет модель и показывает проблемы до того, как они станут кодом.

Выбор инструмента для DDD

Сравните инструменты моделирования DDD

Онлайн-доски, текстовые языки описания и визуальные редакторы моделей решают разные задачи. Посмотрите, чем DDDesigner отличается от Context Mapper, Koine, Miro и Qlerify — по моделированию, проверке модели и генерации кода.

Открыть сравнение инструментов

Как работает DDDesigner

Проектируйте, проверяйте, генерируйте и держите в согласованном состоянии

Моделируйте DDD-архитектуру в одном связанном рабочем пространстве. Вы сможете увидеть взаимосвязь объектов и возможные проблемы. Генерируйте код на основе модели.

Ограниченные контексты

Определяйте границы контекстов и их отношения. Создавайте события, передаваемые между контекстами.

Агрегаты, команды и события

Моделируйте агрегаты с их сущностями и объектами-значениями. Подключайте команды к агрегатам. Контролируйте, какие события генерируются. Проверяйте, что у каждой команды есть обработчик.

CQRS, саги и проекции

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

Domain-Driven Design

Практическое руководство по DDD и CQRS

От событийного моделирования до ограниченных контекстов, агрегатов, команд, событий, CQRS-проекций и кода. Полный справочник по применению Domain-Driven Design в DDDesigner.

Начните со стратегического проектирования

Спроектируйте ограниченные контексты до сервисов и кода

Большинство провалов DDD начинаются с неясных границ. Разберитесь, что такое ограниченный контекст, как строить карту отношений и как сохранять единый язык до реализации.

Читать: что такое ограниченный контекст в DDD?

Domain-Driven Design

Что такое Domain-Driven Design (DDD)?

Применяйте DDD, когда язык бизнеса, границы и инварианты важнее фреймворков. Свяжите стратегическое проектирование с агрегатами, событиями, CQRS и реализацией.

Читать: что такое Domain-Driven Design?

CQRS

Что такое CQRS в DDD?

Отделите команды, которые защищают инварианты, от запросов и проекций для чтения. Узнайте, когда CQRS помогает, а когда добавляет лишнюю сложность.

Читать: что такое CQRS?

От модели к рабочему коду

Генерируйте каркас приложения на вашем языке

DDDesigner генерирует код, соответствующий вашим архитектурным решениям. Генерируйте заново при изменении модели: контракты обновляются автоматически, ваша бизнес-логика остаётся нетронутой.

Поддерживаемые языки
  • Go
  • C#
  • Java
  • Kotlin
  • TypeScript
  • Python

Генерируется автоматически

  • Агрегаты, сущности, объекты-значения и доменные типы
  • Определения команд и событий с контрактами
  • Обработчики команд и событий, заготовки проекций
  • Интерфейсы репозиториев и заглушки адаптеров
  • HTTP-маршруты, спецификации OpenAPI, контракты обмена сообщениями, Temporal-заготовки и опциональные адаптеры Chronacta (схемы, проекции, воркеры)

Вы пишете бизнес-логику

  • Реализуйте методы агрегатов и бизнес-правила
  • Пишите запросы, проекции и маппинг данных
  • Добавляйте валидацию, авторизацию и обработку ошибок
  • Настраивайте среду выполнения, наблюдаемость, воркеры Temporal/Chronacta и развёртывание

Не магическая кнопка. DDDesigner создаёт архитектурный каркас, включая опциональные Temporal-обёртки и opt-in интеграцию с Chronacta, чтобы вы могли сосредоточиться на бизнес-логике, а не на шаблонном коде.

Три формы генерации кода

Выберите форму генерации кода

Из одной DDD-модели можно сгенерировать код в одной из трёх форм: монолит, модульный монолит или микросервисы. Выберите подходящий вариант — DDDesigner автоматически создаст необходимые для него артефакты.

Модель остаётся единой. Меняется только форма сгенерированного приложения и набор артефактов, необходимых для его запуска и поставки.

Одна DDD-модель
МонолитЕдиное приложение и связанные с ним артефакты генерации
Модульный монолитОдин процесс с автоматически созданными границами модулей
МикросервисыНабор сервисов с контрактами и артефактами поставки для каждого сервиса
Автоматически создаётся

Контракты взаимодействия

Для выбранной формы генерации создаются необходимые HTTP/OpenAPI или gRPC/protobuf-контракты на основе вариантов использования, входных данных и интеграционных событий.

Автоматически создаётся

Артефакты приложения и поставки

В зависимости от выбранной формы создаются нужные каталоги, модули, сервисные заготовки, Dockerfile и, для распределённой поставки, корневой Docker Compose.

Перед генерацией

Проверка выбранной формы

DDDesigner проверяет модель и показывает, какие границы, связи и артефакты будут созданы. После исправления ошибок нажмите «Сгенерировать», чтобы получить код выбранной формы.

Дополнительный инструмент для хранения событий

Используйте Chronacta с DDDesigner — или создайте своё хранилище

Для предметной области, построенной на событиях, не требуется конкретная база данных. Chronacta — необязательное хранилище событий для команд, которым нужны неизменяемый журнал и готовые средства работы с ним.

Без Chronacta

Реализуйте хранение состояния в виде событий на основе собственного хранилища, базы данных или инфраструктуры. DDDesigner по-прежнему помогает моделировать агрегаты, команды, события и проекции.

С Chronacta

Используйте специализированное хранилище событий с бесплатной версией для разработчиков — для локальной разработки и оценки. Chronacta рассчитан на неизменяемое хранение событий и приложения, управляемые событиями.

Подробнее о Chronacta

Возможности Chronacta

  • Потоки событий только с добавлением новых записей и проверкой одновременных изменений
  • Чтение потоков и восстановление состояния по событиям
  • Реестр схем JSON для контрактов и версий событий
  • Проекции на стороне хранилища и надёжная доставка событий подписчикам
  • Программные интерфейсы gRPC и REST, WebSocket, командная строка, аутентификация, наблюдаемость и средства эксплуатации
Поддержка в DDDesigner

Подключите Chronacta при необходимости

Выберите Chronacta в настройках генерации кода. DDDesigner создаст схемы событий, описания проекций, адаптер хранилища и заготовки кода для выбранного языка. Если Chronacta не выбран, существующая генерация кода останется без изменений.

Подробнее о Chronacta

Domain-Driven Design

Основан на идеях Эрика Эванса и Вона Вернона

DDDesigner следует стратегическому и тактическому DDD: ограниченные контексты, агрегаты, единый язык, CQRS, событийное хранилище и событийная архитектура. Концепции работают. Мы создали инструмент, чтобы сделать их практичными.

Искусственный интеллект в работе

Обсуждайте архитектуру с ИИ и сразу проверяйте результат

Вы описываете помощнику, как должна работать система, а DDDesigner помогает превратить этот разговор в понятные изменения модели.

ИИ может помочь разобрать новую идею, найти недостающую связь или предложить, как разделить слишком большой агрегат. Например, вы пишете: «Заказ после оплаты должен отправить сообщение в службу доставки». Помощник предлагает, какие команда, событие и связь между частями модели для этого нужны. Решение всё равно принимаете вы.

Чтобы помощник получил доступ, создайте личный ключ в рабочей области: откройте «Инструменты», перейдите в «Участники» и выберите «Ключи агента». Подключите редактор к облачному MCP по адресу https://app.dddesigner.com/mcp с этим ключом (заголовок X-Agent-Key). Ключ относится только к выбранному проекту; отдельный идентификатор проекта клиенту MCP не нужен. Полная строка показывается один раз. Если она стала известна постороннему, её можно немедленно отозвать и создать новую.

Дальше всё происходит по шагам. Помощник получает описание существующей модели, предлагает изменения, а DDDesigner проверяет их до сохранения. Вы видите результат заранее и можете отказаться от него или внести уточнения. В проект попадают только те изменения, которые вы просмотрели и подтвердили. Тем же подключением можно запросить кодогенерацию в чат (сначала пути, затем выбранные файлы) — это тот же пайплайн, что кнопка Generate в рабочей области.

Как это происходит

  1. Сначала — описаниеПомощник видит, из каких частей состоит проект и какие вопросы уже требуют внимания.
  2. Затем — предложениеОн предлагает конкретные изменения, а вы уточняете их в разговоре.
  3. Наконец — проверкаDDDesigner показывает результат до записи. Вы подтверждаете только то, с чем согласны.

ИИ предлагает варианты, но последнее слово всегда остаётся за вами.

Для архитекторов и техлидов

Для тех, кто проектирует системы, а не просто пишет код

Архитекторы ПО

Проектируйте ограниченные контексты, агрегаты и потоки событий. Проверяйте модель до реализации. Генерируйте каркас кода на 6 языках.

Техлиды и старшие разработчики

Дайте команде единую архитектурную модель. Делайте проектные решения явными. Обучайте новых разработчиков с помощью диаграмм, которые остаются актуальными.

Цены

Начните бесплатно. Перейдите на Pro, когда понадобится больше.

Бесплатный тариф — навсегда: моделируйте DDD, генерируйте монолит и делитесь результатом. Pro открывает команду, Git и микросервисы.

Free

Изучайте DDD и соберите первый ограниченный контекст — без ограничения по времени.

БесплатноНавсегда
  • До 2 проектов
  • До 3 участников команды
  • До 80 объектов модели на проект
  • Генерация монолита
  • До 2 публичных ссылок на проект
  • Экспорт языка описания и PlantUML
Начать бесплатно

Pro

Для продуктовых команд: масштаб, Git и продвинутая генерация кода.

Временно бесплатно по запросу14 дней Pro тестовый период
  • Неограниченно проектов и участников
  • Неограниченно объектов модели
  • Генерация модульного монолита и микросервисов
  • Git-интеграция и безлимит публичных ссылок
  • ИИ-помощник по руководству и приоритетная поддержка

Pro

Запросить временный доступ к тарифу Pro

Спроектируйте вашу DDD-архитектуру. Сгенерируйте код.

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

Начать проектирование