Domain Driven Design в условиях разработки распределенных...
-
Upload
ngrebnev -
Category
Technology
-
view
1.257 -
download
7
description
Transcript of Domain Driven Design в условиях разработки распределенных...
![Page 1: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/1.jpg)
Domain Driven Design в условиях разработки распределенных приложений
Николай Гребнев
1
![Page 2: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/2.jpg)
2
Содержание• Что такое DDD?• Распределенные приложения• Проблемы DDD в распределенных
приложениях• Как быть?• Принимаем решение• Подводим итоги
![Page 3: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/3.jpg)
3
ЧТО ТАКОЕ DDD?
![Page 4: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/4.jpg)
4
DDD – DataDisplayDebugger?
![Page 6: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/6.jpg)
Domain Driven Design
6
![Page 7: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/7.jpg)
7
Domain Driven DesignПроектирование по модели – проектирование архитектуры, при котором соблюдается максимально точное соответствие между некоторым подмножеством элементов программы и элементами модели (Эрик Эванс)
![Page 8: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/8.jpg)
8
Domain Driven Design
![Page 9: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/9.jpg)
9
Модель программы
![Page 10: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/10.jpg)
10
Модель предметной области
![Page 11: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/11.jpg)
11
Модель программы
• DataSet• DataReader • Command• DataAdapter• Connection• И т. д.
Модель предметной области
• Книга• Автор• Издатель• Читатель• И т. д.
![Page 12: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/12.jpg)
12
Модель предметной области
![Page 13: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/13.jpg)
13
Domain Driven DesignDDD – проекция языка предметной области на объектно ориентированный язык программирования
![Page 14: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/14.jpg)
14
Почему DDD?• Эффективный способ борьбы со
сложностью• Единый язык
• Низкая стоимость разработки и сопровождения
![Page 15: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/15.jpg)
15
Почему DDD в Agile?• Расстояние между заказчиком и
разработчиком невелико• Заказчик и разработчик разговаривают на
одном языке• Итеративная разработка – постепенное
изменение модели
![Page 16: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/16.jpg)
16
ORM (Object-relational mapping)ORM – технология программирования для конвертации данных между несовместимыми типами систем в объектно-ориентированные языки
![Page 18: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/18.jpg)
ORM ≠ DDD
18
![Page 19: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/19.jpg)
19
Архитектурные стили при работе с ORM
![Page 20: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/20.jpg)
20
Rich VS Anemic
![Page 21: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/21.jpg)
21
Rich
+Бизнес-логика()
-Данные
Класс1
+Бизнес-логика()
-Данные
Класс2
+Бизнес-логика()
-Данные
Класс3
*
*
*
*
![Page 22: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/22.jpg)
22
Anemic
![Page 23: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/23.jpg)
23
Anemic?
ORM?
![Page 24: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/24.jpg)
24
Rich!
![Page 25: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/25.jpg)
25
РАСПРЕДЕЛЕННЫЕ ПРИЛОЖЕНИЯ
![Page 26: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/26.jpg)
26
Шаблоны распределенных архитектур• Клиент-Сервер• 3-х звенная (многозвенная) архитектура• SOA• Enterprise Service Bus
![Page 27: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/27.jpg)
27
Клиент-Сервер
Клиент БД
![Page 28: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/28.jpg)
28
3-х звенная архитектура
Сервер приложений БД Клиент
![Page 29: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/29.jpg)
29
SOA
Сервис 1
Сервис 2 Сервис 3
![Page 30: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/30.jpg)
30
Enterprise Service Bus
ESB
Система 1
Система 2 Система 3
![Page 31: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/31.jpg)
31
Почему распределенная архитектура?
• Безопасность• Эффективность• Совместная работа
![Page 32: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/32.jpg)
32
DDD В РАСПРЕДЕЛЕННЫХ ПРИЛОЖЕНИЯХ
![Page 33: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/33.jpg)
33
Клиент
Клиент-Сервер
БД ORM Доменная модель
![Page 34: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/34.jpg)
Проблемы?
34
![Page 35: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/35.jpg)
Нет проблем!
35
ORM БД Доменная
модель
![Page 36: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/36.jpg)
36
3-х звенная архитектура
Сервер приложений
БД ORM Доменная модель сервера
Клиент
Доменная модель клиента
![Page 37: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/37.jpg)
Проблемы?
37
![Page 38: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/38.jpg)
38
Проблемы• Как?– Построить взаимодействие с сервером
– Преобразовать данные в доменную модель на клиенте
?Доменная
модель клиента
?
![Page 39: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/39.jpg)
39
SOAСервис 1
БД ORM Доменная модель 1
Сервис 2
Доменная модель 2
Сервис 3
Доменная модель 3
![Page 40: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/40.jpg)
Проблемы?
40
![Page 41: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/41.jpg)
41
Проблемы• Как?– Построить взаимодействие другими сервисами
– Преобразовать данные в локальную доменную модель
?
Доменная модель
?
![Page 42: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/42.jpg)
42
Проблемы• Как? – Сочетать использование ORM и работу с
другими сервисами?
Доменная модель сервиса
БД ORM
![Page 43: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/43.jpg)
43
Enterprise Service Bus
Система 2
Доменная модель 2
Система 3
Доменная модель 3
Система 1
БД ORM Доменная модель 1
ESB
![Page 44: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/44.jpg)
Проблемы?
44
![Page 45: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/45.jpg)
45
Проблемы• Как?– Построить взаимодействие с шиной
– Преобразовать данные из шины в доменную модель
ESB ?
ESB ?Доменная
модель системы
![Page 46: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/46.jpg)
46
Проблемы• Как? – Сочетать использование ORM и работу с шиной
Доменная модель сервиса
БД ORM
ESB
![Page 47: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/47.jpg)
47
Проблемы в DDD в распределенных приложениях
• Взаимодействие с удаленными источниками данных
?
![Page 48: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/48.jpg)
48
Проблемы в DDD в распределенных приложения
• Преобразование данных из удаленных источников в доменную модель
Данные ?Доменная
модель системы
![Page 49: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/49.jpg)
Распределенная архитектура вносит в модель объекты
отсутствующие в предметной области
Соединение
Сервис временно недоступен
Данные по запросу
![Page 50: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/50.jpg)
50
Проблемы в DDD в распределенных приложения
• Сочетание различных источников данных
Доменная модель
Данные
Данные
![Page 51: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/51.jpg)
51
Развитие DDD
2002 год 2003 год 2008 год
![Page 52: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/52.jpg)
52
Причины• Отсутствие шаблонов для
удаленного взаимодействия
• Отсутствие готовых инструментальных средств
![Page 53: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/53.jpg)
53
КАК БЫТЬ?
![Page 54: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/54.jpg)
Шаблоны удаленного взаимодействия
![Page 55: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/55.jpg)
55
RPC (Remote Procedure Call)• .NET Remoting• CORBA• WCF• и т. д.
![Page 56: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/56.jpg)
Почему нет?
56
![Page 57: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/57.jpg)
57
Почему нет?
• Доменные модели разные
• Стоимость удаленного вызова на порядки
выше стоимости локалького
![Page 58: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/58.jpg)
Data Transfer Object
![Page 59: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/59.jpg)
59
DTOДоменная модель 1
Доменная модель 2
![Page 60: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/60.jpg)
60
DTOДоменная модель
![Page 61: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/61.jpg)
Инструменты
![Page 62: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/62.jpg)
62
Что делать?Логика
преобразования данных и удаленного
взаимодействия
Модель предметной области
![Page 63: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/63.jpg)
63
Что делать?
Разработать инструментарий
![Page 64: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/64.jpg)
64
ПРИНИМАЕМ РЕШЕНИЕ
![Page 65: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/65.jpg)
65
Клиент-сервер
• Множество инструментов и платформ
• Готовые архитектурные шаблоны
• DDD – выгодно
![Page 66: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/66.jpg)
66
3-х звенная архитектура• Тонкий клиент – см. клиент-сервер• Толстый клиент:– Мало логики – не использовать DDD на клиенте– Средне логики – помещать инфраструктурный
код в доменную модель– Много логики – разработать свой слой
преобразования данных
![Page 67: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/67.jpg)
67
SOA и ESB• Удаленного взаимодействия немного –
поместить логику преобразования данных в доменную модель
• Иначе – разработать свой слой преобразования данных
![Page 68: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/68.jpg)
68
ПОДВОДИМ ИТОГИ
![Page 69: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/69.jpg)
Распределенная архитектура – данность
![Page 70: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/70.jpg)
70
Что нам дает DDD• Эффективный способ борьбы со
сложностью• Единый язык
• Низкая стоимость разработки и сопровождения
![Page 71: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/71.jpg)
Но есть проблемы!
![Page 72: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/72.jpg)
72
Так что же делать?• Оценить:– Сложность доменной модели– Необходимость сильно распределенной
архитектуры– Стоимость разработки собственных
инструментов
![Page 73: Domain Driven Design в условиях разработки распределенных приложений](https://reader038.fdocuments.net/reader038/viewer/2022102900/553984d64a795971788b4964/html5/thumbnails/73.jpg)
Вопросы?
Докладчик: Николай Гребневe-mail: [email protected]://www.slideshare.net/ngrebnev/domain-driven-design-6988494
73