過去問ドリル

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

システムアーキテクチャ/柔軟性を高めるアーキテクチャパターン

社内の備品予約システムを新たに作る。開発と運用は5人の1チームが担い、利用者は数百人で、負荷は時間帯によらずほぼ一定である。機能の間では同じデータを参照・更新する処理が多く、リリースは月に1回程度の見込みである。アーキテクチャの判断として最も適切なものはどれか。

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

正解:A

解説

マイクロサービスの利点は、サービスごとに独立してデプロイ・スケーリング・技術選択ができることですが、その代わりに分散による障害点の増加、サービス間の整合性の確保、運用基盤の整備といったコストを負います。小さな1チームで、負荷が一様、リリース頻度も低く、機能間で同じデータを扱う処理が多い条件では、利点がほとんど生きずにコストだけが増えます。このような場合は、内部のモジュール境界を明確にした単一のアプリケーションとして作り、独立させる必要が実際に生じた部分から切り出す判断が妥当です。境界を整えておけば、後からの分割も容易になります。

選択肢ごとの解説

  • A正しい。利点が生きない段階で分散のコストを負わず、必要になった部分から切り出せる余地も残せます。
  • B誤り。機能間で同じデータを扱う処理が多いため、データベースを分けるとSagaなどによる整合性の確保が多数必要になり、5人のチームには負担が過大です。複数チームが独立に開発・リリースする大規模なシステムなら検討に値します。
  • C誤り。サービスメッシュは多数のサービス間の通信を一元的に制御したい場合に効果がありますが、コントロールプレーンやプロキシの運用が加わります。この規模と要件では導入の利点より運用負荷が上回ります。
  • D誤り。データベースとリリース日を共有すると、サービスを分けても独立した変更やデプロイができず、ネットワーク越しの呼び出しのコストだけが増えます。いわゆる分散モノリスの状態です。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く