SlideShare a Scribd company logo
© 2019, Domain Driven Design Taiwan Community
Eric G. Huang
2020/06/28
DDD For Small Organizations
(re-deliver session from ddddd, James Hickey)
© 2019, Domain Driven Design Taiwan Community
The Speaking https://www.youtube.com/watch?v=Xw_eh9vLAio

Youtube https://www.youtube.com/channel/UCRafEj0oNnAxrHhDwe73QCQ

Web Site https://www.jamesmichaelhickey.com/
James Hickey
• Experienced .NET software architect & Microsoft certified professional
• Helping tech companies increase their business & technical agility
• Training software professionals to build high-quality software products
介紹原作者
© 2019, Domain Driven Design Taiwan Community
• DDD 常⾒誤解
• 新創公司
• 中⼩型組織
© 2019, Domain Driven Design Taiwan Community
• DDD 常⾒誤解
• 新創公司
• 中⼩型組織
© 2019, Domain Driven Design Taiwan Community
• DDD 常⾒誤解
• 新創公司
• 中⼩型組織
© 2019, Domain Driven Design Taiwan Community
• DDD 常⾒誤解
• 新創公司
• 中⼩型組織
© 2019, Domain Driven Design Taiwan Community
DDD 常⾒誤解
© 2019, Domain Driven Design Taiwan Community
DDD 帶來過度設計 ?
© 2019, Domain Driven Design Taiwan Community
過度設計 ?
“DDD 的⼀⼤好處便是它並不需要使⽤特
定的架構”
- Implementing Domain Driven Design (中⽂ pg. 99,英⽂ pg. 113)
© 2019, Domain Driven Design Taiwan Community
複製⼤型公司成功案例
過度設計 ?
架構是⼀種演化過程
© 2019, Domain Driven Design Taiwan Community
DDD 不 Agile ?
© 2019, Domain Driven Design Taiwan Community
如果模型無法忠實地描述領域的關鍵概念,必
須重新設計它。這樣,建模和程式設計就結合
為⼀個 ”統⼀的迭代開發過程”
DDD 不 Agile ?
Domain Driven Design (中⽂ pg. 47)
© 2019, Domain Driven Design Taiwan Community
DDD 不 Agile ?
• 新的挑戰
• 補捉知識
• 建模
• 實驗
© 2019, Domain Driven Design Taiwan Community
DDD is a Set of Guiding Principles
- By Eric Evans
• 專注於領域
• 透過溝通與共識探索模型
• 在同個語境下使⽤通⽤語⾔
https://www.youtube.com/watch?v=xyuKx5HsGK8
© 2019, Domain Driven Design Taiwan Community
新創公司
© 2019, Domain Driven Design Taiwan Community
新創公司的特性
• 快速變化
• ⾝兼多職
© 2019, Domain Driven Design Taiwan Community
Core Domain 可能改變
Focus
Year
Product 2
Product 2Product 1
Product 1
© 2019, Domain Driven Design Taiwan Community
“Only split around those boundaries that are
clear at the beginning, and keep the rest on
the more monolithic side”
- Monolith To Microservices by Sam Newman
© 2019, Domain Driven Design Taiwan Community
產品價值
時間
溝通、合作、探索 客⼾要求什麼做什麼
© 2019, Domain Driven Design Taiwan Community
可以采⽤的策略⼯具
• Event Storming
• Context Mapping
• Aggregate Canvas
© 2019, Domain Driven Design Taiwan Community
Event Storming
© 2019, Domain Driven Design Taiwan Community
Context Mapping
© 2019, Domain Driven Design Taiwan Community
Aggregate Canvas
© 2019, Domain Driven Design Taiwan Community
中⼩型組織
© 2019, Domain Driven Design Taiwan Community
在導入之前...
• 在團隊中是否有⾜夠的信⽤
• 對整個架構改寫通常不是⼀個好的策略
• 最好從戰略開始
© 2019, Domain Driven Design Taiwan Community
不是理想,但從戰術開始的話...
• 依照 Bounded Context 分類 Folder
• 使⽤ Value Object 增強表達
• 分離 Domain logic 與 Infrastructure 降低測試難度
© 2019, Domain Driven Design Taiwan Community
關於學習
• 讀書會
• Pair Programming
• 選擇具有價值⽽非最不重要的新功能做學習
© 2019, Domain Driven Design Taiwan Community
即使只是⼩團隊,也是會有火花
共同的討論,Pair Programming,
都能激發更多學習,引來更多信⼼
© 2019, Domain Driven Design Taiwan Community
Legacy
© 2019, Domain Driven Design Taiwan Community
不要整個重寫
© 2019, Domain Driven Design Taiwan Community
Bubble Context
“This first strategy does not require a big commitment to DDD. It
allows even a small team to achieve a modest objective involving
some intricate domain logic and, ideally, one with some strategic
value.
”
https://domainlanguage.com/wp-content/uploads/2016/04/
GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf
© 2019, Domain Driven Design Taiwan Community
使⽤ Bubble context 的時機
• 具有⼀定程度的價值與複雜度
• 依賴原服務的資料不是太多
© 2019, Domain Driven Design Taiwan Community
Bubble context
© 2019, Domain Driven Design Taiwan Community
結論
• 就像 Eric Evans 所說: “DDD 是⼀個指引原則”,我們應該依照現
況,迭代的引入適當的原則,祝⼤家在推廣 DDD 的旅程可以漸入佳
境
© 2019, Domain Driven Design Taiwan Community
The End

