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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
190
モノタロウにおけるSREの現在地:モダナイゼーションの過程で変化していく組織に、SREはどう向き合ったか
monotaro
PRO
1
600
AIと共に、組織をどう進化させるか?
monotaro
PRO
1
360
ビジネスを駆動するアーキテクチャへ ~AI-Agentという新しいアクター
monotaro
PRO
2
16k
事業成長を支えるためのデータ アーキテクチャの取り組み - Data Engineering Summit
monotaro
PRO
0
560
AIと共に進化するモノタロウ - AI駆動開発 Conference Autumn 2025
monotaro
PRO
8
4.1k
映えないObservability
monotaro
PRO
2
890
Datadogを活用した マイクロサービスの可観測性向上 ~モノタロウの導入効果と実践ノウハウ~
monotaro
PRO
0
300
FastAPIの魔法をgRPC/Connect RPCへ
monotaro
PRO
1
2.4k
Other Decks in Programming
See All in Programming
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.7k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
540
dRuby over BLE
makicamel
2
330
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
New "Type" system on PicoRuby
pocke
1
860
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
7
4.3k
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
250
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
110
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
570
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Google's AI Overviews - The New Search
badams
0
1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Discover your Explorer Soul
emna__ayadi
2
1.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
What's in a price? How to price your products and services
michaelherold
247
13k
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セッション