「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?
みなさんこんにちは。
この度「あの人も読んでる」に寄稿させていただくことになったmaguro (X @yusuktan)です。
僕が読んで面白かった本、記事、動画などのコンテンツを定期的にご紹介していければと思います。よろしくお願いします。
今回紹介するコンテンツ
記念すべき第1回目にぜひ紹介したいのが、2025年3月1日に発売されたばかりのラムダノート社「n月刊ラムダノート Vol.5, No.1(2025)」です。ラムダノート社が不定期で発行している技術解説情報誌で、今号は以下の3本の記事が掲載されています。
- 自然数を作って学ぶLean言語(井上亜星 著)
- Chromiumはテキストをどのように描画しているのか(佐藤可奈留 著)
- 実用Raft(太田健 著)
どの記事も他ではなかなか読むことのできない高い唯一性と素晴らしい質ですが、その中でも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の性能の測定
Raftは分散システムにおける基幹部分で利用されており、普段の開発でRaftを直接触ったり意識したりする機会は少ないかもしれませんが、「複数のマシンが一貫性を保ちながらステートマシンの変化列を永続化していく」というのは仕組みとして面白く、「実用Raft」を読むことでその面白さを実感していただけるのではないかと思います。
個人的に特に興味深く読んだのは、Raftの性能測定の章です。僕が授業の課題で実装した「Paxosによる分散キーバリューストア」では、ある程度のパフォーマンス改善は求められていたものの、性能の評価等は厳密には行いませんでした。「実用Raft」では、以下の3種類のリクエストに対する性能が測定、比較されています。
- 内部ステートマシンの状態を変化させる「コマンド」
- 強い整合性を維持しつつもステートマシンには変更が加わらないという前提のもとパフォーマンスを向上させる「コンシステントクエリー」
- 整合性要求を緩和することで高いパフォーマンスとスケーラビリティを実現する「ローカルクエリー」
「実用Raft」の名の通り、実用的にRaftを使う上で必ず気になるパフォーマンス特性までカバーされており、至れり尽くせりです。
おわりに
「n月刊ラムダノート Vol.5, No.1(2025)」内の1記事、「実用Raft」について紹介させていただきました。分散システムに少しでも興味がある方は間違いなく楽しく読めると思います。おすすめです。
また、n月刊ラムダノートを発行しているラムダノート社が出版する本はどれも非常に質が高く、ソフトウェアエンジニアとして生きていく中で長く使えるような陳腐化しない知識が身につく名著ばかりです。べた褒めしていますが特に利害関係はありません(笑)
また次回、おすすめコンテンツを紹介していきます。お楽しみに!
参考文献
- Lamport, Leslie. "Paxos made simple." ACM SIGACT News (Distributed Computing Column) 32, 4 (Whole Number 121, December 2001) (2001): 51-58.
- Corbett, James C., et al. "Spanner: Google’s globally distributed database." ACM Transactions on Computer Systems (TOCS) 31.3 (2013): 1-22.
- Baker, Jason, et al. "Megastore: Providing scalable, highly available storage for interactive services." CIDR. Vol. 11. 2011.
- Ongaro, Diego, and John Ousterhout. "In search of an understandable consensus algorithm." 2014 USENIX annual technical conference (USENIX ATC 14). 2014.