
116
ところで、Sagaパターンを実現するには、先の例の注文処理サービ
スのようにサービス間の調整役を置くオーケストレーションという方式
と、調整役は置かずに各サービスが自律的に相互調整を行うコレオグラ
フィという方式があります。関係するサービスの数が少なく単純なケー
スを除いて、オーケストレーション方式を採用した方がよいでしょう。
第2章で設計のポイントとして述べたとおり、処理フローロジックを担
う役割は明確に分離した方が全体の見通しがよくなるからです。
ケーススタディでのサービス分割
本節のまとめとして、経費精算システムのケーススタディを題材に
サービス分割の具体例を確認しておきましょう。
サブシステム分割の例
まず、ケーススタディにおける論理的なサブシステム分割の例を図
3.3.9に示します。UMLのパッケージ図を用いて表現した図です。
サブシステム分割にあたっては、業務プロセスやアクターの違いを考
慮します。たとえば、経費精算業務は現場部門の担当者が申請を行い、
その上長が承認をして最終的に経理担当者が内容のチェックをするとい
うのが業務の流れです。最終承認済みの経費精算申請データから仕訳を
起こし会計伝票として登録する業務は、現場部門の担当者が直接意識す
ることはなく、経理担当者によって実施されます。このことから、経費
精算と自動仕訳は別のサブシステムとして分けるのが妥当と言えます。
同じように、経費の不正使用の検知や、法令に遵守した証憑管理の業
務は経理担当者や監査担当者の関心事となりますので、それぞれ独立し ...