Interactive
シャッフルシャーディング可視化
AWSがRoute 53などで使う隔離設計を、確率の計算そのものとして体験できます。重なりの確率タブでは、毒テナントとちょうどj台を共有する確率(超幾何分布)と、 完全巻き込み確率1/C(n,k)を実際に計算します。実際に割り当ててみるタブでは、決定的な割り当て関数で本当にテナントを配り、 固定シャード方式と比べて被害範囲が桁違いに狭まる様子を目で確認できます。
ワーカ総数 n
1テナントの割当 k
毒テナント1人を固定し、別のテナントがその毒テナントとちょうどj台を共有する確率(超幾何分布)を計算します。致命的なのはj=k(健全ワーカが1台も残らない)だけです。
共有0台(無傷)
84.717%
共有1台
14.575%
共有2台
0.698%
共有3台
9.8e-5
共有4台(致命)
2.6e-7
完全巻き込み 1/C(n,k)
約392.1万人に1人
C(100,4) = 3.921e+6 通り
m=500テナントでの衝突ペア期待数
0.032
≒ m² / (2・C(n,k))(誕生日問題)
kを1つ増やすだけでC(n,k)が跳ね上がり、完全巻き込みの確率が桁で下がります(n=100ならk=2で約5千人に1人、k=5では約7.5千万人に1人)。一方で「一部だけ重なる」テナントは健全ワーカが残るため、毒ワーカを避けてリトライできれば生き延びられる——だから致命的なのは赤いj=kの棒だけです。
すべてブラウザ内で組合せ数・超幾何分布・実際の割り当てを計算しています。C(n,k)は桁あふれを避けるため対数空間で計算しており、BigIntによる厳密計算と一致することを検証済みです。
ここが分かる
- 致命的なのは「全k台とも一致」だけ——一部重なりのテナントには健全ワーカが残るため、毒ワーカを避けてリトライできれば生き延びられる。棒グラフで赤(j=k)だけが極端に短いことが確認できる。
- kを1つ増やすだけでC(n,k)が跳ね上がり、完全巻き込み確率が桁で下がる——n=100ならk=2で約5千人に1人、k=5では約7.5千万人に1人と、1万倍以上改善する。
- 固定シャードに切り替えると、同じn・kでも赤(完全巻き込み)が一気に増える——n=100をk=4台ずつに割ると25シャードしかないため、テナントの約4%が運命共同体になる。シャッフルなら同条件でほぼゼロ。
- テナント数mが増えると衝突ペアの期待数がm²に比例して増える(誕生日問題と同じ構造)——mがC(n,k)の平方根を超えると衝突が現実味を帯びることを数値で確認できる。