ストーリー
高橋アーキテクト が腕を組みました。
クイズ(8問)
合格ライン: 80%(8問中7問正解)
Q1. CAP定理で、ネットワーク分断が発生した場合に選択を迫られる2つの特性はどれか?
- A: Consistency と Availability
- B: Consistency と Partition Tolerance
- C: Availability と Partition Tolerance
- D: Consistency と Durability
回答と解説
正解: A
ネットワーク分断(Partition)は避けられないため、Partition Toleranceは必須です。残るConsistencyとAvailabilityのどちらを優先するかを選択する必要があります。CPシステム(一貫性優先)かAPシステム(可用性優先)のいずれかを選びます。
Q2. 「Fallacies of Distributed Computing」に含まれないものはどれか?
- A: ネットワークは信頼できる
- B: レイテンシはゼロである
- C: メモリは無限である
- D: トポロジは変化しない
回答と解説
正解: C
8つの誤解(Fallacies)は、ネットワークの信頼性、レイテンシ、帯域幅、セキュリティ、トポロジ、管理者、トランスポートコスト、均質性に関するものです。「メモリは無限である」は含まれません。
Q3. マイクロサービスの最大のリスクとして最も適切なものはどれか?
- A: プログラミング言語が統一できない
- B: 分散モノリスになる可能性がある
- C: データベースが増えてライセンス費用がかさむ
- D: フロントエンドの開発が遅くなる
回答と解説
正解: B
不適切に分割されたマイクロサービスは「分散モノリス」となり、モノリスの欠点(密結合、同時デプロイ)と分散システムの欠点(ネットワーク遅延、運用複雑さ)の両方を抱えます。これが最大のリスクです。
Q4. サービス分割の最良のアプローチはどれか?
- A: データベースのテーブルごとに分割する
- B: 技術レイヤー(UI、ロジック、データ)で分割する
- C: DDDの境界づけられたコンテキストに沿って分割する
- D: チームの人数に応じて均等に分割する
回答と解説
正解: C
DDDの境界づけられたコンテキスト(Bounded Context)に沿った分割が最も効果的です。ビジネスドメインの自然な境界に従うことで、サービス間の結合度を最小化し、凝集度を最大化できます。テーブルごとや技術レイヤーでの分割はアンチパターンです。
Q5. コンウェイの法則が示すことはどれか?
- A: ソフトウェアの複雑さは指数関数的に増加する
- B: システムの設計は組織のコミュニケーション構造を反映する
- C: 分散システムの信頼性は最も弱いリンクで決まる
- D: マイクロサービスの数はチーム数の2倍になる
回答と解説
正解: B
コンウェイの法則は「システムの設計は、それを作る組織のコミュニケーション構造を反映する」という原則です。サービス分割をチーム構造と整合させることが重要です。
Q6. Strangler Figパターンの目的はどれか?
- A: サービスを一度にすべて分割する
- B: モノリスから段階的にサービスを切り出す
- C: 古いサービスを即座に廃止する
- D: マイクロサービスをモノリスに戻す
回答と解説
正解: B
Strangler Figパターンは、モノリスの前にプロキシを配置し、段階的に機能をマイクロサービスへ移行する戦略です。リスクを最小化しながら移行を進められます。
Q7. APシステムの特徴として正しいものはどれか?
- A: ネットワーク分断時にリクエストを拒否する
- B: ネットワーク分断時でもレスポンスを返すが、データが古い可能性がある
- C: ネットワーク分断が発生しない前提で設計される
- D: 常に最新のデータを返すことを保証する
回答と解説
正解: B
APシステム(Availability + Partition Tolerance)は、ネットワーク分断時でも可用性を維持してレスポンスを返しますが、データが古い(結果整合性)可能性があります。DynamoDBやCassandraが代表例です。
Q8. 分散システムの課題のうち、「データの課題」に分類されるものはどれか?
- A: サービスディスカバリ
- B: サーキットブレーカー
- C: Sagaパターンによる分散トランザクション
- D: 分散トレーシング
回答と解説
正解: C
Sagaパターンによる分散トランザクションは「データの課題」に分類されます。サービスディスカバリと分散トレーシングは「運用の課題」、サーキットブレーカーは「通信の課題」に分類されます。
結果判定
合格(7問以上正解)
おめでとうございます!分散システムの基礎理論をしっかり理解しています。Step 2に進んで、マイクロサービスの具体的な設計原則を学びましょう。
不合格(6問以下)
Step 1の各レッスンを復習しましょう。特にCAP定理、サービス分割の原則を重点的に見直してください。
推定所要時間: 15分