Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learning Domain-Driven Design輪読会 #19

kyotak
January 12, 2023
33

Learning Domain-Driven Design輪読会 #19

kyotak

January 12, 2023
Tweet

Transcript

  1. Learning Domain-Driven Design

    輪読会 #19

    株式会社Showcase Gig 

    中島 清貴 (@ahyataro) 

    #lddd_rindoku

    Closing Words 


    View full-size slide

  2. 本資料は書籍「Learning Domain-Driven
    Design」を意訳・要約したものです。

    資料に記載の内容は @ahyataro が解釈した
    内容であり、原文の表現や内容と異なるもの
    も含まれています

    注意


    View full-size slide

  3. OverView

    Closing Words

    ● Problem

    ● Solution

    ● Implementation 

    ● Further Reading

    ● Conclusion


    View full-size slide

  4. “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ジャーニーをきちんと要約している


    View full-size slide

  5. Problem

    ● ソフトウェアソリューションを提供するには、まず問題を理解する必要がある

    ○ 私たちが取り組んでいるビジネスドメインは何か?ビジネスの目標は何
    か?それらを達成するための戦略は何か?

    ● ユビキタス言語を使用して、ソフトウェアに実装する必要のあるビジネスドメイン
    とそのロジックを深く理解した

    ● ビジネス上の問題の複雑さを境界づけられたコンテキストに分解することで管
    理する方法を学習した

    ○ 各コンテキストは特定の問題を解決することを目的としたビジネスドメイン
    の単一のモデルを実装する


    View full-size slide

  6. Problem

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


    View full-size slide

  7. Solution

    ● この知識を活用して、サブドメインの種類ごとに最適化され
    たソリューションを設計する方法を学習した

    ● 4つのビジネスロジック実装パターンと各パターンが役立つ
    シナリオについて説明した

    ○ トランザクションスクリプト

    ○ アクティブレコード

    ○ ドメインモデル

    ○ イベントソースドメインモデル

    ● ビジネスロジックの実装に必要な3つのアーキテクチャにつ
    いても説明した

    ○ レイヤードアーキテクチャ

    ○ ポート&アダプター

    ○ CQRS

    ● 右図はこれらのパターンを使用した戦術的意思決定の
    ヒューリスティクスをまとめたもの


    View full-size slide

  8. Implementation

    ● Part Ⅲでは、理論を実践に変える以下の方法について議論した

    ○ イベントストーミングセッションによってユビキタス言語を効果的に構築する方
    法

    ○ ビジネスドメインの進化に合わせて設計を保つ方法

    ○ brownfieldプロジェクトでドメイン駆動設計を導入する方法

    ● Part Ⅳでは、ドメイン駆動設計と他の方法論やパターン(マイクロサービス、イベント
    駆動型アーキテクチャ、データメッシュ)との相互作用について説明した

    ● DDDはこれらの手法と組み合わせて使用できるだけでなく、互いに補完し合うことが
    わかった


    View full-size slide

  9. 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


    View full-size slide

  10. 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


    View full-size slide

  11. 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


    View full-size slide

  12. Further Reading

    ● Brandolini, A. (Not yet published). Introducing EventStorming. Leanpub.

    ● Rayner, P. (Not yet published). The EventStorming Handbook. Leanpub.


    EventStoming


    View full-size slide

  13. Conclusion

    ● 本書から理解してほしいのは、ドメイン駆動設計ツールの背後にあるロジックと原則

    ● ドメイン駆動設計に盲目的に従うのではなく、それが基づいている理論を理解しても
    らいたい

    ● この理解により、DDDを適用し、DDDから価値を得る機会が大幅に増加する

    ● ドメイン駆動設計の哲学を理解することは、特にbrownfieldプロジェクトで、方法論の
    概念を個別に組み込むことの価値を高める鍵でもある

    ● 最後に、常にユビキタス言語に注意し、疑わしい場合はイベントストーミングを実行
    してください!Good luck!


    View full-size slide