QUIZ 30分

ストーリー

高橋アーキテクト が最後のチェックポイントを出しました。

高橋アーキテクト
CQRSと結果整合性、そしてテスト戦略。これらを理解していれば、分散システムの設計者として必要な基礎は揃ったことになる。確認しよう

クイズ(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分