SlideShare a Scribd company logo
Domain driven design
Артем Антоненко
2 слайд из 39
Артем Антоненко
Engineering manager/Application architect at
XLNTech (Remit )
Опыт в менеджменте более 9 лет.
Консультант в сфере реинжиниринга бизнес-
процессов.
Более 6 лет в девелопменте.
Coding vs
Development
3 слайд из 39
Следование
рецептам
4 слайд из 39
Если что-то
пошло не по
сценарию
5 слайд из 39
Sophia Phronesis
6 слайд из 39
Framework
7 слайд из 39
Как выглядит
классический
проект?
8 слайд из 39
Acceptance criteria?
9 слайд из 39
2 slides
Smart UI
Client - Server
Internet
11 слайд из 39
Then there’s the matter of what comes
under the term “business logic.”
I find this a curious term because there
are few things that are less logical than
business logic. («Patterns of Enterprise
Application Architecture»)
12 слайд из 39
Отказ от четкого выделения предметной
области при определенных условиях может
обернуться катастрофой. Если задача
предстоит сложная и принято решение
следовать принципам ПРОЕКТИРОВАНИЯ ПО
МОДЕЛИ (MODEL-DRIVEN DESIGN), то
стисните зубы, пригласите нужных
специалистов и избегайте
ИНТЕЛЛЕКТУАЛЬНОГО ИНТЕРФЕЙСА
(SMART UI).
Эрик Эванс
13 слайд из 39
Зачем DDD?
Джеймс Клерк Максвелл, "Трактат об
электричестве и магнетизме" James Clerk Maxwell,
А Treatise оп Electricity and Magnetism), 1873 г.
Эти четыре уравнения, вместе с определениями
понятий и лежащими в их основе математическим
аппаратом, описывают всю классическую теорию
электромагнетизма XIX в.
Зачем DDD? Упрощение сложных систем.
15 слайд из 39
Зачем DDD? Выделение и совершенствование
уникального торгового предложения
16 слайд из 39
Зачем DDD? Описание бизнес-процесса
17 слайд из 39
Зачем DDD? Низкий шанс появления “тайных знаний”
18 слайд из 39
Зачем DDD? Избавление от лишней документации
Customer BA SA Developer Tester
?! ?!
19 слайд из 39
Основные понятия.
Основные понятия. Единый язык
Domain expert
Analyst Developer
Developer
Ubiquitous
Language
Application
code
Test
code
Specs and
documentation
Whiteboard
discussions
21 слайд из 39
Основные понятия. Ограниченный контекст
Контекст
Граница, в
пределах которой
понятия
единого языка
имеют вполне
конкретное
значение.
Ordering context Supplier context
Order
Customer
Product
Vendor
Order
Invoice
22 слайд из 39
Основные понятия. Смысловое ядро
Смысловое ядро
Подобласть,
имеющая
первостепенное
значение для
организации.
Стратегия бизнеса
строится вокруг
смыслового ядра.
23 слайд из 39
Основные понятия. Карта контекстов
Заказ товаров
Сторонняя ERP
Модуль лояльности
Пользователи Shared kernel
ACL
Partnership
Модуль рекламы
Customer-supplier
Складской сервис
Conformist
24 слайд из 39
Основные понятия. Предметная область
Предметная
область
это то, что делает
организация, и
среда, в которой
она это делает.
Часто состоит из
предметных
подобластей.
Purchase
planning
Warehouse
context
Core
domain
Purchase
context
Distribution
context
Logistic
context
25 слайд из 39
И все же - что такое доменная модель?
Может, это она?
27 слайд из 39
Проекция Мерка́тора
Проекция Меркатора оказалась
весьма удобной для нужд
мореходства, особенно в
старые времена. Объясняется
это тем, что траектория
движения корабля, идущего
под одним и тем же румбом к
меридиану (то есть с
неизменным положением
стрелки компаса относительно
шкалы) изображается прямой
линией на карте в проекции
Меркатора.
Википедия
28 слайд из 39
Имплементация
Слоевая
архитектура
30 слайд из 39
RestaurantModule
Restaurant
RestaurantDbMapper
RestaurantService
RestaurantBuilder
31 слайд из 39
RestaurantContext
Restaurant
Attribute
Module
Location
Module
Restaurant
Waiter
Module
Restaurant
Module
32 слайд из 39
MenuContext
MenuContract
StorageContext
StorageContract
RestaurantContextOrderContext
OrderContract RestaurantContract
33 слайд из 39
2 slides
В книге Эрика Эванса (Eric Evans) Domain-Driven Design
(Addison-Wesley) основное внимание уделялось
способам создания систем, моделирующих реально
существующие области..
Если нужна информация из ограниченного контекста
или нужно сделать запросы на какие-либо действия
внутри ограниченного контекста, происходит обмен
данными с его четко обозначенной границей с помощью
моделей. В своей книге Эванс использовал аналогию с
клетками: «Клетки могут существовать благодаря своим
мембранам, определяющим, что попадает внутрь, что
выходит наружу и что именно может через них
проходить».
Идеи, представленные Эриком Эвансом в книге
Domain-Driven Design, весьма полезны при поиске
разумных границ наших сервисов, и мы пока …
MenuContext StorageContext
RestaurantContextOrderContext
OrderContext RestaurantContext
MenuContext StorageContext
35 слайд из 39
https://github.com/Antonyan/ddd-skeleton
36 слайд из 39
Холивар
EfforttoEnhance
Complexity of Domain Logic?
2 hours to be clear about
Transaction script
Domain model
Table
Module
38 слайд из 39
Q & A
antonenko.artem@gmail.com

