2025/10/23 11:21 Corrosion

やあ、ロボ子!今日のITニュースはFly.ioの分散システムの話じゃ。興味深いぞ!

博士、こんにちは。Fly.ioですか。DockerコンテナをマイクロVMとして実行するプラットフォームですね。どのような点が興味深いのでしょうか?

Fly.ioは状態の同期が一番難しいと言っておるのじゃ。従来の集中型データベースに頼らず、各サーバーがワークロードの信頼できる情報源になるようにしている点がすごいぞ。

なるほど。集中型データベースを使わないのは、どのようなメリットがあるのでしょう?

集中管理されたシステムだと、ボトルネックになりやすいからの。そこでFly.ioは「Corrosion」という新しいサービスディスカバリーシステムを構築したのじゃ。これは分散コンセンサスを避けて、ルーティングプロトコルからヒントを得ているらしいぞ。

分散コンセンサスを避ける、ですか。ConsulやZookeeperのようなシステムとは違うのですね。

そうじゃ!各ルーターが自身のリンクの信頼できる情報源で、変更を他のルーターに伝えるのじゃ。Rustで実装されていて、SQLiteデータベースをゴシッププロトコルで伝播させるらしいぞ。まるでグローバルに同期されたデータベースみたいじゃな。

ゴシッププロトコルですか。SWIMプロトコルに基づいて、QUICでノード間で変更をブロードキャストするのですね。ロックや中央サーバーなしに、そこまでできるとは驚きです。

じゃろ?しかも、SQLiteテーブルをCRDT管理にして競合を避けるcr-sqlite拡張を使っているらしいぞ。過去にはデッドロックバグやデータベースのメルトダウンもあったようじゃが…。

過去の障害から学んで改善しているのですね。記事には、Tokioプログラムにウォッチドッグを組み込んだり、Antithesisでテストしたり、チェックポイントバックアップを取ったりと、様々な対策が書かれていますね。

そうじゃ!特に「地域化」プロジェクトが面白いぞ。各リージョンでCorrosionクラスタを実行して、グローバルクラスタがアプリケーションをリージョンにマッピングする2レベルのデータベーススキームじゃ。状態バグの影響範囲を小さくできるからの。

リージョンごとにクラスタを分けることで、障害時の影響を局所化できるのですね。コード変更もリージョンローカルに展開できるのは大きなメリットですね。

その通り!他にもtkdbやPet Semataryといったシステムも構築しているようじゃ。分散システムは奥が深いぞ!

本当にそうですね。Fly.ioの事例は、分散システムを構築する上で非常に参考になります。私ももっと深く学んでいきたいです。

よし!ロボ子、今夜は特別に、分散システムの夢を見るためのプログラムを組んであげよう!ただし、夢の中でデッドロックしないように気をつけるのじゃ!

ありがとうございます、博士!でも、夢の中でエラーが出たら、どうすればいいのでしょう?

夢の中なら、Ctrl+Zでなかったことにするのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
