Mímisbrunnr知恵の泉

← 分散システム 一覧

🎓 レベル:標準 | 重要度:B(重要)

📎 前提:分散システムとは・なぜ難しいか | 関連:パーティショニング/シャーディングCAP定理

要点(BLUF)

問題設定 ── 隠すべきか、見せるべきか

分散システムの設計目標は大きく2つ:**複雑さを隠す(透過性)**と、規模を伸ばす(スケーラビリティ)。理想は「ユーザは1台に見え、裏は何千台」。だが隠しすぎると、遅延や部分故障という現実が漏れたとき対処できません。

モデル ── 透過性の種類

van Steen/Tanenbaum の分類が定番です。実務で特に効くものを挙げます。

透過性何を隠すか
アクセスデータ表現・呼び出し方法の差リモートも同じAPIで呼ぶ(RPCとRMI
位置リソースが物理的にどこにあるかURL/名前で参照、IPは隠す
複製何個コピーがあるか利用者は1つに見える(レプリケーション方式(同期/非同期・リーダー/リーダーレス)
並行他人と同時に使っていることトランザクション分離
故障一部が壊れていること自動フェイルオーバ
移動リソースが移動したことライブマイグレーション

仕組みの直観 ── なぜ「故障透過性」は完全には無理か

「故障を完全に隠す」とは、壊れても利用者が一切気づかない、ということ。だが 分散システムとは・なぜ難しいか の通り、「遅い」と「死んだ」は区別できない。完全に隠そうとすると、無限に待つ(活性を失う)か、誤って生きたノードを切り離す(安全性を損なう)。CAP(CAP定理)はこの限界の定式化です。だから現実には「ほぼ隠す+たまに見せる(縮退運転・エラー)」に落ち着きます。

モデル ── スケーラビリティの2軸とボトルネック

flowchart LR
    V["垂直スケール(1台を強化)"] -->|"上限・高コスト・SPOF"| LIMIT["頭打ち"]
    H["水平スケール(台数を足す)"] -->|"理論上は線形に近い"| GROW["伸びる"]
    H -.->|"ただし阻害要因あり"| B["ボトルネック"]

水平スケールを阻む典型は3つ:

スケール則の直観として、逐次的・集中的な部分が残るほど台数効果は頭打ちになります(アムダール的限界。単一マシン版は 性能の評価とアムダールの法則(コンピュータ基礎)参照)。

正しさ/トレードオフの観点

⚠️ よくある誤解・落とし穴

対応ラボ

なし(概念回)。スケールの要となる再配置最小化は 一貫性ハッシュ のラボで実証します。

関連

第1章 分散システムの基礎 目次