Upload
scrumtrek
View
219
Download
2
Embed Size (px)
Citation preview
Domain Driven Design.Как писать простой код для сложных систем?Дмитрий ПавловАнтон Бевзюк
SmartStepGroup
SmartStepGroupВнедряем инженерные практики XPСтавим процессы
Domain Driven Design
DDDUbiquitous Language
BoundedContext
PersistanseIgnorance
Ubiquitous Language
Когда покупатель оплатил заказ,
мы отправим ему email с
подтверждением
UPDATE tbl_userSET status = 18WHERE type = 3 AND id = …
Ubiquitous LanguageDeleteAllLines CancelOrder
SetStatus(Status.Approved)
Approve
CreateUser EnrollCustomer
Customer.Address = new Address()
Customer.RelocateTo(new Address())
https://bitbucket.org/smartstepgroup/agileshop
ПреимуществаЭкономим время на «переводе»Не теряем информациюПонятный для всех код
ПреимуществаКод мутирует вместе с бизнесом, вместо костылейМеньше документацииМеньше ошибок
Сложность
Мудрое руководство
Отдел продаж
Отдел закупок Аналитики Производств
о
Bounded Context
Context Map
Не все большие системы будут
хорошо спроектированы
http://www.laputan.org/mud
Продажа
conforms
Отчеты
Продажа
partners
conforms
Отчеты
Поставка
Продажа
partners
conforms
Производство
Отчеты
Поставка
ACL
ACL
Борьба со сложностьюДоменная модель != Объектная модельВездесущий языкДомены и поддомены вместо единой моделиContext Map
СсылкиТренинг SmartStepGroup по DDDhttp://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215 DDD misconceptions - Dino Esposito (SA2014)How You Can Architect and Develop Enterprise Mission-Critical Applications with Domain-Driven Design - Vaughn VernonEric Evans: What I've learned about DDD since the book was publishedDDD & Microservices: At Last, Some Boundaries! • Eric EvansPluralsight - Domain-Driven Design in Practice - Vladimir Khorikov
Спасибо за внимание!Дмитрий Павлов[email protected]Антон Бевзюк[email protected]
www.smartstepgroup.comblog.smartstepgroup.comtwitter.com/SmartStepGroup