ストーリー
高橋アーキテクト が最後のチェックポイントを出しました。
クイズ(8問)
合格ライン: 80%(8問中7問正解)
Q1. CQRSでWrite ModelとRead Modelを分離する最大の理由はどれか?
- A: データベースのライセンスコストを削減するため
- B: 読み取りと書き込みで異なる最適化とスケーリングが可能になるため
- C: バックアップが簡単になるため
- D: 開発チームの人数を減らせるため
回答と解説
正解: B
CQRSの最大の理由は、読み取り(クエリ)と書き込み(コマンド)で異なる最適化が可能になることです。Write Modelは正規化でビジネスルールの整合性を守り、Read Modelは非正規化で高速なクエリを実現できます。また、読み取りと書き込みを独立してスケーリングできます。
Q2. CQRSのRead Modelが破損した場合の対処法として正しいのはどれか?
- A: Write Modelからデータを手動でコピーする
- B: バックアップからリストアする
- C: イベントストア/イベント履歴からRead Modelを再構築(リビルド)する
- D: システム全体を再起動する
回答と解説
正解: C
CQRSではRead Modelはイベントから構築された「プロジェクション」です。破損した場合、イベントストアからすべてのイベントを再生してRead Modelをゼロから再構築(リビルド)できます。これはCQRSの大きな利点の1つです。
Q3. 結果整合性の「オプティミスティックUI」とはどれか?
- A: サーバーのレスポンスを待たずにUIを先に更新する手法
- B: 楽観的ロックでデータ競合を防ぐ手法
- C: UIのレンダリングを遅延させて最新データを待つ手法
- D: UIを複数バージョン同時に表示する手法
回答と解説
正解: A
オプティミスティックUI(楽観的UI更新)は、APIのレスポンスを待たずに先にUIを更新する手法です。操作が成功する前提でUIを更新し、失敗した場合のみ変更を元に戻します。結果整合性による遅延をユーザーに意識させない効果的なUXパターンです。
Q4. Read-your-writes整合性が解決する問題はどれか?
- A: 他のユーザーの書き込みが即座に見えない
- B: 自分が書き込んだデータが自分の画面に表示されない
- C: データベースのレプリカ間で不整合が起きる
- D: キャッシュが古いデータを返す
回答と解説
正解: B
Read-your-writes整合性は、ユーザーが書き込んだデータがそのユーザー自身の画面で確実に見えることを保証するパターンです。CQRSのRead Model更新遅延により「投稿したのに一覧に表示されない」という問題を解決します。
Q5. Consumer-Driven Contract Testingで契約を定義するのはどちら側か?
- A: Provider(API提供側)
- B: Consumer(API利用側)
- C: テストチーム
- D: 両方が同時に定義する
回答と解説
正解: B
Consumer-Driven Contract Testingでは、Consumer(API利用側)が期待する契約を定義します。その契約をProvider(API提供側)が満たすことを検証します。これにより、Consumerが必要とするデータが確実に提供されることを保証できます。
Q6. Chaos Engineeringの正しい手順はどれか?
- A: 障害を注入 → 結果を観察 → 仮説を立てる → 改善
- B: 定常状態を定義 → 仮説を立てる → 障害を注入 → 結果を観察 → 改善
- C: コードレビュー → テスト実行 → バグ修正 → デプロイ
- D: 本番環境を停止 → 障害をシミュレーション → 復旧手順を確認
回答と解説
正解: B
Chaos Engineeringの正しい手順は: 1) 定常状態を定義 2) 仮説を立てる 3) 障害を注入 4) 結果を観察して仮説と比較 5) 発見した脆弱性を改善、です。仮説なしに障害を注入しても、何を検証しているか不明確になります。
Q7. SNSのタイムライン実装で「Fan-out on Write」が適さない場面はどれか?
- A: ユーザーが10人のフォロワーしかいない場合
- B: フォロワーが100万人いるセレブリティの投稿
- C: 1日の投稿数が少ない場合
- D: タイムラインの読み取りが少ない場合
回答と解説
正解: B
Fan-out on Writeは、投稿時にフォロワー全員のタイムラインにコピーする方式です。フォロワーが100万人いる場合、1回の投稿で100万回の書き込みが発生し、コストと時間が膨大になります。このような場合はFan-out on Readまたはハイブリッド方式が適切です。
Q8. オブザーバビリティの3本柱として正しい組み合わせはどれか?
- A: テスト、デプロイ、監視
- B: ログ、メトリクス、分散トレーシング
- C: CPU、メモリ、ディスク
- D: 可用性、信頼性、耐障害性
回答と解説
正解: B
オブザーバビリティの3本柱は「ログ」「メトリクス」「分散トレーシング」です。ログは個別のイベントの詳細、メトリクスは数値指標の推移、分散トレーシングはリクエストのサービス間の流れを可視化します。この3つを組み合わせることで、分散システムの状態を包括的に把握できます。
結果判定
合格(7問以上正解)
CQRSと結果整合性、テスト戦略をしっかり理解しています。最終試験のStep 6に挑みましょう!
不合格(6問以下)
Step 5の各レッスンを復習しましょう。特にCQRSの設計原則と結果整合性のUXパターンを重点的に見直してください。
推定所要時間: 30分