Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アカウント発行システムをDDDでリファクタリングしたら 幸せになりそうな予感がした
Search
sorch
December 23, 2020
Technology
1
290
アカウント発行システムをDDDでリファクタリングしたら 幸せになりそうな予感がした
sorch
December 23, 2020
Tweet
Share
More Decks by sorch
See All by sorch
他言語と比較して今こそ理解しよう! 目指せ、列挙型マスター!
soachr
0
230
おさらい!PHP8で廃止される機能
soachr
1
590
元Javaエンジニアが怖いと思うPHPの仕様
soachr
0
240
Other Decks in Technology
See All in Technology
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
120
Goで作って学ぶWebSocket
ryuichi1208
0
630
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
100
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
明日からできる!技術的負債の返済を加速するための実践ガイド~『ホットペッパービューティー』の事例をもとに~
recruitengineers
PRO
3
400
Larkご案内資料
customercloud
PRO
0
650
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
250
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
次世代KYC活動報告 / 20250219-BizDay17-KYC-nextgen
oidfj
0
250
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
150
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
2
1.5k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Designing for humans not robots
tammielis
250
25k
A Tale of Four Properties
chriscoyier
158
23k
Building Applications with DynamoDB
mza
93
6.2k
What's in a price? How to price your products and services
michaelherold
244
12k
We Have a Design System, Now What?
morganepeng
51
7.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
KATA
mclloyd
29
14k
Transcript
アカウント発行システムをDDDで リファクタリングしたら 幸せになりそうな予感がした @soachr (そーく) 設計・モデリング LT会 2020/12/23
@soachr(そーく)
今日話すこと
DDDのよさ is 仕様変更が圧倒的楽
社内の読書会で ドメイン駆動設計(DDD) と出会う https://booth.pm/ja/items/1835632
DDDやりたい
立ちはだかる壁
1. 10年以上ご愛顧いただいているサービスだからこそ発生する a. 追加仕様によるプログラムの肥大化&複雑化 b. 複雑すぎて誰も手が出せないプログラム 2. トランザクショナルなプログラム a. ビジネスロジックとデータ永続化が混在
b. 多い分岐・点在するコピペ処理
None
None
サービスに対してDDDは難しい けど...
サブシステムの アカウント発行システムなら 規模も小さい
アカウント発行システムを DDDでRe:モデリングしてみた
前提:アカウント発行システム • BtoB向けクラウドサービスのアカウント発行システムを想定 • アカウント発行時に契約したプラン・オプションを選択する 機能/プラン Premium Standard 機能A ◦
◦ 機能B ◦ ◦ 機能C ◦ - 機能D ※オプション ※オプション
アプリケーション層 =なにをするか(What)
ドメイン層 =どうやって実現するか (How) 機能/プラン Premium Standard 機能A ◦ ◦ 機能B
◦ ◦ 機能C ◦ - 機能D ※オプション ※オプション
DDDのよさ is 仕様変更が圧倒的楽
例:新しいプランを増設することになった 機能/プラン Premium Standard Lite 機能A ◦ ◦ ◦ 機能B
◦ ◦ - 機能C ◦ - - 機能D ※オプション ※オプション ※オプション
DDDじゃなかったら (トランザクショナルなら) • 設計・実装 ◦ 既存仕様理解&影響調査が大変 ▪ 大量にあるif分岐 ▪ 同じ変数による条件分岐が色々な場所に点在している
... ▪ ifとelseの処理がほぼ一緒でちょっとだけ違う ... • テスト ◦ 既存機能のデグレが怖い
None
DDDだったら • (ほぼ)1クラス追加するだけ
アプリケーション層は変更なし! 具体的にどうやってアカウントを発行するか はドメイン層に移譲しているため 変更点はなし 具体的にどうやってアカウントを発行するか の処理はドメイン層に移譲しているため 変更点はなし
None
おわりに • DDDでもっと楽できるはず! ◦ ”やること”を決めて”やり方”をビジネスの変化に伴って変えられる 設計 • サービスへのDDD適用は難しいかもしれないけれど、アカウント発行シ ステムなら手が出せそうかも!
ご清聴ありがとうございました