クイズの説明
Step 4で学んだ内容の理解度をチェックします。
- 全8問
- 合格ライン: 80%(7問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. 水平スケーリングの最大のメリットはどれですか?
- A) 実装が簡単
- B) 理論上無限にスケール可能で冗長性も確保できる
- C) コストが常に安い
- D) データの一貫性が保ちやすい
答えを見る
正解: B
水平スケーリング(Scale Out)はサーバー台数を増やすため、理論上は無限にスケール可能です。また、複数台のサーバーが稼働するため、1台が障害になっても他のサーバーで処理を継続でき、自然と冗長性が確保されます。
Q2. セッションをサーバーのメモリに保存している場合、水平スケーリング時に発生する問題は?
- A) セッションのTTLが短くなる
- B) ロードバランサーが別のサーバーにリクエストを振り分けた時にセッションが見つからない
- C) セッションのサイズが大きくなる
- D) セッションの暗号化ができなくなる
答えを見る
正解: B
セッションがサーバーAのメモリにある場合、次のリクエストがサーバーBに振り分けられるとセッション情報が見つかりません。これを解決するには、セッションをRedis等の外部ストアに保存するか、JWTを使ったステートレス認証に切り替える必要があります。
Q3. Read Replicaで解決できない問題はどれですか?
- A) 読み取りクエリの負荷
- B) 書き込みクエリの負荷
- C) 可用性の向上
- D) 読み取りスループットの向上
答えを見る
正解: B
Read Replicaは読み取りクエリを複数のレプリカに分散しますが、書き込みは全てPrimary(マスター)に集中します。書き込み負荷を分散するにはシャーディングが必要です。
Q4. シャーディングの最大の課題はどれですか?
- A) 読み取り性能の低下
- B) ストレージコストの増加
- C) クロスシャードクエリ(JOIN)と分散トランザクションの複雑さ
- D) バックアップが取れなくなる
答えを見る
正解: C
シャーディングではデータが複数のデータベースに分散されるため、異なるシャードにあるデータのJOINや、複数シャードにまたがるトランザクションが非常に難しくなります。アプリケーションレベルでの結合処理や分散トランザクションが必要になります。
Q5. メッセージキューを使った非同期処理で、同じメッセージが2回処理されても問題ないように設計する原則は?
- A) 冪等性(Idempotency)
- B) 原子性(Atomicity)
- C) 一貫性(Consistency)
- D) 分離性(Isolation)
答えを見る
正解: A
冪等性(Idempotency)とは、同じ操作を複数回実行しても結果が変わらない性質です。メッセージキューでは、ネットワーク障害やリトライにより同じメッセージが複数回配信される可能性があるため、処理の冪等性を確保する必要があります。
Q6. オートスケーリングでクールダウン期間を設ける理由は?
- A) サーバーの起動を速くするため
- B) 頻繁なスケーリングの往復(フラッピング)を防ぐため
- C) コストを削減するため
- D) セキュリティを強化するため
答えを見る
正解: B
クールダウン期間がないと、負荷の変動に応じて頻繁にスケールアウト/インが繰り返される(フラッピング)可能性があります。新しいインスタンスが起動してメトリクスが安定するまでの時間を確保するために、クールダウン期間を設定します。
Q7. 注文処理において、以下のうち非同期化すべきでない処理はどれですか?
- A) 確認メールの送信
- B) 決済処理
- C) レシートPDFの生成
- D) 分析データの記録
答えを見る
正解: B
決済処理はユーザーに即座にフィードバックが必要(成功/失敗)であり、注文の確定に必須の処理です。決済が失敗した場合は注文をキャンセルする必要があるため、同期的に処理すべきです。メール、PDF、分析は非同期で問題ありません。
Q8. ロードバランサーのアルゴリズムで、各サーバーの実際の負荷状況に基づいて振り分けるのは?
- A) ラウンドロビン
- B) IPハッシュ
- C) 最小接続数(Least Connections)
- D) ランダム
答えを見る
正解: C
最小接続数(Least Connections)は、現在の接続数が最も少ないサーバーにリクエストを振り分けます。各サーバーの実際の負荷状況を反映するため、処理時間にばらつきがある場合に効果的です。ラウンドロビンは単純に順番に振り分けるため、サーバーの負荷を考慮しません。
結果
7問以上正解の場合
合格です。おめでとうございます。
Step 4「スケーラビリティの設計」を完了しました。 次は Step 5「フロントエンドパフォーマンス」に進みましょう。
6問以下の場合
もう少し復習しましょう。
| 問題 | 復習セクション |
|---|---|
| Q1, Q8 | step4_1 水平スケーリング vs 垂直スケーリング |
| Q2 | step4_2 ステートレス設計 |
| Q3, Q4 | step4_3 データベーススケーリング |
| Q5, Q6, Q7 | step4_4 非同期処理とキューイング |
推定所要時間: 30分