Share
Embed
Transcript
13 slides
-
Learning Domain-Driven Design 輪読会 #19 株式会社Showcase Gig 中島 清貴
(@ahyataro) #lddd_rindoku Closing Words -
OverView Closing Words • Problem • Solution • Implementation
• Further Reading • Conclusion -
“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ジャーニーをきちんと要約している -
Problem • ソフトウェアソリューションを提供するには、まず問題を理解する必要がある ◦ 私たちが取り組んでいるビジネスドメインは何か?ビジネスの目標は何 か?それらを達成するための戦略は何か? • ユビキタス言語を使用して、ソフトウェアに実装する必要のあるビジネスドメイン とそのロジックを深く理解した •
ビジネス上の問題の複雑さを境界づけられたコンテキストに分解することで管 理する方法を学習した ◦ 各コンテキストは特定の問題を解決することを目的としたビジネスドメイン の単一のモデルを実装する -
Solution • この知識を活用して、サブドメインの種類ごとに最適化され たソリューションを設計する方法を学習した • 4つのビジネスロジック実装パターンと各パターンが役立つ シナリオについて説明した ◦ トランザクションスクリプト
◦ アクティブレコード ◦ ドメインモデル ◦ イベントソースドメインモデル • ビジネスロジックの実装に必要な3つのアーキテクチャにつ いても説明した ◦ レイヤードアーキテクチャ ◦ ポート&アダプター ◦ CQRS • 右図はこれらのパターンを使用した戦術的意思決定の ヒューリスティクスをまとめたもの -
Implementation • Part Ⅲでは、理論を実践に変える以下の方法について議論した ◦ イベントストーミングセッションによってユビキタス言語を効果的に構築する方 法 ◦ ビジネスドメインの進化に合わせて設計を保つ方法 ◦
brownfieldプロジェクトでドメイン駆動設計を導入する方法 • Part Ⅳでは、ドメイン駆動設計と他の方法論やパターン(マイクロサービス、イベント 駆動型アーキテクチャ、データメッシュ)との相互作用について説明した • DDDはこれらの手法と組み合わせて使用できるだけでなく、互いに補完し合うことが わかった -
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 -
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 -
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 -
Further Reading • Brandolini, A. (Not yet published). Introducing EventStorming.
Leanpub. • Rayner, P. (Not yet published). The EventStorming Handbook. Leanpub. EventStoming -
Conclusion • 本書から理解してほしいのは、ドメイン駆動設計ツールの背後にあるロジックと原則 • ドメイン駆動設計に盲目的に従うのではなく、それが基づいている理論を理解しても らいたい • この理解により、DDDを適用し、DDDから価値を得る機会が大幅に増加する • ドメイン駆動設計の哲学を理解することは、特にbrownfieldプロジェクトで、方法論の
概念を個別に組み込むことの価値を高める鍵でもある • 最後に、常にユビキタス言語に注意し、疑わしい場合はイベントストーミングを実行 してください!Good luck!