Найти в Дзене

Разница между доменом и ограниченным контекстом в DDD

Оглавление
Начав писать про Event Storming не планировал углубляться в DDD, но в процессе подготовки статей понял, что все же стоит уточнить определения для сформирования целостной картины.
Взято с https://ru.pinterest.com/codektv/
Взято с https://ru.pinterest.com/codektv/

В Domain-Driven Design (DDD) домен и ограниченный контекст играют важную роль в структурировании и разработке сложных программных систем.

Домен

Домен представляет собой область, которая описывает совокупность бизнес-проблем и целей. Это сфера деятельности компании, которую необходимо автоматизировать с помощью IT-решений. Домен включает в себя все аспекты, связанные с этой деятельностью.

Пример: Если компания занимается логистикой, то домен будет охватывать все процессы, такие как выбор транспорта, планирование маршрутов, оформление заказов и т.д.

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

Ограниченный контекст — это часть домена, которая отвечает за конкретный функционал и имеет свой собственный язык описания. Основной принцип DDD заключается в разделении домена на ограниченные контексты с собственными моделями.

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

Основные различия:

Масштаб.

  • Домен: Охватывает широкую область бизнеса и включает множество задач.
  • Ограниченный контекст: Фокусируется на конкретном аспекте или функционале.

Структура.

  • Домен: Может состоять из нескольких ограниченных контекстов.
  • Ограниченный контекст: Является частью домена и имеет свои модели.

Цель.

  • Домен: Описывает всю предметную область бизнеса.
  • Ограниченный контекст: Отвечает за специфические задачи в рамках этой области.

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