Slide 1

Slide 1 text

モノタロウ式~ドメインモデリングとリ アーキテクチャ 〜大規模システム変革に取り組んだ3年間でわかったこと 2024/9/26 株式会社MonotaRO CTO 普川泰如 1 © 2024 MonotaRO Co., Ltd. All Rights Reserved.

Slide 2

Slide 2 text

普川泰如 (ふかわ たいすけ) 株式会社 MonotaRO CTO taipuka0 慶応義塾大学環境情報学部卒業、 SIer企業を経て2009年にオイシックス・ラ・大地 に入社、2016年同システム副本部長。 2019年にモノタロウに参画。 2021年1月に ECシステムエンジニアリング部門長、 2022年4月に執行役CTO/VPoEに就任。 顧 客体験の向上をアジリティ高く行うべくシステム全体のモダナイゼーションと組織作 りを推進中。 趣 味 ランニング マラソン PB3時間56分 トレラン  高尾山、奥多摩周辺の山が多い キャンプ  なぜか焚き火台3台所有、ほぼ焚き火をしている 2 登壇者紹介

Slide 3

Slide 3 text

このイベントの趣旨と想い 「ドメイン駆動設計をはじめよう」や「データモデリングでドメインを駆動 する」はじめ、2024年はドメイン駆動開発にまつわる良書がたくさん発売 されおり以前より情報が多く、実践的な内容も増えてきています。しかし実 際の事例に関する共有はまだ多くないと感じています。今回はモノタロウの 活動事例を紹介しつつ、普段現場で同じような取り組みをされている⽅、悩 んでいる⽅が交流し、学びあえる場を作っていければと思っています。 #techtalk_monotaro

Slide 4

Slide 4 text

本⽇の取り扱う内容 1. モノタロウはなぜドメインモデリングを行うのか? 2. 具体的にどういう流れでモデリングとアプリケーション の構築を行ったの? 3. 実際やってみて起きたこと、わかったことは何? 4. うまくやるための秘訣やヒントは何? ※時間の都合上実装や導⼊に関わる話は今回は取り上げません。第2回 を11⽉末か12⽉頭くらいで検討中です。

Slide 5

Slide 5 text

5 モノタロウで基幹システム刷新 を行う背景

Slide 6

Slide 6 text

システムと組織 6 BtoB を対象に、 自ら間接資材の在庫を持ち、 自らオンラインで売るEC企業 コールセンター、商 品 採 用、物 流、 マーケティング、データサイエンス、 IT など多くの業務とシステムを 自社開発、自社運用もしている フルスタック EC カンパニー 事業紹介

Slide 7

Slide 7 text

システムと組織 7 事業紹介 商品点数 2,217万点 ユーザー数 約910万件 売上(連結) 2542億円 グローバルに サービス展開  ※前年比 +12.5%

Slide 8

Slide 8 text

わたしたちについて 8 事業成長サイクル 取扱商品 点数拡大 顧客数拡大 在庫点数 拡大 売上・利益 拡大 スケールアップ=利便性アップ •新規顧客獲得増 •ロングテール商品の購入頻度向上 •商品の在庫化が進むことによって 納期短縮、利便性向上 •プライベートブランド化も 推進し利益率向上 •検索ワード数拡大 •ワンストップショッピングの幅拡大 (取扱商品点数2,217万点) •周辺商品の取扱拡大

Slide 9

Slide 9 text

わたしたちについて 9 売上・登録口座数推移 売上は順調に増加 その裏でサービス、機 能、顧客の増加により 業務の複雑性も増加 売上2,000億円 突破 2009.12 東証一部変更 2006.12 マザーズ上場 (計画値) (百万円) (千口座)

Slide 10

Slide 10 text

10 モノタロウのビジネスモデル 事業成長サイクルのも と、商品数、顧客数、注 文数が増加、それにとも なって図の各ネットワー クも拡大していく。 結果、トランザクション 数と複雑性が増す。ドメ インロジックも激増。各 領域毎にスケールできる 状況にしていきたい。

