応用情報技術者試験 - Applied Information Technology Engineer システムアーキテクチャ 2 — Questions and Answers
Question 1: マイクロサービスアーキテクチャの説明として最も適切なものはどれか。
- アプリケーションを単一のデプロイ単位としてまとめ、内部を機能別モジュールに分割する方式
- アプリケーションを独立してデプロイ・スケール可能な小さなサービス群に分割し、APIで連携させる方式 (Correct answer)
- サービス間通信を共有データベースのみで行い、各サービスが同一スキーマを参照する方式
- すべてのビジネスロジックをAPIゲートウェイに集約し、バックエンドをステートレスに保つ方式
Correct answer: アプリケーションを独立してデプロイ・スケール可能な小さなサービス群に分割し、APIで連携させる方式
マイクロサービスアーキテクチャは、アプリケーションを独立してデプロイ・スケール可能な小さなサービスに分割し、軽量なAPI(HTTPやメッセージキュー)で連携させる設計方式。各サービスは独自のデータストアを持つことが推奨される。選択肢アはモノリシックアーキテクチャの説明である。
Question 2: サーキットブレーカーパターンの目的として正しいものはどれか。
- データベースへの書き込みと読み取りを別々のモデルで処理し、スループットを向上させること
- 障害が発生したリモートサービスへの呼び出しを一時的に遮断し、連鎖的な障害の波及を防ぐこと (Correct answer)
- 複数のサービスが同一トランザクション内で整合性を保ちながらデータを更新できるようにすること
- APIゲートウェイがリクエストをルーティングし、負荷を均等に各サービスへ分散させること
Correct answer: 障害が発生したリモートサービスへの呼び出しを一時的に遮断し、連鎖的な障害の波及を防ぐこと
サーキットブレーカーパターンは、呼び出し先サービスの障害を検知すると回路を「オープン」状態にして一定期間呼び出しを遮断し、障害の連鎖(カスケード障害)を防ぐ設計パターン。電気回路のブレーカーになぞらえて命名されている。
Question 3: レイヤードアーキテクチャ(階層型アーキテクチャ)に関する説明として正しいものはどれか。
- 各層は隣接する層とのみ通信し、上位層から下位層への依存のみが許可されるのが基本原則である (Correct answer)
- 各層はすべての層と自由に通信でき、依存関係に制約は設けない
- プレゼンテーション層がデータアクセス層へ直接アクセスすることを推奨する構成である
- 層の数は必ず3層(プレゼンテーション・ビジネスロジック・データ)に固定される
Correct answer: 各層は隣接する層とのみ通信し、上位層から下位層への依存のみが許可されるのが基本原則である
レイヤードアーキテクチャでは、各層は隣接する層(通常は直下の層)とのみ通信し、上位層が下位層に依存する方向性を守ることで関心の分離とテスタビリティを実現する。層数は3層に限らず4層以上の構成も一般的である。
Question 4: BFF(Backend for Frontend)パターンの説明として最も適切なものはどれか。
- フロントエンドの種類(Web・モバイル・IoTなど)ごとに専用のバックエンドAPIを設け、それぞれのUI要件に最適化する方式 (Correct answer)
- すべてのクライアントが単一の汎用APIを共有することでバックエンドの開発コストを最小化する方式
- フロントエンドにビジネスロジックを持たせ、バックエンドはデータ永続化のみを担当させる方式
- GraphQLを必須技術として採用し、クライアントが必要なフィールドのみを取得できるようにする方式
Correct answer: フロントエンドの種類(Web・モバイル・IoTなど)ごとに専用のバックエンドAPIを設け、それぞれのUI要件に最適化する方式
BFFパターンは、Webブラウザやモバイルアプリなどクライアントごとに異なるUIニーズに対応するため、各フロントエンド専用のバックエンドサービスを設ける設計方式。クライアント固有の集約・変換処理をBFFに閉じ込め、共通のマイクロサービスを汚染しない利点がある。
Question 5: CAP定理に関する記述として正しいものはどれか。
- 分散システムは一貫性・可用性・分断耐性の3つすべてを同時に満たすことができる
- 分散システムはネットワーク分断が発生した際、一貫性と可用性のどちらかを犠牲にする必要がある (Correct answer)
- ネットワーク分断が発生しない環境では、一貫性と可用性を同時に保証することは原理的に不可能である
- CAP定理はデータベース設計にのみ適用され、マイクロサービスのAPI設計には関係しない
Correct answer: 分散システムはネットワーク分断が発生した際、一貫性と可用性のどちらかを犠牲にする必要がある
CAP定理(Brewer's theorem)は、分散システムにおいて「一貫性(Consistency)」「可用性(Availability)」「分断耐性(Partition tolerance)」の3つを同時に保証することは不可能であると主張する。ネットワーク分断(P)は現実に発生しうるため、実際にはCPかAPのどちらかを選択する設計判断が求められる。
Question 6: サービスメッシュの説明として最も適切なものはどれか。
- マイクロサービス間の通信に関する横断的関心事(トレーシング・リトライ・mTLSなど)をサイドカープロキシで透過的に処理するインフラ層 (Correct answer)
- 複数のデータベースを仮想的に単一のDBとして扱うためのミドルウェア層
- APIゲートウェイが外部クライアントからのリクエストを受け付け、適切な内部サービスへルーティングする仕組み
- イベントブローカーを介してサービス間の非同期通信を管理し、メッセージの順序保証を行う機能
Correct answer: マイクロサービス間の通信に関する横断的関心事(トレーシング・リトライ・mTLSなど)をサイドカープロキシで透過的に処理するインフラ層
サービスメッシュは、マイクロサービス間通信の横断的関心事(サービスディスカバリ・負荷分散・mTLS・サーキットブレーカー・分散トレーシングなど)をアプリケーションコードから切り離し、サイドカープロキシ(例:Envoy)として各サービスに付随させるインフラ層。IstioやLinkerdが代表的な実装である。
マイクロサービスアーキテクチャの説明として最も適切なものはどれか。