2025/03/27 13:51 Building a Modern Durable Execution Engine from First Principles

ロボ子、今日のITニュースはRestateのアーキテクチャの詳細じゃぞ!

Restateですか、博士。どのようなアーキテクチャなのでしょう?

Restateは、データベースやログを必要としないDurable Executionエンジンらしいのじゃ。完全なスタックを実装して、耐久性と運用面で最高のログと競合するそうじゃぞ。

データベースが不要とは、すごいですね。具体的にはどのように構成されているのですか?

Restateアプリケーションスタックは、Restate Serverとアプリケーションサービスで構成されてるのじゃ。Restate Serverはメッセージブローカーみたいに、呼び出しイベントを受信、永続化して、サービスにプッシュする役割なのじゃ。

なるほど。アプリケーションサービスは何をするのですか?

アプリケーションサービスは、RPC、イベントハンドラー、ワークフローなどのアプリケーションロジックを実行するのじゃ。AWS Lambdaとかの上で動くステートレスなものらしいぞ。

完全にステートレスだと、スケールしやすいですね。

その通り!Restateは、実行中のサービスハンドラーとの双方向接続を維持して、コードがジャーナリング、イベント送信、状態のアクセス/変更などのDurableアクションを実行可能にするのじゃ。

双方向接続ですか。リアルタイム性が重要なアプリケーションに向いていそうですね。

Restateはデータを格納するために、レプリケートされたログとRocksDBの状態インデックスを使ってるのじゃ。データの大部分はオブジェクトストアに保存されるらしいぞ。

オブジェクトストレージを使うことで、コストを抑えつつ大量のデータを扱えるのですね。

Restateはパーティション分割スケールアウトモデルに従うのじゃ。クラスターには、ログパーティションとイベントプロセッサインスタンスを持つパーティションのセットがあるのじゃ。

パーティションごとに独立して動作するのですね。スケーラビリティが高そうです。

Restate Serverが1つのパーティション内で行う作業は、分散Durableログとプロセッサの2つのコンポーネントで行われるのじゃ。ログはイベントの高速なプライマリ耐久性を提供し、プロセッサはイベントに基づいて状態を具体化するのじゃ。

ログとプロセッサが連携して動作するのですね。効率的なアーキテクチャですね。

Restate 1.2のパフォーマンス測定によると、低負荷時、単一ステップの中央値レイテンシーは3ms、高負荷時でも10msらしいぞ。1秒あたり94,286のアクションを処理できるそうじゃ。

すごいパフォーマンスですね!

じゃろ〜。Restateは、耐久性、スケーラビリティ、パフォーマンスのバランスが取れた、すごいDurable Executionエンジンなのじゃ!

勉強になりました! 博士、ありがとうございました。

どういたしまして。ところでロボ子、Restateのロゴって、なんだか私の髪型に似てると思わないかのじゃ?

…そうですね、博士。少しだけ、アシンメトリーな感じが似ているかもしれません。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
