過去問ドリル

LinuCレベル4 システムアーキテクト システムアーキテクチャ 問14

システムアーキテクチャ/アーキテクチャの設計原則と主要パターン

取引先から届く売上データのファイルを、文字コードの変換、形式の検証、名寄せ、集計の4工程で処理している。取引先ごとに一部の工程を差し替えたり工程を追加したりする要望が多い。また工程ごとの処理時間の差が大きく、時間のかかる名寄せの工程だけを増強したい。処理の構成として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)

正解:C

解説

処理を順に適用する工程の連なりで、工程の差し替え・追加や工程ごとの増強が求められる場合は、パイプライン(パイプ/フィルター)パターンが適しています。各フィルターは入力を受け取って加工し出力を渡すだけで、他の工程の内部を知らないため、組み替えや追加が容易です。工程間をキューなどのパイプでつなげば、遅い工程だけワーカーを増やして並列度を上げられます。一方で、工程をまたぐ進行状態の管理や途中の分岐が複雑な業務では、オーケストレーションの方が向くこともあります。

選択肢ごとの解説

  • A誤り。全体をまとめて多重化すると、名寄せ以外の工程も一緒に増えて資源を無駄にします。工程の差し替えもプログラム全体の改修になります。工程間の独立性が不要な単純なバッチなら妥当な構成です。
  • B誤り。Pub/Subで同じデータを複数の購読者が同時に受け取る構成は、互いに独立した処理を並行させる場合に向きます。この処理は前の工程の結果を次の工程が使う順序のある流れなので合いません。
  • C正しい。パイプ/フィルターの構成で、工程の差し替え・追加が容易になり、名寄せの工程だけを増強できます。
  • D誤り。同期呼び出しの連鎖では、最も遅い工程が全体の応答を縛り、1つの工程の停止が前の工程すべてに波及します。工程ごとの並列度を独立に調整するのにも向きません。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く