QUIZ 15分

ストーリー

高橋アーキテクト が腕を組みました。

高橋アーキテクト
Step 1の基礎理論を確認しよう。分散システムの世界に入るための前提知識だから、ここをしっかり固めておこう

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