More Related Content

Similar to Domain Driven Design | Артём Антоненко | CODEID |

INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
Alex V. Petrov
 
разработка собственной Agile методологии для управления крупными проектами
разработка собственной Agile методологии для управления крупными проектамиразработка собственной Agile методологии для управления крупными проектами
разработка собственной Agile методологии для управления крупными проектамиSQALab
 
DDD - модель вместо требований
DDD - модель вместо требованийDDD - модель вместо требований
DDD - модель вместо требований
SQALab
 
DDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 TsepkovDDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 Tsepkov
Maxim Tsepkov
 
Domain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требованийDomain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требований
CUSTIS
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийAlexander Kalouguine
 
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
SQALab
 
Новые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковНовые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковDocsvision
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТ
CUSTIS
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючи
SQALab
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючиIrina Vinogradova
 
Услуги КРОК по управлению информацией
Услуги КРОК по управлению информациейУслуги КРОК по управлению информацией
Услуги КРОК по управлению информацией
КРОК
 
Release planning tetris_spm2012
Release planning tetris_spm2012Release planning tetris_spm2012
Release planning tetris_spm2012
vovchiklee
 
архитектура ис
архитектура исархитектура ис
архитектура ис
Andrey Verbitsky
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
ПрофсоUX
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
CUSTIS
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017
Maxim Tsepkov
 
Облака: от сказки к реальности Олег Ананьев Бизнес Талисман
Облака: от сказки к реальности Олег Ананьев Бизнес ТалисманОблака: от сказки к реальности Олег Ананьев Бизнес Талисман
Облака: от сказки к реальности Олег Ананьев Бизнес ТалисманMichael Oreshin
 
Aoip2013 aнаньев
Aoip2013 aнаньевAoip2013 aнаньев
Aoip2013 aнаньев
Олег Ананьев
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТ
CodeFest
 

Similar to Domain Driven Design | Артём Антоненко | CODEID | (20)

INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
INFOSYSTEMS. How to Measure Software Architecture [1.01, RUS]
 
разработка собственной Agile методологии для управления крупными проектами
разработка собственной Agile методологии для управления крупными проектамиразработка собственной Agile методологии для управления крупными проектами
разработка собственной Agile методологии для управления крупными проектами
 
DDD - модель вместо требований
DDD - модель вместо требованийDDD - модель вместо требований
DDD - модель вместо требований
 
DDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 TsepkovDDD requirements AnalystDays-2014 Tsepkov
DDD requirements AnalystDays-2014 Tsepkov
 
Domain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требованийDomain-Driven Design: Модель вместо требований
Domain-Driven Design: Модель вместо требований
 
Req Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требованийReq Labs'2011. Коммуникация нефункциональных требований
Req Labs'2011. Коммуникация нефункциональных требований
 
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
Роль бизнес аналитика в разработке собственной Business Rule Engine с нуля ка...
 
Новые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиковНовые требования к ECM - ответы российских разработчиков
Новые требования к ECM - ответы российских разработчиков
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТ
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючи
 
Планируем релиз играючи
Планируем релиз играючиПланируем релиз играючи
Планируем релиз играючи
 
Услуги КРОК по управлению информацией
Услуги КРОК по управлению информациейУслуги КРОК по управлению информацией
Услуги КРОК по управлению информацией
 
Release planning tetris_spm2012
Release planning tetris_spm2012Release planning tetris_spm2012
Release planning tetris_spm2012
 
архитектура ис
архитектура исархитектура ис
архитектура ис
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 
Сотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практикиСотрудничество с корпорациями: рецепты из практики
Сотрудничество с корпорациями: рецепты из практики
 
