Upgrade to Pro — share decks privately, control downloads, hide ads and more …

試行錯誤しながらイベントストーミングにチャレンジした話

SansanTech
August 07, 2024
270

 試行錯誤しながらイベントストーミングにチャレンジした話

■イベント
モデリングの実践と苦悩 〜かとじゅんさんと探る成功の鍵〜
https://sansan.connpass.com/event/324542/

■発表者
技術本部 Bill One Engineering Unit 鈴木満

■ Bill One 開発エンジニア 採用情報
https://media.sansan-engineering.com/billone-engineer

■Sansan Tech Blog
https://buildersbox.corp-sansan.com/

SansanTech

August 07, 2024
Tweet

More Decks by SansanTech

Transcript

  1. - 専門的なドメイン知識が必要 - あらゆる入金のパターン(合算入金、分割入金、差額など) - 仕訳などの会計知識 - 外部システムとの複雑な連携 - 仮想口座の発行や入金通知の受信など

    - バッチ処理や非同期処理など、さまざまなタイミングで連携が必要 - 設計やモデリングの経験が浅いメンバーが多い 開発の課題になりそうだったポイント これらの辛みと戦うために、イベントストーミングに着目
  2. イベントストーミングとは 引用元: Introducing EventStorming P.261 (Alberto Brandolini) - 業務やシステムのフローを可視化するためのワークショップ -

    ドメインエキスパートと開発者が共同で行う - ビジネス要求や課題点を明らかにし、ソフトウェア設計に活用する
  3. - 最近出たさまざまなDDD本でも登場 - 関数型ドメインモデリング: 2024年6月28日(Scott Wlaschin) - [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ: 2024年7月1日(増田亨

    他) - ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法: 2024 年7月20日(Vlad Khononov) - ユビキタス言語やドメイン知識が対話を通して自然と形成されるため、 ドメインモデリングの手法としても活用される イベントストーミングとドメイン駆動設計
  4. イベントストーミングの流れ(ざっくり) 1. イベント(業務的な意味のある出来事) 1. ホットスポット(留意点・懸念点など) ※ここは各ステップで都度行う 1. コマンド(イベントをトリガーした操作) 1. アクター

    (コマンドを発生させた人やシステム) 1. リードモデル・ポリシー (アクターがコマンドをするきっかけ) 1. 集約(一貫性のある単位) 入金が消し 込まれた 入金が 通知された 入金を 通知する 入金が 通知された 入金を 通知する 住信SBI ネット銀行 入金が 通知された 入金を 通知する 住信SBI ネット銀行 通知ポリシー - 振込時に即時 - 夜間や休日は停止 入金が 通知された 入金を 通知する 住信SBI ネット銀行 通知ポリシー - 振込時に即時 - 夜間や休日は停止 入金 入金が 通知された 入金が通知される タイミングは? 請求書が 届いた
  5. 振り返りで改善点を探す - イベントストーミングの進め方に問題がある - 細かい議論に入りがちで本筋から外れてしま う場面があった - 特定の人が議論の中心になってしまった - 業務の解像度がところどころ低い

    - 全体を見るには単純に時間が足りなかった - モデリングや設計に活用できてない - イベントストーミングの結果を後続の作業に どう活かすか?
  6. 改善点1:イベントストーミングの進め方 対策: イベントストーミングのフェーズを意識してスコープを決めて、フ ェーズごとに必要な参加者を変える 参加者の範囲 が広い フォーカスの深さ ビッグピクチャー イベントを洗い出して時系列に並べる ビジネスプロセスモデリング

    コマンドやアクターを追加して業務フローを整理 ソフトウェアシステムモデリング 集約やコンテキストの定義・深堀り イベントストーミングのフェーズ 引用元: [入門]ドメイン駆動設計 ――基礎と実践・クリーンアーキテクチャ (2.3 イベントストーミング)
  7. 改善点2:業務の解像度がところどころ低い 対策:スプリントに組み込み、繰り返し少しずつ解像度を上げていく イベント ストーミング ドメイン モデリング 詳細設計・ 実装 イベント ストーミング

    ドメイン モデリング 詳細設計・ 実装 イベント ストーミング ドメイン モデリング 詳細設計・ 実装 スプリント1 スプリント2 スプリント3
  8. 改善点3:モデリングや設計に活用できてない 入金を消し込む 入金が消し込まれ た 消込 コマンド 集約 イベント - ユースケース

    - ドメインの振る舞い - 集約 - エンティティ - 値オブジェクト - ドメインイベント そのまま 変換 そのまま 実装 対策: イベントストーミングの成果物をそのままドメインモデリングに活用する 設計資料(クラス図など) ソースコード イベントストーミング図
  9. イベントストーミングの使い所 - Build a ubiquitous language - Model the business

    process - Explore new business requirements - Recover domain knowledge - Explore ways to improve an existing business process - Onboard new team members 引用元: Learning Domain-Driven Design (P. 196 When to Use EventStoming) 既存の部分の 改善にも活用できそう
  10. やってみてどうだった? - ドメインモデリングに対する心理的なハードルが下がった - 正解の分からないアートの領域というイメージがあった - 孤独な作業ではなく、全員で一体感をもって進められる - 全体が一枚の絵にまとまっている安心感 -

    業務プロセスやシステム間の連携が視覚的に整理され、全体の流れが明確になった - 問題点や改善点が一目で把握でき、議論や意思決定がスムーズに進むようになった - イベントストーミングという手法や活用方法に工夫の余地が無数にある - 回数を重ねるごとに、もっと改善したい!という気持ちに - チームのカラーにあったやり方を模索すると良さそう