過去問ドリル

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

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

スマートフォンアプリが、バックエンドの15個のマイクロサービスをそれぞれ直接呼び出している。サービスの分割や統合のたびにアプリの改修と再配布が必要になっており、さらに各サービスが外部からの要求の認証とアクセスログの記録を個別に実装しているため、実装のばらつきも問題になっている。サービス側の構成を自由に変えてもアプリに影響させないようにしたい。設計として最も適切なものはどれか。

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

正解:A

解説

APIゲートウェイは外部のクライアントに対する単一の入口となり、要求のパスなどに応じて内部のサービスへ振り分けます。クライアントはゲートウェイのAPIだけを知っていればよいため、内部でサービスを分割・統合してもゲートウェイの振り分けを変えるだけで済みます。認証やログの記録、流量の制御といった横断的な機能を入口に集約できるのも利点です。一方で、ゲートウェイが単一障害点や性能のボトルネックにならないよう冗長化と拡張を設計する必要があります。

選択肢ごとの解説

  • A正しい。クライアントとサービスの間に入口を1つ設けることで、内部構成の変更をアプリから隠し、認証やログの記録も一か所にまとめられます。
  • B誤り。サービスメッシュは主にサービス間(内部)の通信を扱う仕組みで、アプリが15個のサービスを個別に知っている問題は解消しません。
  • C誤り。実装のばらつきは減りますが、ライブラリの更新には全サービスの再デプロイが必要で、アプリがサービスを直接呼ぶ構造も変わりません。
  • D誤り。各サービスの台数増減は隠せますが、アプリは依然として15個の接続先を個別に知っている必要があり、サービスの分割・統合の影響も認証の集約も解決しません。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く