Slide 11

Slide 11 text

11 ドメインモデリング① ドメイン分割と イベントストーミング

Slide 12

Slide 12 text

まずは顧客フルフィルメント業務全体を広範囲にイベントストーミング。 エンジニア、業務担当者、マネージャーなど総勢30名ほどが参加して全体感を共有。 ただしこれだけでは、システムの設計からはほど遠い。。。。 12 Web注文 キャンセル 受注保留 引当て 出荷指示 調達 出荷 配送 実践① 業務全体をイベントストーミング

Slide 13

Slide 13 text

● 協働的に業務プロセスをモデリングするワークショップの1手法 ● 業務側(ドメインエキスパート)とエンジニアが一緒に行う ● ワークの結果がソフトウェア設計のインプットになる 13 イベントストーミングとは

Slide 14

Slide 14 text

1. ドメインイベントを洗い出す 2. 時系列に並べる 3. 分割点となるイベント(ピボタルイベント)をマークする 4. 並行処理を見つける 5. 関係者・外部システムを洗い出す 6. 前から読み上げて曖昧なところがないか検証する 7. グループや集約、ドメイン境界(境界づけられたコンテキスト)を検討する 8. イベントストーミング全体を通じて、業務の認識や言葉の違い・新たな発見がなされる 14 イベントストーミングの進め方 より詳細を知りたい方は、 アマゾンウェブサービスジャパン ソリューションアーキテクトの 福井さんの以下の動画がおすすめ 実践!モノリスからマイクロサービス! Event Stormingによるドメイン駆動設計から実装まで | AWS Dev Day 2023 Tokyo

Slide 15

Slide 15 text

● ステークホルダー全員の共通認識のもと分析された業務プロセスが可視化される ○ ユビキタス言語 → 言葉の統一による共通認識の深化 ○ 境界づけられたコンテキスト → 同じ文脈で意思疎通可能な(いくつかの)業務領域 ○ ドメイン → 関心事を分離した業務領域、カプセル化で結合度低下と凝集性向上 ● ドメインモデルはシステム設計のインプットになる ● 得られるメリット ○ 業務側・システム側の共通理解がそのままシステムに反映される ○ 関心事が分離されているので、各システムが独立して変化できる 15 イベントストーミングに期待できること

Slide 16

Slide 16 text

16 受注/配送ドメイン境界議論 実践② 特定の領域でさらに分析 特に受注/配送ドメイン境界が 曖昧だったため議論を深めた。 この議論を通じて、受注ドメインの 責務について論点出しができた。 受注 引当 在庫 出荷 ※これもあくまで1トピックで 他の境界や業務整理が必要なところに ついて随時、分析を加えています

Slide 17

Slide 17 text

17 一度に全てを把握することは不可能。 全体から入りつつ、段階的に境界と繋がりを見極めていく必要がある。 抽象度の異なる複数のモデルを往復しながら進めていく手間のかかる作業。 全体から入り、段階的に詳細化し分析する ビッグピクチャー (広範な業務全体のプロセスモデル) コンテキストマップ * (区切られた文脈の関係図) プロセスモデル (特定業務領域の詳細なプロセスモデル)

Slide 18

Slide 18 text

18 「流れ」のプロセスモデルから「構造」のドメインモデルを導き出すには ギャップが大きい。プロセスモデルから集約とコマンドを抜き出し、 集約の構成要素(概念)を見極め、概念の関係性を表すモデルを作成した。 実践③ 流れ から 構造 を導き出す

Slide 19

Slide 19 text

19 「流れ」のプロセスモデルから「構造」のドメインモデルを導き出すには ギャップが大きい。プロセスモデルから集約とコマンドを抜き出し、 集約の構成要素(概念)を見極め、概念の関係性を表すモデルを作成した。 ③ 流れ から 構造 を導き出す 19 リードモデル ドメインロ ジック 業務イベント

