LinuCレベル4 システムアーキテクト システムアーキテクチャ 問5
システムアーキテクチャ/柔軟性を高めるアーキテクチャパターンモノリシックなシステムをマイクロサービスアーキテクチャへ移行するか検討している。マイクロサービスのメリット・デメリットに関する説明として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)
- Aサービスごとに独立してデプロイできるため、ある機能の修正を他の機能のリリース計画に縛られずに出せる
- B負荷の高いサービスだけを選んで台数を増やせるため、システム全体を一律に増強するより資源を効率よく使える
- Cサービスごとにデータベースを分けると、サービスをまたぐ更新の整合性はSagaなどで別途担保する必要がある
- D機能間の呼び出しがネットワーク越しになるため、プロセス内呼び出しに比べて障害点が減り、結合試験も容易になる
正解:D
解説
マイクロサービスは、サービスごとに独立した技術選択・スケーリング・デプロイができる点が主なメリットです。その代わり、機能間の呼び出しがネットワーク越しになるため、遅延・部分障害・タイムアウトといった分散システム特有の問題を扱う必要が生じます。データをサービスごとに分けると、単一データベースのトランザクションで済んでいた整合性をSagaなどで担保する必要もあります。運用・監視・試験の負担も増えるため、組織の規模やドメイン境界の明確さを踏まえて導入を判断します。
選択肢ごとの解説
- A誤り(正しい記述)。独立したデプロイはマイクロサービスの代表的なメリットです。
- B誤り(正しい記述)。サービス単位でスケーリングできるため、負荷の偏りに合わせて資源を配分できます。
- C誤り(正しい記述)。データベースを分割すると分散トランザクションの問題が生じ、Sagaなどのパターンが必要になります。
- D正しい(誤っている記述)。ネットワーク越しの呼び出しは遅延や部分障害の原因となり、障害点はむしろ増えます。複数サービスをまたぐ結合試験も難しくなります。