講演資料
講義資料スライドの表紙です。上のスライド画像をクリックすると、同じ画面のまま全編のPDF資料を快適に閲覧・印刷することができます。
セミナーの概要
このセミナーは、「分散合意アルゴリズム Paxos」を中心テーマとして掲げ、現代のIT技術者が避けて通れない問いに真正面から向き合います。その問いとは、「ネットワーク上に分散した複数のノードが、障害やメッセージ遅延の存在する環境下で、どのようにして一つの値に合意できるのか」というものです。
セミナーの背景には、日本で大規模システム障害が連続して発生しているという現実的な危機感があります [p.5]。21世紀初頭のクラウドとスマートフォンの登場により、今日のプログラマの大部分は本人の意識如何にかかわらず「ネットワーク・プログラマ」となりました [p.8, p.9]。しかしその技術的意味が、クラウド以前の世代にも以降の世代にも、十分には伝わっていないという問題意識が本セミナーの出発点となっています [p.11]。
Paxosは1998年にLeslie Lamportが発表した分散合意アルゴリズムです [p.81]。GoogleのGFS・BigTableの両システムで共通に利用された分散ロックサービス「Chubby」はPaxosの実装にほかならず、また「Googleの秘密兵器」と呼ばれたクラスタ管理システム「Borg」もその永続ストアにPaxosを採用しています [p.13, p.65]。さらにApache Mesos、ZooKeeperなど現代のコンテナ・オーケストレーション技術の根底にも同じ思想が流れています [p.66, p.67]。
セミナーは三部構成で、第一部でネットワーク・プログラミングの本質的な難しさを哲学的・工学的に整理し、第二部でPaxosが実際にどのような役割を担っているかをシステム事例から俯瞰し、第三部でアルゴリズムそのものを「たとえ話」と「形式的定義」の両面から解説します。「分散合意」は枯れた過去の技術ではなく、その重要性は現代のIT技術においても新しい装いのもとに引き継がれているというのが、本セミナー全体を貫く結論です [p.13]。
講義のロードマップ
ここでは、セミナーの講演資料がどのようなパートから構成されているかを示します。また、それぞれのパートのポイントを紹介します。
■ Part 0: はじめに ― なぜ、今、Paxosなのか?
大規模システム障害の多発という現実を出発点として、クラウド技術の歴史的意義とその技術的エッセンスが十分に継承されていないという危機感を示します。GFS・BigTableに共通して使われた「Chubby」がPaxosの実装であることを指摘し、知らないままに通り過ぎることのできない技術として本セミナーの意義を宣言します [p.5, p.13]。
■ Part 1: ネットワーク・プログラミングの難しさ
Jim Waldoの1994年の論文「A Note on Distributed Computing」を主軸に据え、「ローカルなプログラミングとリモートなプログラミングは本質的に異なる」という命題を丁寧に論証します。レイテンシ・部分的障害・状態の喪失という三つの難関が、システムの複雑さの段階的な進化(SEQ→MT→MP→MM→MMU)とともに現れることを示します [p.16, p.40]。
■ Part 2: Paxosは、どう使われているか
Paxosの抽象的なアルゴリズムが、実際の大規模分散システムの中でどのような具体的役割を担っているかをイメージとして把握させます。クラウドにおけるノードの多重化・再構成、Googleのクラスタ管理システムBorg、そして「マスターが二つ存在する問題」をLeaseで解決するパターンという三つの切り口から、Paxosの実用的価値を浮き彫りにします [p.50, p.60, p.71]。
■ Part 3: Paxosアルゴリズム
Lamportの論文「The Part-Time Parliament」が描く架空のPaxos島の議会制度という巧みな「たとえ話」から出発し、形式的な三条件(B1・B2・B3)、さらにPhase 1a/1b/2a/2b/3という具体的プロトコルの流れへと段階的に理解を深めます。最終的に安全性(Safety)と生存性(Liveness)という二つの保証がどのように成立するかを明示します [p.79, p.89, p.127]。
ページのナビゲート