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
基幹システムの変更を楽で安全にする
Search
増田 亨
PRO
January 17, 2022
Programming
4k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
基幹システムの変更を楽で安全にする
大規模な基幹システムの再構築にドメイン駆動設計を適用する取り組みの簡単な紹介です。
増田 亨
PRO
January 17, 2022
More Decks by 増田 亨
See All by 増田 亨
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
8.1k
データエンジニアリングとドメイン駆動設計
masuda220
PRO
15
3.1k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
30
15k
SCSD:事業価値を生み出すソフトウェア開発の実践技法
masuda220
PRO
4
300
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
9
1.5k
競争優位を生み出す戦略的内製開発の実践技法
masuda220
PRO
4
800
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
30
24k
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
38
18k
ドメイン駆動設計のエッセンス
masuda220
PRO
20
8.9k
Other Decks in Programming
See All in Programming
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
490
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
630
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
270
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
570
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
160
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
Webエンジニアなのにブラウザの仕組みがわからないので、Pythonで自作してみた
tatsuki12
4
1.7k
信頼性の目標を誰も求めてない
shubox
0
490
業務時間外もAIに働いてもらう話
colorful12
3
10k
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Ethics towards AI in product and experience design
skipperchong
2
360
What's in a price? How to price your products and services
michaelherold
247
13k
Un-Boring Meetings
codingconduct
0
410
Crafting Experiences
bethany
1
300
Believing is Seeing
oripsolob
1
210
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
GitHub's CSS Performance
jonrohan
1033
470k
Code Reviewing Like a Champion
maltzj
528
40k
Transcript
基幹システムの 変更を楽で安全にする 2022年1月17日 有限会社システム設計 増田
基幹システムを作り変える 大手損害保険会社の基幹システム • 開発費用の総額1200億円? 年商2000億円規模の通販会社の基幹システム • 開発費用 数十億円 × 数回
• 年間IT費用 数十億円/年
共通のテーマ • ビジネスの要求に応えるシステム変更スピード向上 • ソフトウェア開発コスト(初期・拡張)の削減 • 修正コストの削減
NRIでの実証実験 現行システム実績 今回の試作 初期開発 開発規模 183 千行 97 千行 設計書ボリューム
153本 1枚 (規定集・マニュアルを使用) 変更要求 への対応 モジュール数 追加3 修正65 追加1 修正2 変更規模 5 千行 9 百行 設計書ボリューム 26 枚 0 枚 (業務マニュアル改訂版を使用) 「NRI ドメイン駆動設計」で検索すると 実験の報告書をダウンロードできます。
実際にどう進めているか
現場でやっていること why の合意形成 「良い設計は悪い設計より変更が楽で安全」 ・悪い設計で失っているものの言語化・数値化 ・良い設計で得られるものの言語化・数値化 how の認識合わせ ・ビジネスルール(計算判断ロジック)中心の構造 ・事実の記録中心のテーブル設計
・一覧網羅ではなく濃淡づけとカテゴライズ what の体験学習 ・ドメインオブジェトを実際に書いて動かす ・イミュータブルなテーブル設計で実際に動かす ・一覧の分類、要点の絞り込み、ノイズの除去
変更を楽に安全にするための設計方針 ドメインモデルパターン 組み立て思考で開発 イミュータブル データモデル トランザクション スクリプトパターン ミュータブル データモデル 分解思考で開発
ドメインモデルパターンへの切り替え トランザクションスクリプトパターン ドメインモデルパターン 入出力中心(画面+データベース操作) ビジネスルール(計算判断ロジック)中心 手続き的なプログラミング (データクラスと機能クラス) オブジェクト指向プログラミング (ロジックとデータのカプセル化) 外部設計書
⇒ 内部設計書 規程集・業務マニュアル⇒クラス設計 入出力項目定義⇒入出力処理の記述 計算判断ロジックの記述⇒必要な入出力
イミュータブルデータモデルへの切り替え ミュータブルデータモデル イミュータブルデータモデル 状態の変更と参照が中心 事実の記録が中心 SELECT FOR UPDATE INSERT DELETE
大きなテーブル 小さなテーブル 制約はずし/制約のがれ 制約の徹底 (主キー・外部キー・一意・NOT NULL)
開発のやり方の切り替え 分解思考で開発 組み立て思考で開発 最終形を確定 最終形を仮置き 機能一覧・画面一覧・テーブル一覧 主要な要素・全体の枠組み・構造の軸 分業・分担 協業・補完 標準化・均一化
重みづけ・濃淡・取捨選択
手を動かして習得・納得・手ごたえ
実際に手を動かして習得する/実証する クラス定義 using Java github issue/project テーブル定義 using DDL 詳細設計書
概念ER図 テーブル定義書 WBS・ガントチャート 機能一覧