More Related Content

Similar to DDD for small organizations redelivery

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
solidkim
 
Applying Web 2.0 Concepts to Your Business
Applying Web 2.0 Concepts to Your BusinessApplying Web 2.0 Concepts to Your Business
Applying Web 2.0 Concepts to Your Business
digitalev
 
Jedemi mktg2012
Jedemi mktg2012Jedemi mktg2012
Jedemi mktg2012
Annie Gladue
 
2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices
Kim Kao
 
View - website portfolio
View - website portfolioView - website portfolio
View - website portfolio
View Strategic PLC
 
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspectiveMigrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Amazon Web Services
 
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
Business Development Institute
 
SDM: The Fundamentals of Software Delivery Management
SDM: The Fundamentals of Software Delivery ManagementSDM: The Fundamentals of Software Delivery Management
SDM: The Fundamentals of Software Delivery Management
DevOps.com
 
Spidvid
SpidvidSpidvid
Spidvid
David Court
 
U D O I, Sami Oinonen, Nokia, Feb 2, 2009
U D O I,  Sami  Oinonen,  Nokia,  Feb 2, 2009U D O I,  Sami  Oinonen,  Nokia,  Feb 2, 2009
U D O I, Sami Oinonen, Nokia, Feb 2, 2009Piotr_Krawczyk
 
Enterprise 2.0: Boosting Employee Productivity With Social Media
Enterprise 2.0: Boosting Employee Productivity With Social MediaEnterprise 2.0: Boosting Employee Productivity With Social Media
Enterprise 2.0: Boosting Employee Productivity With Social Media
Gerardo A Dada
 
Integrating ECM and Portal Technologies - 2011.09.08
Integrating ECM and Portal Technologies - 2011.09.08Integrating ECM and Portal Technologies - 2011.09.08
Integrating ECM and Portal Technologies - 2011.09.08
Alfresco Software
 
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
Enterprise Management Associates
 
Community Driven Innovation 200911
Community Driven Innovation 200911Community Driven Innovation 200911
Community Driven Innovation 200911OpenSourceCamp
 
Developing Smart Doers Into Smart Leaders
Developing Smart Doers Into Smart LeadersDeveloping Smart Doers Into Smart Leaders
Developing Smart Doers Into Smart Leaders
BlessingWhite
 
Cameron Digital Solutions
Cameron Digital SolutionsCameron Digital Solutions
Cameron Digital SolutionsRich McCombs
 
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterpriseApache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
Adrian Trenaman
 
Web Design Guide V.2010
Web Design Guide V.2010Web Design Guide V.2010
Web Design Guide V.2010
KMP Travel
 

Similar to DDD for small organizations redelivery (20)

2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
2019 04-25-agile communitymeetup-essentialcapabilitiesbehindmicroservices
 
Applying Web 2.0 Concepts to Your Business
Applying Web 2.0 Concepts to Your BusinessApplying Web 2.0 Concepts to Your Business
Applying Web 2.0 Concepts to Your Business
 
