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

実践DDD ~苦悩と悟り~

実践DDD ~苦悩と悟り~

実践DDD ~苦悩と悟り~

More Decks by レバレジーズTechアカウント

Other Decks in Technology

Transcript

  1. © 2023 Levtech Department All Rights Reserved.
    実践DDD ~苦悩と悟り~
    テックフェス2023春
    レバテック開発部 前原 宗太朗

    View Slide

  2. © 2023 Levtech Department All Rights Reserved.
    自己紹介

    レプリカ先生のアイコンの人です

    (好きな隊は生駒隊です。) 


    前職: DPS(広告配信)サーバーの開発 

    入社: 2022/06/01

    好きな言語: Rust

    趣味: League of Legendsを愛しています 

    面白いけど人に薦めれないゲームランキング1位(自分調べ)

    最近一番泣いたのは、幕張で行われたlolのオフイベのオープニング

    その前はlol worlds 2022の決勝のオープニング

    前原 宗太朗(29)

    View Slide

  3. © 2023 Levtech Department All Rights Reserved.
    我々は何

    Revtech-PJとは(略称:リバプロ)


    レバテックの「データ」「プロダクト」「オペレーション」「システム」を、

    再設計(ReDesign)、再構築(ReArchitect)し、

    非連続な事業成長へ向けて再始動(Restart)するプロジェクトの総称。

    Revtech-PJというプロジェクトやってます

    View Slide

  4. © 2023 Levtech Department All Rights Reserved.
    我々は何

    Revtech-PJとは(略称:リバプロ)


    レバテックの「データ」「プロダクト」「オペレーション」「システム」を、

    再設計(ReDesign)、再構築(ReArchitect)し、

    非連続な事業成長へ向けて再始動(Restart)するプロジェクトの総称。

    Revtech-PJというプロジェクトやってます
    → 要はレバテックの作り直しをしようとしてます

    View Slide

  5. © 2023 Levtech Department All Rights Reserved.
    本日のストーリー
    今日話すこと

    DDDに夢見る前原少年(29)が 

    DDDを実践し

    苦悩の末、悟りの境地に達し

    新たなる一歩を踏み出す


    View Slide

  6. © 2023 Levtech Department All Rights Reserved.
    ドメイン駆動設計とは
    ドメイン駆動設計とは

    ソフトウェアの設計と開発プロセスにおいて、ビジネスのニーズや目標(ドメイン)を
    中心に据え、それを直接的に反映したソフトウェアを開発するアプローチ


    要は、、、

    ビジネスの目標を中心に添えましょう

    目標を達成するシステムを作りましょう


    View Slide

  7. © 2023 Levtech Department All Rights Reserved.
    ドメイン駆動設計のイメージ
    ドメイン駆動設計とは

    ● 内部品質が上がる

    ○ ビジネスに理解のある人間と開発者間で共通の言語を使える 

    ■ 認識の齟齬が起きにくくなる 


    ○ 目的ごとにシステムが分解される(境界づけられたコンテキスト) 

    ■ システムが単一責務になるので、認知負荷も下がってアジリティも上がってみんなハッ
    ピー

    ■ システムの境界がわかるので、自然とマイクロサービスを構築できる 


    View Slide

  8. © 2023 Levtech Department All Rights Reserved.
    実際にやってみた (これだけで5分以上話せる内容なので割愛)
    ドメイン駆動設計やってみた

    https://docs.google.com/presentation/d/1AeciKDvaYumYGn5DqjOtvV74WJ8KbxCzZm44C3AHts0/edit#slide=id.g21eaee69fdb_0_49
    サービスの目的
    システムの
    大目的
    システムの中
    目的
    コアドメインの
    特定
    流れ

    View Slide

  9. © 2023 Levtech Department All Rights Reserved.
    ドメイン駆動設計やってみた


    View Slide

  10. © 2023 Levtech Department All Rights Reserved.
    苦悩
    実際やってみて

    ● アウトプットがあっているかどうかがわからない

    ○ どうなっていれば正解? 

    ○ 別の切り口もあるんじゃない? 

    ○ システムが単一目的になっている?疎結合になりそう? 


    View Slide

  11. © 2023 Levtech Department All Rights Reserved.
    悟り DDDは銀の弾丸ではない
    実際やってみて

    ● ドメインを継続的に改善していく意識が大事

    ○ どうなっていれば正解? 

    ■ 計測して継続的に改善する 

    ○ 別の切り口もあるんじゃない? 

    ■ 開発していく中で、ドメインの解像度を上げていく 

    ○ システムが単一目的になっている?疎結合になりそう? 

    ■ 粗くドメインを定義して、モジュラモノリスで構築 


    View Slide

  12. © 2023 Levtech Department All Rights Reserved.
    よかったと思うこと
    実際やってみて

    ● 草案となるドメインが定義できた

    ○ 開発を進める上でも、議論の土台となる 

    ● コアドメインの共通認識がとれた

    ○ どの領域が競争優位となり、 

    自社でリソースを投下して開発すべきか 

    ○ 逆にどの領域では既製品を使うべきか 

    よりポジティブに考えろと修造とアンミカが言ってた

    View Slide

  13. © 2023 Levtech Department All Rights Reserved.
    本当にやりたかったことは?
      DDDの夢から覚めて、初心に立ち返る

    ● 品質の向上

    ○ 品質には副特性があって、 

    達成手段の一つとしてDDDがある 


    大事なのは、、、

    どの品質を、どの水準まで達成したいの?

    その中でDDDはどの位置付けなの?


    View Slide