アカウント発行システムをDDDでリファクタリングしたら幸せになりそうな予感がした@soachr (そーく)設計・モデリング LT会2020/12/23
View Slide
@soachr(そーく)
今日話すこと
DDDのよさis仕様変更が圧倒的楽
社内の読書会でドメイン駆動設計(DDD)と出会うhttps://booth.pm/ja/items/1835632
DDDやりたい
立ちはだかる壁
1. 10年以上ご愛顧いただいているサービスだからこそ発生するa. 追加仕様によるプログラムの肥大化&複雑化b. 複雑すぎて誰も手が出せないプログラム2. トランザクショナルなプログラムa. ビジネスロジックとデータ永続化が混在b. 多い分岐・点在するコピペ処理
サービスに対してDDDは難しいけど...
サブシステムのアカウント発行システムなら規模も小さい
アカウント発行システムをDDDでRe:モデリングしてみた
前提:アカウント発行システム● BtoB向けクラウドサービスのアカウント発行システムを想定● アカウント発行時に契約したプラン・オプションを選択する機能/プラン Premium Standard機能A ○ ○機能B ○ ○機能C ○ -機能D ※オプション ※オプション
アプリケーション層=なにをするか(What)
ドメイン層=どうやって実現するか(How)機能/プラン Premium Standard機能A ○ ○機能B ○ ○機能C ○ -機能D ※オプション ※オプション
例:新しいプランを増設することになった機能/プラン Premium Standard Lite 機能A ○ ○ ○機能B ○ ○ -機能C ○ - -機能D ※オプション ※オプション ※オプション
DDDじゃなかったら(トランザクショナルなら)● 設計・実装○ 既存仕様理解&影響調査が大変■ 大量にあるif分岐■ 同じ変数による条件分岐が色々な場所に点在している...■ ifとelseの処理がほぼ一緒でちょっとだけ違う...● テスト○ 既存機能のデグレが怖い
DDDだったら● (ほぼ)1クラス追加するだけ
アプリケーション層は変更なし!具体的にどうやってアカウントを発行するかはドメイン層に移譲しているため変更点はなし具体的にどうやってアカウントを発行するかの処理はドメイン層に移譲しているため変更点はなし
おわりに● DDDでもっと楽できるはず!○ ”やること”を決めて”やり方”をビジネスの変化に伴って変えられる設計● サービスへのDDD適用は難しいかもしれないけれど、アカウント発行システムなら手が出せそうかも!
ご清聴ありがとうございました