Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20241004 モノタロウ式~ドメインモデリングとリアーキテクチャ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
MonotaRO
PRO
October 04, 2024
Programming
2.4k
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
290
モノタロウにおけるSREの現在地:モダナイゼーションの過程で変化していく組織に、SREはどう向き合ったか
monotaro
PRO
2
740
AIと共に、組織をどう進化させるか?
monotaro
PRO
1
430
ビジネスを駆動するアーキテクチャへ ~AI-Agentという新しいアクター
monotaro
PRO
2
17k
事業成長を支えるためのデータ アーキテクチャの取り組み - Data Engineering Summit
monotaro
PRO
0
710
AIと共に進化するモノタロウ - AI駆動開発 Conference Autumn 2025
monotaro
PRO
8
4.4k
映えないObservability
monotaro
PRO
3
1k
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
monotaro
PRO
0
410
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
2.8k
Other Decks in Programming
See All in Programming
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
0
210
Security issues being discussed on Web Platforms
petamoriken
0
1.2k
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
120
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
360
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
3.1k
Webの地図
yosuke_furukawa
PRO
6
4.7k
iOSDC2026登壇資料.pdf
riofujimon
0
180
Heart of Swift Concurrency
koher
0
960
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
140
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
160
Workers Cache を知る
syumai
0
210
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
670
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セッション