Slide 1

Slide 1 text

Learning Domain-Driven Design
 輪読会 #19
 株式会社Showcase Gig 
 中島 清貴 (@ahyataro) 
 #lddd_rindoku
 Closing Words 


Slide 2

Slide 2 text

本資料は書籍「Learning Domain-Driven Design」を意訳・要約したものです。
 資料に記載の内容は @ahyataro が解釈した 内容であり、原文の表現や内容と異なるもの も含まれています
 注意


Slide 3

Slide 3 text

OverView
 Closing Words
 ● Problem
 ● Solution
 ● Implementation 
 ● Further Reading
 ● Conclusion


Slide 4

Slide 4 text

“There is no sense in talking about the solution before we agree on the problem, and no sense talking about the implementation steps before we agree on the solution. “ “問題を理解する前に解決策について話すことには意味がなく、解決策を理解する前に 実装手順について話す意味はない”
 本書の冒頭にあった引用
 この引用は、私たちのDDDジャーニーをきちんと要約している


Slide 5

Slide 5 text

Problem
 ● ソフトウェアソリューションを提供するには、まず問題を理解する必要がある
 ○ 私たちが取り組んでいるビジネスドメインは何か?ビジネスの目標は何 か?それらを達成するための戦略は何か?
 ● ユビキタス言語を使用して、ソフトウェアに実装する必要のあるビジネスドメイン とそのロジックを深く理解した
 ● ビジネス上の問題の複雑さを境界づけられたコンテキストに分解することで管 理する方法を学習した
 ○ 各コンテキストは特定の問題を解決することを目的としたビジネスドメイン の単一のモデルを実装する


Slide 6

Slide 6 text

Problem
 ビジネスドメインの構成要素(コア、サポート、汎用)を特定して分類する方法について 説明した
 


Slide 7

Slide 7 text

Solution
 ● この知識を活用して、サブドメインの種類ごとに最適化され たソリューションを設計する方法を学習した 
 ● 4つのビジネスロジック実装パターンと各パターンが役立つ シナリオについて説明した
 ○ トランザクションスクリプト
 ○ アクティブレコード
 ○ ドメインモデル
 ○ イベントソースドメインモデル
 ● ビジネスロジックの実装に必要な3つのアーキテクチャにつ いても説明した
 ○ レイヤードアーキテクチャ
 ○ ポート&アダプター
 ○ CQRS
 ● 右図はこれらのパターンを使用した戦術的意思決定の ヒューリスティクスをまとめたもの


Slide 8

Slide 8 text

Implementation
 ● Part Ⅲでは、理論を実践に変える以下の方法について議論した
 ○ イベントストーミングセッションによってユビキタス言語を効果的に構築する方 法
 ○ ビジネスドメインの進化に合わせて設計を保つ方法
 ○ brownfieldプロジェクトでドメイン駆動設計を導入する方法
 ● Part Ⅳでは、ドメイン駆動設計と他の方法論やパターン(マイクロサービス、イベント 駆動型アーキテクチャ、データメッシュ)との相互作用について説明した
 ● DDDはこれらの手法と組み合わせて使用できるだけでなく、互いに補完し合うことが わかった


Slide 9

Slide 9 text

Further Reading
 ● Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston: Addison-Wesley.
 ● Martraire, C. (2019). Living Documentation: Continuous Knowledge Sharing by Design. Boston: Addison-Wesley.
 ● Vernon, V. (2013). Implementing Domain-Driven Design. Boston: Addison-Wesley.
 ● Young, G. (2017). Versioning in an Event Sourced System. Leanpub.
 Advanced Domain-Driven Design


Slide 10

Slide 10 text

Further Reading
 ● Dehghani, Z. (Expected to be published in 2022). Data Mesh: Delivering Data-Driven Value at Scale. Boston: O’Reilly.
 ● Fowler, M. (2002). Patterns of Enterprise Application Architecture. Boston: Addison-Wesley.
 ● Hohpe, G., & Woolf, B. (2003). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Boston: Addison-Wesley.
 ● Richardson, C. (2019). Microservice Patterns: With Examples in Java. New York: Manning Publications.
 
 Architectural and Integration Patterns


Slide 11

Slide 11 text

Further Reading
 ● Kaiser, S. (Expected to be published in 2022). Adaptive Systems with Domain-Driven Design, Wardley Mapping, and Team Topologies. Boston: Addison-Wesley.
 ● Tune, N. (Expected to be published in 2022). Architecture Modernization: Product, Domain, & Team Oriented. Leanpub.
 ● Vernon, V., & Jaskula, T. (2021). Implementing Strategic Monoliths and Microservices. Boston: Addison-Wesley.
 ● Vernon, V., & Jaskula, T. (2021). Strategic Monoliths and Microservices. Boston: Addison-Wesley.
 
 Modernization of Legacy Systems


Slide 12

Slide 12 text

Further Reading
 ● Brandolini, A. (Not yet published). Introducing EventStorming. Leanpub.
 ● Rayner, P. (Not yet published). The EventStorming Handbook. Leanpub.
 
 EventStoming


Slide 13

Slide 13 text

Conclusion
 ● 本書から理解してほしいのは、ドメイン駆動設計ツールの背後にあるロジックと原則
 ● ドメイン駆動設計に盲目的に従うのではなく、それが基づいている理論を理解しても らいたい
 ● この理解により、DDDを適用し、DDDから価値を得る機会が大幅に増加する
 ● ドメイン駆動設計の哲学を理解することは、特にbrownfieldプロジェクトで、方法論の 概念を個別に組み込むことの価値を高める鍵でもある
 ● 最後に、常にユビキタス言語に注意し、疑わしい場合はイベントストーミングを実行 してください!Good luck!