Дмитрий Павлов, Антон Бевзюк, Domain Driven Design. Как писать...

Preview:

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

Спасибо за внимание!Дмитрий Павловdmitry@smartstepgroup.comАнтон Бевзюкanton@smartstepgroup.com

www.smartstepgroup.comblog.smartstepgroup.comtwitter.com/SmartStepGroup

Recommended