ドメイン・サブシステム
2024年6⽉23⽇
浅海智晴
クラウドアプリケーションのための
オブジェクト指向分析設計講座
第36回
アプリケーション・アーキテクチャ
SimpleModeling2021
• オブジェクト指向分析設計での共通範囲
• UML/UP
• 本講座で使⽤するUMLプロファイル
• プロファイル:SimpleModeling2021 (SM2021)
• オブジェクト指向分析設計の基本からの拡張部を明確化
• アジャイル開発
• Communication
• Embrace Change
• Travel Light
• Scaling
• Component-Based Development
• クラウド・アプリケーション
• モデル駆動開発
SM2021
Travel Light
Embrace Change
Cloud
Model-Driven
Scaling
CBD
Testability
Serviceability
• ⾮機能要件
• Testability
• Serviceability
第1部 基本編の構成(1)
• 概論 [第1回]
• 開発プロセス [第2回]
• 基本モデル [第3回]
• 静的モデル(1) [第4回]
• 静的モデル(2) [第5回]
• 動的モデル [第6回]
• 協調モデル [第7回]
• 関数モデル [第8回]
• 物理モデル [第9回]
• 作業分野 [第10回]
• ビジネス・モデリング [第11回]
• 要求 [第12回]
• 要求/ユースケース [第13回]
• 要求/シナリオ [第14回]
• 分析 [第15回]
• 分析/コンポーネント分析 [第16回]
• 分析/イベント駆動 [第17回]
• 作業分野
• 設計 [第18回]
• 設計/アーキテクチャ設計 [第19回]
• 設計/コンポーネント設計(1) [第20回]
• 設計/コンポーネント設計(2) [第21回]
• 設計/コンポーネント設計(3) [第22回]
• 設計/ドメイン設計(1) [第23回]
• 設計/ドメイン設計(2) [第24回]
• 設計/ドメイン設計(3) [第25回]
• 設計/ドメイン設計(4) [第26回]
• 設計/ドメイン設計(5) [第27回]
• 設計/原理 [第28回]
• 設計/ UX/UI設計 [第29回]
• 実装(1) [第30回]
• 実装(2) [第31回]
• 実装(3) [第32回]
• テスト [第33回]
第1部 基本編の構成(2)
• アプリケーション・アーキテクチャ [第34回]
• Cloud Native CBD [第35回]
• ドメイン・サブシステム [第36回]
• アプリケーション・サブシステム [第37回]
• プレゼンテーション・サブシステム [第38回]
• ケーススタディ[第39回]
• 要求モデル [第40回]
• 分析モデル [第41回]
• 設計モデル [第42回]
• 実装 [第43回]
• テスト [第44回]
本講座のアプローチ
• オブジェクト指向分析設計の基本を確認
• UML + UP(Unified Process)
• CBD (Component-Based Development)
• 最新技術でアップデート
• クラウド・コンピューティング
• イベント駆動、分散・並列
• ビッグデータ、AI、IoT
• コンテナ
• 関数型
• OFP(Object-Functional Programming), Reactive Streams
• ルール, AI
• DevOps
• アジャイル開発
• DX (Digital Transformation)
第25回 アプリケーション・アーキテクチャ
第2回 開発プロセス
第9回 物理モデル
第11回 ビジネス・モデリング
第2部 クラウド・アプリケーション編
第21回 設計/ドメイン設計
第20回 設計/コンポーネント設計
第2部 クラウド・アプリケーション編
原理 (Principle)
• Agile Software Development [ASD]
• SRP (The Single Responsibility Principle)
• OCP (The Open-Close Principle)
• LSP (The Liskov Substitution Principle)
• …
• GRASP (General Responsibility Assignment Software Patterns or principles)
• Low Coupling
• High Cohesion
• …
• Writing Effective Use Cases [WEUC]
• Scope
• …
パターン (Pattern)
• Design Patterns [DP]
• Observer, Strategy, …
• Domain Driven Design [DDD]
• Ubiquitous Language, Intention-
Revealing Interfaces, …
• Analysis Patterns [AP]
• Party, Quantity, …
• Pattern-Oriented Software
Architecture [POSA]
• Layers, Pipes and Filters, …
• Patterns of Enterprise
Application Architecture [PEAA]
• Unit of Work, Data Transfer Object,
…
• Enterprise Integration Patterns
[EIP]
• Message Bus, Aggregator, …
• Patterns for Effective Use
Cases [PEUC]
• CompleteSingleGoal,
VerbPhraseName, …
• AntiPatterns [AnP]
• Stovepipe System, Analysis
Paralysis, …
内容
• ドメイン・サブシステム
• Cloud Native CBD対応
• Modeling
• Data
• Quality Attributes
ドメイン・サブシステム
ドメイン・サブシステム
• ドメイン・モデルの管理・操作を⾏うサブシステム(コンポーネン
ト)
• サブシステム(コンポーネント)の設計
• 第20回 設計/コンポーネント設計 (1)
• 第21回 設計/コンポーネント設計 (2)
• 第22回 設計/コンポーネント設計 (3)
• ドメイン・モデルの設計
• 第23回 設計/ドメイン設計 (1)
• 第24回 設計/ドメイン設計 (2)
• 第25回 設計/ドメイン設計 (3)
• 第26回 設計/ドメイン設計 (4)
• 第27回 設計/ドメイン設計 (5)
• Cloud Native化を考える
ドメイン・サブシステム技術関連図
作業分野とモデルの関係 第10回 作業分野
再掲 第32回 設計/実装(3)
三層アーキテクチャ
Cloud Native CBD対応
Cloud Native CBD
• オブジェクト指向分析・設計をクラウド・アプリケーション開
発に適⽤するためのアプローチ
• CBD (Component-Based Development)をクラウド・アプリ
ケーション開発⽤に拡張
• キーワード
• Reactive
• Event-Driven
• Eventually Consistency
• Modular Monolith
• Microservice
CBD
再掲 第36回 Cloud Native CBD
アーキテクチャ⽐較 再掲 第36回 Cloud Native CBD
Cloud Native CBDからの展開
再掲
第36回 Cloud Native CBD
Modeling
ドメイン・サブシステム技術関連図
Modeling
• セマンティクス
• Eventually Consistency
• Eventually Consistencyを受け⼊れることによりReactiveが可能になる
• CQRS
• Eventually Consistencyを活かすためにCommandとQueryを分離したインタフェースにする必要が
ある
• Event Driven
• Eventually Consistencyを受け⼊れるため可能になる
• 本講座ではEvent Centricを中⼼に考える
• Domain Eventの発⾏とレスポンスを軸にドメイン・モデルの振る舞いを構築する
• Operation Model
• Entity Modelを中⼼とした操作対象となるモデル
• 概念モデルと相似形のモデル
• View Model
• アプリケーションからの参照に適したモデル
DSL
• ドメイン・モデルを操作するためのDSL(Domain Specific
Language)を定義する
• モデル要素
• Command
• Query
• Event
UMLで定義されている分析オブジェクト
分析オブジェクト
第15回 分析
再掲
SM2021
本講座による分析オブジェクトの拡張
分析オブジェクト/拡張
Cloud
第2部 クラウド・アプリケーション編
第15回 分析
再掲
ロバストネス図
第15回 分析
再掲
SM2021
ロバストネス図(イベント駆動)
第17回 分析/イベント駆動
再掲
分析オブジェクト/Cloud Native
SM2021
ロバストネス図(Cloud Native)
Patterns
• Domain-Driven Design (DDD)
• Tactical DDD
• Strategic DDD
• Analysis Patterns
• Patterns of Enterprise Application Architecture
• Enterprise Integration Patterns
• Design Patterns
Data
Data
• ドメイン・サブシステムでのデータ管理
• 話題
• Polyglot Persistence
• Data Autonomy
• Data Analysis
Polyglot Persistence
• Polyglot Persistence
• 複数のデータベースを⽤途ごとに使い分ける
• 適⽤例
• Entity Model
• RDBMS
• Event
• Event Store (KVS)
• View Model
• Document DB
Data Autonomy
• サブシステム単位でデータを管理
• Performance
• Scalability
• サブシステムをトランザクション境界にする
• サブシステム内での⼀貫性の制御
• Aggregate
Data Analysis
• 各種データを活⽤
• Entity
• Event
• View
• Observability
• データ・アーキテクチャ
• Data Lake
• Data Warehouse
• フィードバック回路を設置
Data Architecture
Quality Attributes
Quality Attributes
• ドメイン・サブシステムの品質特性
• Cloud Native CBDによって以下の性質を受け⼊れた場合
• Eventually Consistency
• CQRS
• 項⽬
• Security
• Scalability
• Performance
• Resilience
• Operation Cost
Security
• Audit
• Event Centricによる永続イベントをセキュリティ監査の記録として活⽤
• Authentication
• Component Framework
• Execution Context
• Authorization
• 要実現
• Privacy
• 要実現
• Integrity
• 要実現
Scalability
• View Model
• 参照専⽤モデルの導⼊
• 検索に適したモデル、データストアを使⽤可能
• キャッシュのヒット率の向上
• 更新データとの分離
• キャッシュのヒット率の向上
• Event Centric
• イベント登録処理以降はバックグラウンド処理
• レスポンス性能の向上
• 処理負荷の平準化
• スループットの向上
• Polyglot Persistence
• ⽤途ごとにデータストアを使い分けることでスケーラビリティの向上を期待できる
• ⽤途に適したデータストアを使⽤
• 複数のデータストアに分割格納することで並列性能向上
• Data Autonomy
• サブシステムごとに物理データベースを分割することでスケーラビリティの向上を期待できる
Performance
• View Model
• 参照専⽤モデルの導⼊
• 検索に適したモデル、データストアを使⽤可能
• キャッシュのヒット率の向上
• 更新データとの分離
• キャッシュのヒット率の向上
• Event Centric
• イベント登録処理以降はバックグラウンド処理
• レスポンス性能の向上
• 処理負荷の平準化
• スループットの向上
• Polyglot Persistence
• ⽤途ごとにデータストアを使い分けることで性能向上を期待できる
• ⽤途に適したデータストアを使⽤
• 複数のデータストアに分割格納することで並列性能向上
• Data Autonomy
• サブシステムごとに物理データベースを分割することでスケーラビリティの向上を期待できる
Resilience
• Event Centric
• Event送信のリトライ
• ネットワーク瞬断、サーバー再起動などからペネルティなしで処理継続ができる
• Event送信を記録
• Event送信のリトライの信頼性向上
• 処理失敗後の補償処理を⾏う事ができる
Operation Cost
• プラス要素
• Eventually Consistency
• 更新トランザクションの軽量化
• 参照処理の最適化
• キャッシュ
• データベースの多重化
• 負荷の平準化
• マイナス要素
• 複雑なメカニズムの導⼊によるオーバーヘッド
• 複数のデータベースが並⽴することによるコスト増
• 評価
• Cloud Native化は⼩規模システムには負担が⼤きいが、システム規模が⼤き
くなるに従って運⽤コスト増加を抑えられる
まとめ
• ドメイン・サブシステムのCloud Native CBD対応
• Modeling
• モデルに対するCloud Native要素の追加
• Data
• Polyglot Persistence
• Data Autonomy
• Data Analysis
• Quality Attributes
• Quality AttributesごとのCloud Nativeに対する対応
参考⽂献
• The Unified Modeling Language Reference
Manual, 2nd (Rumbaugh他, 2004)
• The Unified Modeling Language User Guide,
2nd (Booch他, 2004)
• The Unified Software Development Process
(Jacobson他, 1999)
• The Object Constraint Language, 2nd (Warmer
他, 2003)
• UML 2 and the Unified Process: Practical
Object-Oriented Analysis and Design (Arlow
他, 2005)
• OMG Unified Modeling Language Version 2.5
(OMG, 2015)
• 上流⼯程UMLモデリング (浅海, 2008)
• Strategic Monoliths and Microservices:
Driving Innovation Using Purposeful
Architecture (Vernon他, 2021)
• Continuous Architecture in Practice: Software
Architecture in the Age of Agility and DevOps
(Erder他, 2021)
• Building Event-Driven Microservices:
Leveraging Organizational Data at Scale
(Bellemare, 2020)
• Design Patterns for Cloud Native
Applications: Patterns in Practice Using APIs,
Data, Events, and Streams (Indrasiri他, 2021)
• Domain-Driven Design: Tracking Complexity
in the Heart of Software (Evans, 2003)