Slide 20

Slide 20 text

20 ④アーキテクチャと移行計画を考える 在庫ドメインが解決したい課題はp.26のスライドに集約されている。 課題と解決策を要約・抜粋すると、 ● 在庫状況TBLが周辺業務の密結合点となり、複数の業務の関心事が混在している (業務領域間の結合度を下げる) ○ 業務領域を基本単位として現モノリスから切り出し、データも独自に管理する ○ 他 業務領域とは非同期連携とする(EDA) ● 業務知識が散在し、在庫状況TBLのデータ構造に依存する業務が多い (業務知識とデータ構造をカプセル化する) ○ 業務領域ごとにデータを独自管理し、データの操作もひとまとめにする ○ 業務が扱うデータと、公開するデータのモデルを分ける(CQRS) ● 在庫状況TBLは履歴情報を保有できない (変更の履歴を持ち、任意の時点の状態を再現する) ○ 業務イベント保有し、その積み上げによって最新の状態を得る(Event Sourcing)

Slide 21

Slide 21 text

21 現行システムからの移行計画 その1 ①EventSourcing+CQRS環境を構築 ②既存DBの変更をドメインイベントに変換+新ReadModelDBで業務遂行 ③ドメインアプリが既存DB更新とイベント発行を並行

Slide 22

Slide 22 text

22 現行システムからの移行計画 その2 ④既存アプリによる既存DB更新と、既存DBの変更検知を廃止 ⑤既存DBへの参照を廃止+猶予措置として新ReadMoelDBの内容を既存DBに書き戻し

Slide 23

Slide 23 text

23 説明: 既存DBの変更をDMSが検知し てReadReplicaに書き込み、 AWS Lambdaがドメインイベ ントに変換する。 ドメインイベントはMSKに割 り当てられたトピックに登録 され、さらに後続のドメイン ロジックにより処理されて EventStoreに記録され、 ReadModelにも反映される。 移行ステップ的には②-1の状態 ④システムのアーキテクチャ概要

Slide 24

Slide 24 text

24 パネルディスカッション

Slide 25

Slide 25 text

25 登壇者紹介 福井 厚 デベロッパースペシャリスト ソリュー ションアーキテクト 金森 政雄 中西淳二 尾髙敏之 シニアアーキテクト エンジニアリングマネー ジャー デベロッパースペシャリスト ソ リューションアーキテクト

Slide 26

Slide 26 text

#主にAWSの福井さん、金森さん向け ・普段どういう活動をされているのでしょうか?特にお客様のサ ポートで行っていることを教えてください

Slide 27

Slide 27 text

#主にAWSの福井さん、金森さん向け ・いろいろな会社さまの取り組みをサポートしておられます、 何 か共通している苦労している/難しい点、成功へのキーポイント (型のようなもの) はありますでしょうか。

Slide 28

Slide 28 text

#主にAWSの福井さん、金森さん向け ・AWSさまから見て MonotaROの取り組みを定点観測的にみら れてきた中で、 率直にどうみられているか気づかれたこと、ユ ニークなポイントなどあれば 教えてください。

Slide 29

Slide 29 text

#主にMonotaRO向け ・ドメインモデリングを始めるにあたって、最初にどういうことをし たのか。やり方などの学び方はどのように行いましたか?

Slide 30

Slide 30 text

#主にMonotaRO向け ・イベントストーミングについてのやってみての感想やわかった ことを教えて下さい。

Slide 31

Slide 31 text

#主にMonotaRO向け ・ドメインモデリングを行っていく上で難しかったポイントを教えて ください

Slide 32

Slide 32 text

#主にMonotaRO向け ・実際やってみて本や Webなどから得られる知識との違い、や ギャップなどはありますか?

Slide 33

Slide 33 text

#全員 ・今日会場にいるみなさんに、特にドメインモデリングを始められ る方に一言、お伝えしたことがあれば。

Slide 34

Slide 34 text

Q&Aセッション