分散システムの論文
分散システムの論文
MapReduce・GFS・Dynamo・Spanner・Paxos… 現代の分散システムの土台になった名論文を、何を解いたか→核心アイデア→その後の影響の順に精読する。
解説記事
精読した名論文
この論文が解いた問題→核心アイデア→その後の影響。数式より「なぜ効くか」を日本語で。
Bigtable:疎な多次元マップという分散ストレージ
ペタバイト級の構造化データを数千台へ分散する——2006年のBigtable論文を精読する。疎な多次元マップというデータモデル、タブレット分割、SSTableとChubby、ワイドカラム型NoSQLへ続く設計思想を日本語で読み解く。
Dynamo:常に書き込めることを選んだ分散KVS
ノード故障や分断が起きても書き込みを止めない設計とは何か。Amazonが2007年に示したDynamoを、結果整合性・コンシステントハッシュ・クォーラムから読み解き、可用性最優先の分散KVSの勘所をつかめる。
GFS:故障を前提に巨大ファイルを扱う分散ファイルシステム
サーバーの故障が日常茶飯事でも巨大ファイルを止めずに扱う——GFSが確立したその設計思想を通じて、単一マスタとチャンク複製、追記中心への割り切りがなぜ効くのかを理解し、HDFSなど現代データ基盤の土台まで把握できる。
Lamportの論理クロック:分散システムに「時間」を定義した論文
物理時刻に頼らず因果でイベントの順序を捉える——Lamportの論理クロックを読み解き、分散システムの並行処理・因果整合性・分散合意を支える考え方を、1本の古典論文から身につけられる。
MapReduce:大規模並列処理を2つの関数に落とし込む
数千台のマシンでの大規模データ処理を、利用者は map と reduce の2関数を書くだけで実現できる。並列化・耐障害・データ局所性をフレームワークが自動で担うMapReduceの発想を読み解く。
Paxos:故障の中でも1つの値に合意する
故障や通信断が起きる分散システムで、複数ノードが1つの値に確実に合意する仕組みを理解できる。Paxosの2フェーズと過半数合意がなぜ安全性を崩さないかを押さえ、ChubbyやRaftへ続く合意基盤の原理をつかめる。
Raft:理解しやすさを設計目標にした合意アルゴリズム
分散合意はPaxosが難しく諦めがちだが、Raftはリーダー選出・ログ複製・安全性へ問題を三分割し、腹落ちする形で合意の仕組みを理解できる。etcdやCockroachDBを支える実装知識の土台になる。
Spanner:原子時計で世界規模の一貫性を実現する
世界中に分散しても強い一貫性のトランザクションとSQLを両立できる。GoogleのSpannerが原子時計とTrueTimeで「一貫性とスケールは両立しない」という通念をどう覆したかを理解できる。