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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
sorch
December 23, 2020
Technology
310
1
Share
アカウント発行システムをDDDでリファクタリングしたら 幸せになりそうな予感がした
sorch
December 23, 2020
More Decks by sorch
See All by sorch
他言語と比較して今こそ理解しよう! 目指せ、列挙型マスター!
soachr
0
280
おさらい!PHP8で廃止される機能
soachr
1
660
元Javaエンジニアが怖いと思うPHPの仕様
soachr
0
280
Other Decks in Technology
See All in Technology
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
170
Route 53 Global Resolver で高額課金発生!
otanikohei2023
0
120
AI와 협업하는 조직으로의 여정
arawn
0
510
Do Ruby::Box dream of Modular Monolith?
joker1007
1
350
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.4k
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
1.2k
バイブコーディングで3倍早く⚪⚪を作ってみた
samakada
0
120
LLM時代の検索アーキテクチャと技術的意思決定
shibuiwilliam
3
1.5k
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
150
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
120
[最強DB講義]推薦システム | 評価編
recsyslab
PRO
0
100
CloudTrail を見つめ直してみる
kazzpapa3
1
110
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
Statistics for Hackers
jakevdp
799
230k
エンジニアに許された特別な時間の終わり
watany
106
240k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
150
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
140
Building the Perfect Custom Keyboard
takai
2
730
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
Building a Scalable Design System with Sketch
lauravandoore
463
34k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
280
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
130
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
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適用は難しいかもしれないけれど、アカウント発行シ ステムなら手が出せそうかも!
ご清聴ありがとうございました