LinuCレベル4 システムアーキテクト システムアーキテクチャ 問7
システムアーキテクチャ/柔軟性を高めるアーキテクチャパターン数十のマイクロサービスにサイドカープロキシを配置するサービスメッシュの導入を検討している。導入によって期待できる効果として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)
- Aサイドカーがトレース情報を自動で付けるので、アプリが受信したヘッダを後続の呼び出しへ引き継ぐ実装は不要になる
- Bアプリケーションのコードを変えずに、サービス間の通信を相互TLS(mTLS)で暗号化・相互認証できる
- Cタイムアウトやリトライ、サーキットブレーカーを各サービスの実装ではなくプロキシの設定として一元管理できる
- D重み付けによるトラフィック分割で、新バージョンへ一部のリクエストだけを流すカナリアリリースを行える
正解:A
解説
サービスメッシュは、各サービスの横にサイドカープロキシを置き、サービス間の通信をすべてプロキシ経由にすることで、通信に関わる制御をアプリケーションから切り離す仕組みです。分離される主な機能は、トラフィック制御(振り分け・分割)、通信障害からの回復(タイムアウト・リトライ・サーキットブレーカー)、認証・暗号化(mTLS)、メトリクスやトレースの収集です。一方、プロキシはアプリケーション内部の処理を知らないため、1つのトレースとしてつなげるためのヘッダの引き継ぎはアプリケーション側で実装する必要があります。
選択肢ごとの解説
- A正しい(誤っている記述)。プロキシはスパンを送れますが、受信した要求と送出する要求の対応はアプリケーションの中でしか分からないため、トレース用のヘッダの伝播はアプリケーションが実装する必要があります。
- B誤り(正しい記述)。プロキシ同士でmTLSを張ることで、アプリケーションを改修せずに通信の暗号化と相互認証ができます。
- C誤り(正しい記述)。障害回復のための制御をプロキシの設定として集中管理できることは、サービスメッシュの主な利点です。
- D誤り(正しい記述)。プロキシでトラフィックを重み付けして分割できるため、カナリアリリースや段階的な切り替えに使えます。