Jedemi mktg2012
Jedemi mktg2012Jedemi mktg2012
Jedemi mktg2012
 
2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices2019 03-23-2nd-meetup-essential capabilities behind microservices
2019 03-23-2nd-meetup-essential capabilities behind microservices
 
View - website portfolio
View - website portfolioView - website portfolio
View - website portfolio
 
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspectiveMigrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
Migrate-Critical-Workload-to-AWS-From-Domain-Driven-Design-perspective
 
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
Developing Content No Matter What the Resources - BDI 4/17/13 Content Marketi...
 
SDM: The Fundamentals of Software Delivery Management
SDM: The Fundamentals of Software Delivery ManagementSDM: The Fundamentals of Software Delivery Management
SDM: The Fundamentals of Software Delivery Management
 
Spidvid
SpidvidSpidvid
Spidvid
 
U D O I, Sami Oinonen, Nokia, Feb 2, 2009
U D O I,  Sami  Oinonen,  Nokia,  Feb 2, 2009U D O I,  Sami  Oinonen,  Nokia,  Feb 2, 2009
U D O I, Sami Oinonen, Nokia, Feb 2, 2009
 
Value of DCCC
Value of DCCCValue of DCCC
Value of DCCC
 
Enterprise 2.0: Boosting Employee Productivity With Social Media
Enterprise 2.0: Boosting Employee Productivity With Social MediaEnterprise 2.0: Boosting Employee Productivity With Social Media
Enterprise 2.0: Boosting Employee Productivity With Social Media
 
Integrating ECM and Portal Technologies - 2011.09.08
Integrating ECM and Portal Technologies - 2011.09.08Integrating ECM and Portal Technologies - 2011.09.08
Integrating ECM and Portal Technologies - 2011.09.08
 
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
Optimizing Cloud and Multi-Cloud Once You’re There: Solutions to the Toughest...
 
Community Driven Innovation 200911
Community Driven Innovation 200911Community Driven Innovation 200911
Community Driven Innovation 200911
 
Developing Smart Doers Into Smart Leaders
Developing Smart Doers Into Smart LeadersDeveloping Smart Doers Into Smart Leaders
Developing Smart Doers Into Smart Leaders
 
Cameron Digital Solutions
Cameron Digital SolutionsCameron Digital Solutions
Cameron Digital Solutions
 
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterpriseApache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
Apache coneu 2009-adrian-trenaman-adopting-open-source-in-the-enterprise
 
Web Design Guide V.2010
Web Design Guide V.2010Web Design Guide V.2010
Web Design Guide V.2010
 
Introduction IABPro
Introduction IABProIntroduction IABPro
Introduction IABPro
 

Recently uploaded

A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 

Recently uploaded (20)

A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 

