London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十四章の振り返り収録です。"Consensus" の内容について振り返りました。ついに全十四章を完走しました!
まずは分散システムにおける合意形成の根本的な課題について紹介しました。友人間での日程調整をアナロジーとして、合意形成の困難さや、連絡エラー、返事の遅れ、予定変更、機器故障などの現実的な問題を例に、分散システムの合意形成問題を説明しました。
本章の内容について振り返っていきます。まず、合意形成の基盤となる Atomic Broadcast について解説しました。オンライン会議での発言順序をアナロジーとして、「全てのノードが同じ順序でメッセージを受信すること」の重要性について説明しました。Apache Zookeeper で実装されている ZAB(Zookeeper Atomic Broadcast)についても紹介しました。
Paxos については、分散合意の理論的基盤となる古典的アルゴリズムとして紹介しました。Lamport 教授による 1998 年の発表以来、多くの後続アルゴリズムに影響を与えた一方で、「理論的には美しいが実装が困難」という特徴について説明しました。Multi-Paxos、Fast-Paxos、Egalitarian Paxos(EPaxos)、Flexible Paxos といった改良版についても触れました。
Raft については、「理解しやすく、実装しやすい」ことを明示的な目標として設計された現実的な選択として詳しく解説しました。問題をリーダー選出、ログレプリケーション、安全性に分割するアプローチや、YugabyteDB をはじめとする多くの現代的な分散データベースでの採用理由について説明しました。Raft の命名秘話(reliable, replicated, redundant, fault-tolerant から候補を選定)についても紹介しました。最後に、Byzantine Consensus についても説明しました。
その他 Bookclub で盛り上がった各参加者の深掘り内容や、全十四章完走の達成感について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
今回は Kaz の一人収録でポルトガルのリスボン旅行について語りました。リスボンの料理やスイーツ、街についてお話しています。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" の振り返り収録ボーナス編です。
Atsushi Hatakeyama さんをゲストにお呼びして、本書の振り返りや Bookclub の意義について雑談しました。
また、そこから派生して、学習の意義、新しい技術のキャッチアップ疲れ、手を動かして学ぶ「実践」の重要性について話が広がりました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Asai さんをゲストにお呼びしました。Asaiさんの近況についてキャッチアップしました。前半では第二子出産、ジュネーブとロンドンの保育園事情についてお話しました。その後、AsaiさんのSREからAI Engineerへの転身について決断した背景等をお伺いしました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十三章の振り返り収録です。"Distributed Transactions" の内容について振り返りました。
まずは分散トランザクションの根本的な問題について紹介しました。海外旅行の複数都市手配(航空券、ホテル、レンタカー)をアナロジーとして、「オール・オア・ナッシング」の Atomicity がなぜ重要なのか、そして分散環境でそれを実現することの困難さについて説明しました。
続いて、2PC(Two-Phase Commit)について詳しく解説しました。Coordinatorが中心となって動作する二段階のアルゴリズムを、「Up-or-out な会社のチームリーダー」のアナロジーで説明し、そのシンプルさと普遍性、そして「Blocking」特性という課題について触れました。
次に、3PC(Three-Phase Commit)を紹介しました。2PCの改良版として「Prepare to Commit」フェーズを追加し、より慎重な合意形成を行う仕組みを、「スイスのような完全民主主義国家の議長」というアナロジーで説明しました。理論的な改善と実際の使用頻度のギャップについても言及しました。
決定論的アプローチとして、Calvin、Spanner についても簡単に説明しました。Calvinの「グローバルな実行順序の事前決定」による効率化、Spannerの「シャードごとの2PC最適化」とTrueTimeによるExternal Consistency について話しました。
その他 Bookclub で盛り上がった実践的な議論や、次回の Chapter 14 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Shunsuke さんをゲストにお呼びしました。Shunsuke さんが最近行った旅行先のプラハ、ユトレヒト、コペンハーゲン、エッセンとデュッセルドルフについてお話しました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十二章の振り返り収録です。"Anti-Entropy and Dissemination" の内容について振り返りました。
まずは大規模な分散システムにおけるメタデータ配信の課題について紹介しました。会社の組織変更情報を全社員に伝達する状況をアナロジーとして、ブロードキャスト方式の通信コスト問題や、階層構造による情報伝達の効率性と課題について説明しました。
続いて、Anti-entropyアルゴリズムの3つの主要コンポーネントを詳しく解説しました。Read Repair(修復アルゴリズム)では図書館の司書さんによる蔵書情報照会の例を用いて、データを読む時の「ついでに修復」という仕組みを説明しました。Digest Reads(検知アルゴリズム)では、全データではなくハッシュ化されたダイジェストのみを送って効率的に差分を検知する方法を紹介しました。Hinted Handoffs(予防機能)については、学校の宿題預かりシステムをアナロジーとして使用し、故障したノードの代わりに他のノードが一時的にデータを預かる仕組みについて説明しました。重要なのは「権限の引き継ぎ」ではなく「一時的な荷物預かり所」であるという点も強調しました。
また、効率的なデータ構造として Merkle Tree と Bitmap Version Vector について触れました。Merkle Tree はブロックチェーンでも使われる階層的なハッシュ構造による差分検知技術として、Bitmap Version Vector はビット演算(XOR)を使った更新追跡の仕組みとして紹介しました。
さらに、Gossip Protocol について説明しました。疫病や噂話が集団の中で拡散される様子をアナロジーとして、情報がネットワーク全体に「感染」のように広がる仕組みと、そのスケーラビリティの利点や重複メッセージのオーバーヘッドという課題について触れました。Plumtree(Hybrid Gossip)と HyPerView(Hybrid Partial View)についても簡単に触れました。
その他 Bookclub で盛り上がった観点や、次回の Chapter 13 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
本日のエピソードは Kaz のパートナーの Yumiko をゲストに招待して、ロンドンの天気とロンドンに移住してから始まった新しいことをお互い3つづつ出して近況を話しました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十一章の振り返り収録です。"Replication and Consistency" の内容について振り返りました。
まずは分散システムにおけるレプリケーションの必要性と、それに伴う整合性の課題について紹介しました。大学の図書館分館のアナロジーを織り交ぜながら、同じ質問に対して場所によって異なる答えが返ってくる状況を例に、分散システムの整合性問題を説明しました。
続いて、悪名高い CAP 定理について触れました。Consistency(一貫性)、Availability(可用性)、Partition tolerance(分断耐性)の三つのうち最大で二つまでしか同時に満たせないという理論と、その現実的な適用における注意点について説明しました。CP システムと AP システムの具体例も交えて紹介しました。
その後、様々な整合性モデルについて詳しく解説しました。Sequential Consistency では SNS や銀行システムの例を用いて、すべてのノードが同じ順序でイベントを確認する重要性を説明しました。Causal Consistency については、因果関係のあるイベント同士の順序性のみを保証する、より緩い整合性モデルとして紹介しました。Eventual Consistency では、Amazon のショッピングカートの実装例を挙げ、最終的な整合性がどのように実現されるかを具体的に説明しました。
また、チューナブル整合性の概念として R + W > N の式を紹介し、図書館分館での在庫確認のアナロジーを使って、読み込み(R)と書き込み(W)のクォーラムをどのように調整するかについて説明しました。
その他 Bookclub で盛り上がった実践的な議論や、次回の Chapter 12 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
皆さん、いかがお過ごしでしょうか?9月になってロンドンはすっかり夏の終わりです。本日のエピソードはホスト二人の近況回になっています。
ロンドンの夏の服装とKenのヒゲや髪型のこだわりについてまったりと話しています。
ご感想はご意見は X でハッシュタグ #LondonTechTalk をつけてつぶやいてください。お便りはこちらの Google Form でも募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第十章の振り返り収録です。"Leader Election" の内容について振り返りました。
まずは "Bully Algorithm" について紹介しました。避難所の比喩を織り交ぜながら、リーダーが故障した時に、ノードが自分のランクをお互いに送り合いながら新しいリーダーを決める過程について紹介しました。
続いて Bully Algorithm の改良版とも言える "Next-In-Line Failover" や "Candidate/Ordinary Optimization" について紹介しました。次にリーダーになりうる候補者リストを事前に決めたり、リーダーに選定されうる候補者セットとそうではない一般セットに分けたり、といった工夫によって、リーダー選定アルゴリズムにおける Thundering Herd 現象を避けようとしている観点について触れました。
その他、ボトムアップでリーダーを選定する "Invitation Algorithm" や、リング状のトポロジーを形成してリーダーを決める "Ring Algorithm" についても説明しました。
その他 Bookclub で盛り上がった観点や、次回の Chapter 11 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Yuta さんを初めてゲストにお呼びしました。ベルリンからトロント、東京へと渡り歩いた Yuta さんの日本本帰国後に何をしているか、今後についてお話を伺いました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Blue Penguin さん、angreen さん、りささんからお便りをいただきました。お便りありがとうございます。そのお便りに返信する形で収録しました。
前半は、Blue Penguin さんと angreen さんのお便りの返信という形で「技術アウトプットのモチベーション維持」について話しました。
後半は、りささんのお便りの返信という形で「ベルリンとロンドンの生活の違い」について話しました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Tomohisa さんをゲストにお呼びしました。今回のトピックは「AI 時代のプログラミング教育」です。
Tomohisa さんが七月初旬に公開された記事 (zenn.dev) の中で、12歳と16歳の娘さんたちに Claude Code を用いてアプリを作成して Vercel にデプロイまで完成させた、というストーリーを紹介されていました。この記事を受けて、コーディングの経験が無い子どもたちが、AI コーディングツールを用いることによって、どのような教育の可能性を広げることができるのかについて議論しました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk で書籍出版プロジェクトを始動しました。本収録では、どのようなトピックなのか、なぜ書籍を出版しようと思ったのかについて紹介しました。また、プロジェクトに携わる Teppei と Ken それぞれの想いについても触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
imajin さんをゲストにお呼びしました。
アイルランドの天気についてお話することから始まり、家族が日本に一時帰国している間にどう時間を過ごすか、特にimajinさんはランニング、読書にハマっていること、孤独とどう向き合うかについてお話を聞きました。また最近の大きな出来事として、同僚と外で飲んでいるときにバックパックを盗まれて犯人を AirTag で追跡したことを共有していただきました。後半では、最近のお仕事の話、例えば iOS エンジニアからフルスタックな働き方をしていること、大企業で必要なスキル、日本本帰国したときのお仕事について語り合いました。
ご感想はご意見は X でハッシュタグ #LondonTechTalk をつけてつぶやいてください。お便りはこちらの Google Form でも募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第九章の振り返り収録です。"Failure Detection" の内容について振り返りました。
まず "Heartbeat / Ping" スタイルでの故障検知について紹介しました。誤検知を避けるために、タイムアウト時間を伸ばしたり、リトライ回数を増やしたりという軽減策と、そのデメリットについて SRE としての実体験をもとに紹介しました。
次に "SWIM Protocol" について話しました。 Heartbeat スタイルと Gossip スタイルの合わせ技とも言えるアルゴリズムです。Direct Ping / Indirect Ping の使い分けや、どのようなノードリストをメンバー間で共有していくのかについて触れました。
続いて ”Phi Accurual Failure Detection" について説明しました。Apache Akka や Apache Cassandra でも使われている本プロトコルは日本の研究者によって発表された論文に基づいています。故障確率 Phi を数理統計的に計算するその革新性について話が広がりました。
最後に、それぞれのプロトコルを「朝になかなか起きてこないティーンエイジャーの子供を起こすシーン」というアナロジーで説明してみました。
そのほか Bookclub で盛り上がった観点や、次回の Chapter 10 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
ホストの二人で近況編を収録しました。
前半は、Kaz が新しいホームベーカリーを購入した話をしました。毎朝焼きたてのパンを焼く技術、変数を変えながら味を試行錯誤する過程、朝ごはんのレパートリーについて盛り上がりました。
後半は、Ken と Kaz が、子育てをしながら父親プログラマーという前提で考える、現在のキャリア戦略について意見交換をしました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
London Tech Talk 名物 Bookclub 第四弾 "Database Internals" 第八章の振り返り収録です。"Distributed Systems - Introduction and Overview" の内容について振り返りました。
冒頭からいきなり脱線して SQLite3 がいかに耐障害性と Simplicity の観点から優れているかについて語ってしまいました。とはいえ、この背景にあるのはいかに Distributed Database Systems を運用するのかが難しいという事実があります。
ようやく本来のトピックに戻り、本章の内容について振り返りました。Two General's Problem や FLP Impossiblity などのキーワードについて紹介しました。
また Bookclub で盛り上がった観点についても紹介しました。Exactly-once delivery / At-least-once delivery やメッセージの順序保証の難しさ、 Backoff / Jitterのようなリトライ戦略の重要性について議論しました。
加えて TGP (Two General's Problem) / BGP (Byzantine Generals Problem (BGP) の違いについても紹介しました。分散環境における合意形成の難しさについて、以前 Ken が執筆した人狼ゲームのアナロジーで語る合意形成のブログにも触れました。
そのほか Bookclub で盛り上がった観点や、次回の Chapter 9 の予定について触れました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。
Mag さんをゲストにお呼びしました。Mag さんはスイスで完全未経験からソフトウェアエンジニアの職を得ました。その体験談について、彼女がどのような思いでソフトウェアエンジニアを目指したか、職を得るまでに行ったこと等のお話をお聞きしました。
ご意見・ご感想など、お便りはこちらの Google Form で募集しています。