LinuCレベル4 システムアーキテクト システムアーキテクチャ 問3
システムアーキテクチャ/アーキテクチャの設計原則と主要パターン保険の申込処理は、審査・与信照会・契約書作成・通知など8つのサービスをまたがり、業務部門から処理順序や分岐条件の変更要望が頻繁に出る。また、申込ごとに現在どのステップにいるかを問い合わせに即答できる必要がある。サービス間の連携方式として最も適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)
- A各サービスが完了イベントを発行し、他のサービスがそれを購読して次の処理を始めるコレオグラフィにする
- B各サービスが同じデータベースの申込テーブルを直接更新し、状態の列を見て自分の処理を始める
- C申込データをパイプ/フィルターで順に流し、各フィルターが加工結果を次のフィルターへ渡す
- D処理の流れを定義したオーケストレーターが各サービスを順に呼び出し、申込ごとの進行状態を保持する
正解:D
解説
オーケストレーションは、中央のオーケストレーターが処理の流れを持ち、各サービスを指示・呼び出す方式です。流れの定義が1か所にまとまるため、順序や分岐の変更が1か所の修正で済み、申込ごとの進行状態もオーケストレーターから把握できます。一方、コレオグラフィは各サービスがイベントに反応して自律的に動くため結合が緩くなりますが、全体の流れが各サービスに分散し、ステップ数が多いと全体像や現在の状態を追いにくくなります。変更頻度が高く、状態の可視化が求められるこの要件ではオーケストレーションが適しています。
選択肢ごとの解説
- A誤り。コレオグラフィは結合を緩くできますが、流れが各サービスに分散するため、順序変更のたびに複数サービスの修正が必要になり、進行状態も把握しにくくなります。
- B誤り。共有データベースを介した連携はサービス間をデータ構造で強く結合させ、スキーマ変更の影響が全サービスに及びます。流れの定義も各サービスに散らばります。
- C誤り。パイプ/フィルターは一方向にデータを加工していく処理に向きますが、分岐の多い業務フローや、個々の申込の進行状態の問い合わせには向きません。
- D正しい。流れを1か所に集約するオーケストレーションなら、順序や分岐の変更と進行状態の把握という2つの要件を満たせます。