DDD for small organizations redelivery

  • 1. © 2019, Domain Driven Design Taiwan Community Eric G. Huang 2020/06/28 DDD For Small Organizations (re-deliver session from ddddd, James Hickey)
  • 2. © 2019, Domain Driven Design Taiwan Community The Speaking https://www.youtube.com/watch?v=Xw_eh9vLAio
 Youtube https://www.youtube.com/channel/UCRafEj0oNnAxrHhDwe73QCQ
 Web Site https://www.jamesmichaelhickey.com/ James Hickey • Experienced .NET software architect & Microsoft certified professional • Helping tech companies increase their business & technical agility • Training software professionals to build high-quality software products 介紹原作者
  • 3. © 2019, Domain Driven Design Taiwan Community • DDD 常⾒誤解 • 新創公司 • 中⼩型組織
  • 4. © 2019, Domain Driven Design Taiwan Community • DDD 常⾒誤解 • 新創公司 • 中⼩型組織
  • 5. © 2019, Domain Driven Design Taiwan Community • DDD 常⾒誤解 • 新創公司 • 中⼩型組織
  • 6. © 2019, Domain Driven Design Taiwan Community • DDD 常⾒誤解 • 新創公司 • 中⼩型組織
  • 7. © 2019, Domain Driven Design Taiwan Community DDD 常⾒誤解
  • 8. © 2019, Domain Driven Design Taiwan Community DDD 帶來過度設計 ?
  • 9. © 2019, Domain Driven Design Taiwan Community 過度設計 ? “DDD 的⼀⼤好處便是它並不需要使⽤特 定的架構” - Implementing Domain Driven Design (中⽂ pg. 99,英⽂ pg. 113)
  • 10. © 2019, Domain Driven Design Taiwan Community 複製⼤型公司成功案例 過度設計 ? 架構是⼀種演化過程
  • 11. © 2019, Domain Driven Design Taiwan Community DDD 不 Agile ?
  • 12. © 2019, Domain Driven Design Taiwan Community 如果模型無法忠實地描述領域的關鍵概念,必 須重新設計它。這樣,建模和程式設計就結合 為⼀個 ”統⼀的迭代開發過程” DDD 不 Agile ? Domain Driven Design (中⽂ pg. 47)
  • 13. © 2019, Domain Driven Design Taiwan Community DDD 不 Agile ? • 新的挑戰 • 補捉知識 • 建模 • 實驗
  • 14. © 2019, Domain Driven Design Taiwan Community DDD is a Set of Guiding Principles - By Eric Evans • 專注於領域 • 透過溝通與共識探索模型 • 在同個語境下使⽤通⽤語⾔ https://www.youtube.com/watch?v=xyuKx5HsGK8
  • 15. © 2019, Domain Driven Design Taiwan Community 新創公司
  • 16. © 2019, Domain Driven Design Taiwan Community 新創公司的特性 • 快速變化 • ⾝兼多職
  • 17. © 2019, Domain Driven Design Taiwan Community Core Domain 可能改變 Focus Year Product 2 Product 2Product 1 Product 1
  • 18. © 2019, Domain Driven Design Taiwan Community “Only split around those boundaries that are clear at the beginning, and keep the rest on the more monolithic side” - Monolith To Microservices by Sam Newman
  • 19. © 2019, Domain Driven Design Taiwan Community 產品價值 時間 溝通、合作、探索 客⼾要求什麼做什麼
  • 20. © 2019, Domain Driven Design Taiwan Community 可以采⽤的策略⼯具 • Event Storming • Context Mapping • Aggregate Canvas
  • 21. © 2019, Domain Driven Design Taiwan Community Event Storming
  • 22. © 2019, Domain Driven Design Taiwan Community Context Mapping
  • 23. © 2019, Domain Driven Design Taiwan Community Aggregate Canvas
  • 24. © 2019, Domain Driven Design Taiwan Community 中⼩型組織
  • 25. © 2019, Domain Driven Design Taiwan Community 在導入之前... • 在團隊中是否有⾜夠的信⽤ • 對整個架構改寫通常不是⼀個好的策略 • 最好從戰略開始
  • 26. © 2019, Domain Driven Design Taiwan Community 不是理想,但從戰術開始的話... • 依照 Bounded Context 分類 Folder • 使⽤ Value Object 增強表達 • 分離 Domain logic 與 Infrastructure 降低測試難度
  • 27. © 2019, Domain Driven Design Taiwan Community 關於學習 • 讀書會 • Pair Programming • 選擇具有價值⽽非最不重要的新功能做學習
  • 28. © 2019, Domain Driven Design Taiwan Community 即使只是⼩團隊,也是會有火花 共同的討論,Pair Programming, 都能激發更多學習,引來更多信⼼
  • 29. © 2019, Domain Driven Design Taiwan Community Legacy
  • 30. © 2019, Domain Driven Design Taiwan Community 不要整個重寫
  • 31. © 2019, Domain Driven Design Taiwan Community Bubble Context “This first strategy does not require a big commitment to DDD. It allows even a small team to achieve a modest objective involving some intricate domain logic and, ideally, one with some strategic value. ” https://domainlanguage.com/wp-content/uploads/2016/04/ GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf
  • 32. © 2019, Domain Driven Design Taiwan Community 使⽤ Bubble context 的時機 • 具有⼀定程度的價值與複雜度 • 依賴原服務的資料不是太多
  • 33. © 2019, Domain Driven Design Taiwan Community Bubble context
  • 34. © 2019, Domain Driven Design Taiwan Community 結論 • 就像 Eric Evans 所說: “DDD 是⼀個指引原則”,我們應該依照現 況,迭代的引入適當的原則,祝⼤家在推廣 DDD 的旅程可以漸入佳 境
  • 35. © 2019, Domain Driven Design Taiwan Community The End