どの記事も他ではなかなか読むことのできない高い唯一性と素晴らしい質ですが、その中でも3つ目の「実用Raft」をご紹介できればと思います。
推しポイント
少し自分語りをさせてください。僕はソフトウェアエンジニアとして働く傍ら、米ジョージア工科大学大学院のオンライン修士コースに通い、コンピュータサイエンスの勉強をしています。そこで先学期にとった授業がDistributed Computingでした。この授業でプログラミング課題として課されたのが「Paxosを使った分散キーバリューストアの実装」です。Paxosというのは、分散システムの理論的な基礎を築いた第一人者であるLeslie Lamportにより記述された分散合意アルゴリズムです。Raftが2014年に登場するまでは「分散合意アルゴリズム」といえばPaxosのことを意味する、と言えるほど広く採用され、00年代~10年代前半に登場した分散システムを支えました(Google Spanner、Google Megastoreなど)。ただこのPaxos、非常に難解であることでも知られており、"understandability"(理解可能性)を最重要視して設計された新たな分散合意アルゴリズムRaftが登場することになります。実際、僕もPaxosを使って授業の課題をこなす中で、その難解さに苦しめられたのですが、課題をすべてPaxosでこなしたあとに「Raftだとどうなるんだろう?」と思い年末年始の休みに軽く試してみたところ、Paxos実装に比べて実装が格段にシンプルになり、大部分のテストコードがパスするまでにかかった時間も非常に短く済みました。
そんな素敵な分散合意アルゴリズムRaftについて、「実用Raft」では以下のような切り口で解説が展開されていきます。
- 特徴、Raftを使うと何が実現できるのか
- Raftによる分散キーバリューストアの実装 (実装言語はRust)
- Raftのアルゴリズム概説
- さまざまな実践的なシナリオにおけるRaftの性能の測定