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