Practice of enterprice development ProfsoUX-2017
Practice of enterprice development  ProfsoUX-2017Practice of enterprice development  ProfsoUX-2017
Practice of enterprice development ProfsoUX-2017
 
Облака: от сказки к реальности Олег Ананьев Бизнес Талисман
Облака: от сказки к реальности Олег Ананьев Бизнес ТалисманОблака: от сказки к реальности Олег Ананьев Бизнес Талисман
Облака: от сказки к реальности Олег Ананьев Бизнес Талисман
 
Aoip2013 aнаньев
Aoip2013 aнаньевAoip2013 aнаньев
Aoip2013 aнаньев
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТ
 

More from CODEiD PHP Community

GRASP - General Responsibility Assignment Software Principles
GRASP -  General Responsibility Assignment Software PrinciplesGRASP -  General Responsibility Assignment Software Principles
GRASP - General Responsibility Assignment Software Principles
CODEiD PHP Community
 
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiDThe PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
CODEiD PHP Community
 
Ioc container | Hannes Van De Vreken | CODEiD
Ioc container | Hannes Van De Vreken | CODEiDIoc container | Hannes Van De Vreken | CODEiD
Ioc container | Hannes Van De Vreken | CODEiD
CODEiD PHP Community
 
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
CODEiD PHP Community
 
Contract testing | Евгений Кузьмин | CODEiD
Contract testing | Евгений Кузьмин | CODEiDContract testing | Евгений Кузьмин | CODEiD
Contract testing | Евгений Кузьмин | CODEiD
CODEiD PHP Community
 
Running microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiDRunning microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiD
CODEiD PHP Community
 
Graphql + Symfony | Александр Демченко | CODEiD
Graphql + Symfony | Александр Демченко | CODEiDGraphql + Symfony | Александр Демченко | CODEiD
Graphql + Symfony | Александр Демченко | CODEiD
CODEiD PHP Community
 
Mastering message queues | Tobias Nyholm | CODEiD
Mastering message queues | Tobias Nyholm | CODEiDMastering message queues | Tobias Nyholm | CODEiD
Mastering message queues | Tobias Nyholm | CODEiD
CODEiD PHP Community
 
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
Symfony4: A new way to develop applications | Antonio Peric | CODEiDSymfony4: A new way to develop applications | Antonio Peric | CODEiD
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
CODEiD PHP Community
 
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
CODEiD PHP Community
 
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
CODEiD PHP Community
 

More from CODEiD PHP Community (11)

GRASP - General Responsibility Assignment Software Principles
GRASP -  General Responsibility Assignment Software PrinciplesGRASP -  General Responsibility Assignment Software Principles
GRASP - General Responsibility Assignment Software Principles
 
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiDThe PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
The PHP developer stack for building chatbots | Christoph Rumpel | CODEiD
 
Ioc container | Hannes Van De Vreken | CODEiD
Ioc container | Hannes Van De Vreken | CODEiDIoc container | Hannes Van De Vreken | CODEiD
Ioc container | Hannes Van De Vreken | CODEiD
 
Effective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiDEffective codereview | Dave Liddament | CODEiD
Effective codereview | Dave Liddament | CODEiD
 
Contract testing | Евгений Кузьмин | CODEiD
Contract testing | Евгений Кузьмин | CODEiDContract testing | Евгений Кузьмин | CODEiD
Contract testing | Евгений Кузьмин | CODEiD
 
Running microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiDRunning microservices successfully | Bastian Hofmann | CODEiD
Running microservices successfully | Bastian Hofmann | CODEiD
 
Graphql + Symfony | Александр Демченко | CODEiD
Graphql + Symfony | Александр Демченко | CODEiDGraphql + Symfony | Александр Демченко | CODEiD
Graphql + Symfony | Александр Демченко | CODEiD
 
Mastering message queues | Tobias Nyholm | CODEiD
Mastering message queues | Tobias Nyholm | CODEiDMastering message queues | Tobias Nyholm | CODEiD
Mastering message queues | Tobias Nyholm | CODEiD
 
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
Symfony4: A new way to develop applications | Antonio Peric | CODEiDSymfony4: A new way to develop applications | Antonio Peric | CODEiD
Symfony4: A new way to develop applications | Antonio Peric | CODEiD
 
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
CodeID - PHP Odessa Conf: Сергей Тимошевский "Все пути ведут к микросервисам"
 
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
CodeID - PHP Odessa Conf: Вячеслав Мозговой "Как сделать сайт быстрым и люб...
 

Domain Driven Design | Артём Антоненко | CODEID |