ドメイン・サブシステム 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第36回】

  • 1.
  • 2.
    SimpleModeling2021 • オブジェクト指向分析設計での共通範囲 • UML/UP •本講座で使⽤するUMLプロファイル • プロファイル:SimpleModeling2021 (SM2021) • オブジェクト指向分析設計の基本からの拡張部を明確化 • アジャイル開発 • Communication • Embrace Change • Travel Light • Scaling • Component-Based Development • クラウド・アプリケーション • モデル駆動開発 SM2021 Travel Light Embrace Change Cloud Model-Driven Scaling CBD Testability Serviceability • ⾮機能要件 • Testability • Serviceability
  • 3.
    第1部 基本編の構成(1) • 概論[第1回] • 開発プロセス [第2回] • 基本モデル [第3回] • 静的モデル(1) [第4回] • 静的モデル(2) [第5回] • 動的モデル [第6回] • 協調モデル [第7回] • 関数モデル [第8回] • 物理モデル [第9回] • 作業分野 [第10回] • ビジネス・モデリング [第11回] • 要求 [第12回] • 要求/ユースケース [第13回] • 要求/シナリオ [第14回] • 分析 [第15回] • 分析/コンポーネント分析 [第16回] • 分析/イベント駆動 [第17回] • 作業分野 • 設計 [第18回] • 設計/アーキテクチャ設計 [第19回] • 設計/コンポーネント設計(1) [第20回] • 設計/コンポーネント設計(2) [第21回] • 設計/コンポーネント設計(3) [第22回] • 設計/ドメイン設計(1) [第23回] • 設計/ドメイン設計(2) [第24回] • 設計/ドメイン設計(3) [第25回] • 設計/ドメイン設計(4) [第26回] • 設計/ドメイン設計(5) [第27回] • 設計/原理 [第28回] • 設計/ UX/UI設計 [第29回] • 実装(1) [第30回] • 実装(2) [第31回] • 実装(3) [第32回] • テスト [第33回]
  • 4.
    第1部 基本編の構成(2) • アプリケーション・アーキテクチャ[第34回] • Cloud Native CBD [第35回] • ドメイン・サブシステム [第36回] • アプリケーション・サブシステム [第37回] • プレゼンテーション・サブシステム [第38回] • ケーススタディ[第39回] • 要求モデル [第40回] • 分析モデル [第41回] • 設計モデル [第42回] • 実装 [第43回] • テスト [第44回]
  • 5.
    本講座のアプローチ • オブジェクト指向分析設計の基本を確認 • UML+ UP(Unified Process) • CBD (Component-Based Development) • 最新技術でアップデート • クラウド・コンピューティング • イベント駆動、分散・並列 • ビッグデータ、AI、IoT • コンテナ • 関数型 • OFP(Object-Functional Programming), Reactive Streams • ルール, AI • DevOps • アジャイル開発 • DX (Digital Transformation) 第25回 アプリケーション・アーキテクチャ 第2回 開発プロセス 第9回 物理モデル 第11回 ビジネス・モデリング 第2部 クラウド・アプリケーション編 第21回 設計/ドメイン設計 第20回 設計/コンポーネント設計 第2部 クラウド・アプリケーション編
  • 6.
    原理 (Principle) • AgileSoftware Development [ASD] • SRP (The Single Responsibility Principle) • OCP (The Open-Close Principle) • LSP (The Liskov Substitution Principle) • … • GRASP (General Responsibility Assignment Software Patterns or principles) • Low Coupling • High Cohesion • … • Writing Effective Use Cases [WEUC] • Scope • …
  • 7.
    パターン (Pattern) • DesignPatterns [DP] • Observer, Strategy, … • Domain Driven Design [DDD] • Ubiquitous Language, Intention- Revealing Interfaces, … • Analysis Patterns [AP] • Party, Quantity, … • Pattern-Oriented Software Architecture [POSA] • Layers, Pipes and Filters, … • Patterns of Enterprise Application Architecture [PEAA] • Unit of Work, Data Transfer Object, … • Enterprise Integration Patterns [EIP] • Message Bus, Aggregator, … • Patterns for Effective Use Cases [PEUC] • CompleteSingleGoal, VerbPhraseName, … • AntiPatterns [AnP] • Stovepipe System, Analysis Paralysis, …
  • 8.
    内容 • ドメイン・サブシステム • CloudNative CBD対応 • Modeling • Data • Quality Attributes
  • 9.
  • 10.
    ドメイン・サブシステム • ドメイン・モデルの管理・操作を⾏うサブシステム(コンポーネン ト) • サブシステム(コンポーネント)の設計 •第20回 設計/コンポーネント設計 (1) • 第21回 設計/コンポーネント設計 (2) • 第22回 設計/コンポーネント設計 (3) • ドメイン・モデルの設計 • 第23回 設計/ドメイン設計 (1) • 第24回 設計/ドメイン設計 (2) • 第25回 設計/ドメイン設計 (3) • 第26回 設計/ドメイン設計 (4) • 第27回 設計/ドメイン設計 (5) • Cloud Native化を考える
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
    Cloud Native CBD •オブジェクト指向分析・設計をクラウド・アプリケーション開 発に適⽤するためのアプローチ • CBD (Component-Based Development)をクラウド・アプリ ケーション開発⽤に拡張 • キーワード • Reactive • Event-Driven • Eventually Consistency • Modular Monolith • Microservice CBD 再掲 第36回 Cloud Native CBD
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Modeling • セマンティクス • EventuallyConsistency • Eventually Consistencyを受け⼊れることによりReactiveが可能になる • CQRS • Eventually Consistencyを活かすためにCommandとQueryを分離したインタフェースにする必要が ある • Event Driven • Eventually Consistencyを受け⼊れるため可能になる • 本講座ではEvent Centricを中⼼に考える • Domain Eventの発⾏とレスポンスを軸にドメイン・モデルの振る舞いを構築する • Operation Model • Entity Modelを中⼼とした操作対象となるモデル • 概念モデルと相似形のモデル • View Model • アプリケーションからの参照に適したモデル
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Patterns • Domain-Driven Design(DDD) • Tactical DDD • Strategic DDD • Analysis Patterns • Patterns of Enterprise Application Architecture • Enterprise Integration Patterns • Design Patterns
  • 29.
  • 30.
    Data • ドメイン・サブシステムでのデータ管理 • 話題 •Polyglot Persistence • Data Autonomy • Data Analysis
  • 31.
    Polyglot Persistence • PolyglotPersistence • 複数のデータベースを⽤途ごとに使い分ける • 適⽤例 • Entity Model • RDBMS • Event • Event Store (KVS) • View Model • Document DB
  • 32.
    Data Autonomy • サブシステム単位でデータを管理 •Performance • Scalability • サブシステムをトランザクション境界にする • サブシステム内での⼀貫性の制御 • Aggregate
  • 33.
    Data Analysis • 各種データを活⽤ •Entity • Event • View • Observability • データ・アーキテクチャ • Data Lake • Data Warehouse • フィードバック回路を設置
  • 34.
  • 35.
  • 36.
    Quality Attributes • ドメイン・サブシステムの品質特性 •Cloud Native CBDによって以下の性質を受け⼊れた場合 • Eventually Consistency • CQRS • 項⽬ • Security • Scalability • Performance • Resilience • Operation Cost
  • 37.
    Security • Audit • EventCentricによる永続イベントをセキュリティ監査の記録として活⽤ • Authentication • Component Framework • Execution Context • Authorization • 要実現 • Privacy • 要実現 • Integrity • 要実現
  • 38.
    Scalability • View Model •参照専⽤モデルの導⼊ • 検索に適したモデル、データストアを使⽤可能 • キャッシュのヒット率の向上 • 更新データとの分離 • キャッシュのヒット率の向上 • Event Centric • イベント登録処理以降はバックグラウンド処理 • レスポンス性能の向上 • 処理負荷の平準化 • スループットの向上 • Polyglot Persistence • ⽤途ごとにデータストアを使い分けることでスケーラビリティの向上を期待できる • ⽤途に適したデータストアを使⽤ • 複数のデータストアに分割格納することで並列性能向上 • Data Autonomy • サブシステムごとに物理データベースを分割することでスケーラビリティの向上を期待できる
  • 39.
    Performance • View Model •参照専⽤モデルの導⼊ • 検索に適したモデル、データストアを使⽤可能 • キャッシュのヒット率の向上 • 更新データとの分離 • キャッシュのヒット率の向上 • Event Centric • イベント登録処理以降はバックグラウンド処理 • レスポンス性能の向上 • 処理負荷の平準化 • スループットの向上 • Polyglot Persistence • ⽤途ごとにデータストアを使い分けることで性能向上を期待できる • ⽤途に適したデータストアを使⽤ • 複数のデータストアに分割格納することで並列性能向上 • Data Autonomy • サブシステムごとに物理データベースを分割することでスケーラビリティの向上を期待できる
  • 40.
    Resilience • Event Centric •Event送信のリトライ • ネットワーク瞬断、サーバー再起動などからペネルティなしで処理継続ができる • Event送信を記録 • Event送信のリトライの信頼性向上 • 処理失敗後の補償処理を⾏う事ができる
  • 41.
    Operation Cost • プラス要素 •Eventually Consistency • 更新トランザクションの軽量化 • 参照処理の最適化 • キャッシュ • データベースの多重化 • 負荷の平準化 • マイナス要素 • 複雑なメカニズムの導⼊によるオーバーヘッド • 複数のデータベースが並⽴することによるコスト増 • 評価 • Cloud Native化は⼩規模システムには負担が⼤きいが、システム規模が⼤き くなるに従って運⽤コスト増加を抑えられる
  • 42.
    まとめ • ドメイン・サブシステムのCloud NativeCBD対応 • Modeling • モデルに対するCloud Native要素の追加 • Data • Polyglot Persistence • Data Autonomy • Data Analysis • Quality Attributes • Quality AttributesごとのCloud Nativeに対する対応
  • 43.
    参考⽂献 • The UnifiedModeling Language Reference Manual, 2nd (Rumbaugh他, 2004) • The Unified Modeling Language User Guide, 2nd (Booch他, 2004) • The Unified Software Development Process (Jacobson他, 1999) • The Object Constraint Language, 2nd (Warmer 他, 2003) • UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (Arlow 他, 2005) • OMG Unified Modeling Language Version 2.5 (OMG, 2015) • 上流⼯程UMLモデリング (浅海, 2008) • Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture (Vernon他, 2021) • Continuous Architecture in Practice: Software Architecture in the Age of Agility and DevOps (Erder他, 2021) • Building Event-Driven Microservices: Leveraging Organizational Data at Scale (Bellemare, 2020) • Design Patterns for Cloud Native Applications: Patterns in Practice Using APIs, Data, Events, and Streams (Indrasiri他, 2021) • Domain-Driven Design: Tracking Complexity in the Heart of Software (Evans, 2003)