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
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
Search
MonotaRO
PRO
October 04, 2024
Programming
2.3k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
2024年10月4日のイベント実施資料
MonotaRO
PRO
October 04, 2024
More Decks by MonotaRO
See All by MonotaRO
AIでSDLCは変わろうとしている では、人と組織をどう再設計すべきか
monotaro
PRO
0
230
モノタロウにおけるSREの現在地:モダナイゼーションの過程で変化していく組織に、SREはどう向き合ったか
monotaro
PRO
2
650
AIと共に、組織をどう進化させるか?
monotaro
PRO
1
380
ビジネスを駆動するアーキテクチャへ ~AI-Agentという新しいアクター
monotaro
PRO
2
17k
事業成長を支えるためのデータ アーキテクチャの取り組み - Data Engineering Summit
monotaro
PRO
0
600
AIと共に進化するモノタロウ - AI駆動開発 Conference Autumn 2025
monotaro
PRO
8
4.2k
映えないObservability
monotaro
PRO
3
930
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
monotaro
PRO
0
330
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
2.5k
Other Decks in Programming
See All in Programming
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
2k
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
130
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3k
共通化で考えるべきは、実装より公開する型だった
codeegg
0
280
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
440
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
420
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
230
yield再入門 #phpcon
o0h
PRO
0
730
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
160
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
130
Featured
See All Featured
Building Adaptive Systems
keathley
44
3.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
Building AI with AI
inesmontani
PRO
1
1.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Raft: Consensus for Rubyists
vanstee
141
7.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Transcript
モノタロウ式~ドメインモデリングとリ アーキテクチャ 〜大規模システム変革に取り組んだ3年間でわかったこと 2024/9/26 株式会社MonotaRO CTO 普川泰如 1 © 2024
MonotaRO Co., Ltd. All Rights Reserved.
普川泰如 (ふかわ たいすけ) 株式会社 MonotaRO CTO taipuka0 慶応義塾大学環境情報学部卒業、 SIer企業を経て2009年にオイシックス・ラ・大地 に入社、2016年同システム副本部長。 2019年にモノタロウに参画。
2021年1月に ECシステムエンジニアリング部門長、 2022年4月に執行役CTO/VPoEに就任。 顧 客体験の向上をアジリティ高く行うべくシステム全体のモダナイゼーションと組織作 りを推進中。 趣 味 ランニング マラソン PB3時間56分 トレラン 高尾山、奥多摩周辺の山が多い キャンプ なぜか焚き火台3台所有、ほぼ焚き火をしている 2 登壇者紹介
このイベントの趣旨と想い 「ドメイン駆動設計をはじめよう」や「データモデリングでドメインを駆動 する」はじめ、2024年はドメイン駆動開発にまつわる良書がたくさん発売 されおり以前より情報が多く、実践的な内容も増えてきています。しかし実 際の事例に関する共有はまだ多くないと感じています。今回はモノタロウの 活動事例を紹介しつつ、普段現場で同じような取り組みをされている⽅、悩 んでいる⽅が交流し、学びあえる場を作っていければと思っています。 #techtalk_monotaro
本⽇の取り扱う内容 1. モノタロウはなぜドメインモデリングを行うのか? 2. 具体的にどういう流れでモデリングとアプリケーション の構築を行ったの? 3. 実際やってみて起きたこと、わかったことは何? 4. うまくやるための秘訣やヒントは何?
※時間の都合上実装や導⼊に関わる話は今回は取り上げません。第2回 を11⽉末か12⽉頭くらいで検討中です。
5 モノタロウで基幹システム刷新 を行う背景
システムと組織 6 BtoB を対象に、 自ら間接資材の在庫を持ち、 自らオンラインで売るEC企業 コールセンター、商 品 採 用、物
流、 マーケティング、データサイエンス、 IT など多くの業務とシステムを 自社開発、自社運用もしている フルスタック EC カンパニー 事業紹介
システムと組織 7 事業紹介 商品点数 2,217万点 ユーザー数 約910万件 売上(連結) 2542億円 グローバルに
サービス展開 ※前年比 +12.5%
わたしたちについて 8 事業成長サイクル 取扱商品 点数拡大 顧客数拡大 在庫点数 拡大 売上・利益 拡大
スケールアップ=利便性アップ •新規顧客獲得増 •ロングテール商品の購入頻度向上 •商品の在庫化が進むことによって 納期短縮、利便性向上 •プライベートブランド化も 推進し利益率向上 •検索ワード数拡大 •ワンストップショッピングの幅拡大 (取扱商品点数2,217万点) •周辺商品の取扱拡大
わたしたちについて 9 売上・登録口座数推移 売上は順調に増加 その裏でサービス、機 能、顧客の増加により 業務の複雑性も増加 売上2,000億円 突破 2009.12
東証一部変更 2006.12 マザーズ上場 (計画値) (百万円) (千口座)
10 モノタロウのビジネスモデル 事業成長サイクルのも と、商品数、顧客数、注 文数が増加、それにとも なって図の各ネットワー クも拡大していく。 結果、トランザクション 数と複雑性が増す。ドメ インロジックも激増。各
領域毎にスケールできる 状況にしていきたい。
11 ドメインモデリング① ドメイン分割と イベントストーミング
まずは顧客フルフィルメント業務全体を広範囲にイベントストーミング。 エンジニア、業務担当者、マネージャーなど総勢30名ほどが参加して全体感を共有。 ただしこれだけでは、システムの設計からはほど遠い。。。。 12 Web注文 キャンセル 受注保留 引当て 出荷指示 調達
出荷 配送 実践① 業務全体をイベントストーミング
• 協働的に業務プロセスをモデリングするワークショップの1手法 • 業務側(ドメインエキスパート)とエンジニアが一緒に行う • ワークの結果がソフトウェア設計のインプットになる 13 イベントストーミングとは
1. ドメインイベントを洗い出す 2. 時系列に並べる 3. 分割点となるイベント(ピボタルイベント)をマークする 4. 並行処理を見つける 5. 関係者・外部システムを洗い出す
6. 前から読み上げて曖昧なところがないか検証する 7. グループや集約、ドメイン境界(境界づけられたコンテキスト)を検討する 8. イベントストーミング全体を通じて、業務の認識や言葉の違い・新たな発見がなされる 14 イベントストーミングの進め方 より詳細を知りたい方は、 アマゾンウェブサービスジャパン ソリューションアーキテクトの 福井さんの以下の動画がおすすめ 実践!モノリスからマイクロサービス! Event Stormingによるドメイン駆動設計から実装まで | AWS Dev Day 2023 Tokyo
• ステークホルダー全員の共通認識のもと分析された業務プロセスが可視化される ◦ ユビキタス言語 → 言葉の統一による共通認識の深化 ◦ 境界づけられたコンテキスト → 同じ文脈で意思疎通可能な(いくつかの)業務領域
◦ ドメイン → 関心事を分離した業務領域、カプセル化で結合度低下と凝集性向上 • ドメインモデルはシステム設計のインプットになる • 得られるメリット ◦ 業務側・システム側の共通理解がそのままシステムに反映される ◦ 関心事が分離されているので、各システムが独立して変化できる 15 イベントストーミングに期待できること
16 受注/配送ドメイン境界議論 実践② 特定の領域でさらに分析 特に受注/配送ドメイン境界が 曖昧だったため議論を深めた。 この議論を通じて、受注ドメインの 責務について論点出しができた。 受注 引当
在庫 出荷 ※これもあくまで1トピックで 他の境界や業務整理が必要なところに ついて随時、分析を加えています
17 一度に全てを把握することは不可能。 全体から入りつつ、段階的に境界と繋がりを見極めていく必要がある。 抽象度の異なる複数のモデルを往復しながら進めていく手間のかかる作業。 全体から入り、段階的に詳細化し分析する ビッグピクチャー (広範な業務全体のプロセスモデル) コンテキストマップ * (区切られた文脈の関係図)
プロセスモデル (特定業務領域の詳細なプロセスモデル)
18 「流れ」のプロセスモデルから「構造」のドメインモデルを導き出すには ギャップが大きい。プロセスモデルから集約とコマンドを抜き出し、 集約の構成要素(概念)を見極め、概念の関係性を表すモデルを作成した。 実践③ 流れ から 構造 を導き出す
19 「流れ」のプロセスモデルから「構造」のドメインモデルを導き出すには ギャップが大きい。プロセスモデルから集約とコマンドを抜き出し、 集約の構成要素(概念)を見極め、概念の関係性を表すモデルを作成した。 ③ 流れ から 構造 を導き出す 19
リードモデル ドメインロ ジック 業務イベント
20 ④アーキテクチャと移行計画を考える 在庫ドメインが解決したい課題はp.26のスライドに集約されている。 課題と解決策を要約・抜粋すると、 • 在庫状況TBLが周辺業務の密結合点となり、複数の業務の関心事が混在している (業務領域間の結合度を下げる) ◦ 業務領域を基本単位として現モノリスから切り出し、データも独自に管理する ◦
他 業務領域とは非同期連携とする(EDA) • 業務知識が散在し、在庫状況TBLのデータ構造に依存する業務が多い (業務知識とデータ構造をカプセル化する) ◦ 業務領域ごとにデータを独自管理し、データの操作もひとまとめにする ◦ 業務が扱うデータと、公開するデータのモデルを分ける(CQRS) • 在庫状況TBLは履歴情報を保有できない (変更の履歴を持ち、任意の時点の状態を再現する) ◦ 業務イベント保有し、その積み上げによって最新の状態を得る(Event Sourcing)
21 現行システムからの移行計画 その1 ①EventSourcing+CQRS環境を構築 ②既存DBの変更をドメインイベントに変換+新ReadModelDBで業務遂行 ③ドメインアプリが既存DB更新とイベント発行を並行
22 現行システムからの移行計画 その2 ④既存アプリによる既存DB更新と、既存DBの変更検知を廃止 ⑤既存DBへの参照を廃止+猶予措置として新ReadMoelDBの内容を既存DBに書き戻し
23 説明: 既存DBの変更をDMSが検知し てReadReplicaに書き込み、 AWS Lambdaがドメインイベ ントに変換する。 ドメインイベントはMSKに割 り当てられたトピックに登録 され、さらに後続のドメイン
ロジックにより処理されて EventStoreに記録され、 ReadModelにも反映される。 移行ステップ的には②-1の状態 ④システムのアーキテクチャ概要
24 パネルディスカッション
25 登壇者紹介 福井 厚 デベロッパースペシャリスト ソリュー ションアーキテクト 金森 政雄 中西淳二
尾髙敏之 シニアアーキテクト エンジニアリングマネー ジャー デベロッパースペシャリスト ソ リューションアーキテクト
#主にAWSの福井さん、金森さん向け ・普段どういう活動をされているのでしょうか?特にお客様のサ ポートで行っていることを教えてください
#主にAWSの福井さん、金森さん向け ・いろいろな会社さまの取り組みをサポートしておられます、 何 か共通している苦労している/難しい点、成功へのキーポイント (型のようなもの) はありますでしょうか。
#主にAWSの福井さん、金森さん向け ・AWSさまから見て MonotaROの取り組みを定点観測的にみら れてきた中で、 率直にどうみられているか気づかれたこと、ユ ニークなポイントなどあれば 教えてください。
#主にMonotaRO向け ・ドメインモデリングを始めるにあたって、最初にどういうことをし たのか。やり方などの学び方はどのように行いましたか?
#主にMonotaRO向け ・イベントストーミングについてのやってみての感想やわかった ことを教えて下さい。
#主にMonotaRO向け ・ドメインモデリングを行っていく上で難しかったポイントを教えて ください
#主にMonotaRO向け ・実際やってみて本や Webなどから得られる知識との違い、や ギャップなどはありますか?
#全員 ・今日会場にいるみなさんに、特にドメインモデリングを始められ る方に一言、お伝えしたことがあれば。
Q&Aセッション