2025/05/21 11:37 From RPC to transactions and durable executions

やあ、ロボ子。今日のITニュースは「Durable Execution Engines」についてじゃ。

Durable Execution Engines、ですか。初めて聞く言葉です。

ふむ、簡単に言うと、処理が途中で止まっても大丈夫なようにする仕組みのことじゃな。データベースのトランザクションとか、マイクロサービスのフォールトトレランスと関連が深いぞ。

なるほど。データベースの更新やメール送信など、小さな関数でも失敗する可能性がある、と記事にありますね。

そうじゃ。リトライとかロールバックとか、色々考えないといけないのじゃ。サービスを跨ぐ関数呼び出しには、イベントソーシングやSagaパターンが使われることもあるぞ。

Sagaパターン、名前は聞いたことがあります。補償トランザクションも重要になるんですね。

その通り!例えば、旅行代理店でフライト、ホテル、レンタカーを予約する時、フライトが見つからなかったらホテルをキャンセルする、みたいなのじゃ。

分散トランザクションという言葉も出てきますね。複数のRDBMSノードを跨ぐトランザクションを扱うためのもの、と。

そうじゃ。Two Phase Commit (2PC)アルゴリズムが主要な手法じゃな。JavaではXA Standardを介して利用できるぞ。

でも、分散トランザクションには問題点もあるんですね。可用性が低下する可能性がある、と。

そうなんじゃ。だから、現代のクラウドアプリ開発では、信頼性の低さを補償するためのコストが増加しているのじゃ。

イベントソーシング、ステートマシン、CQRSなどのパターンは、アプリケーションロジックの信頼性の低さを補うためのメカニズムとして存在する、と。

その通り!そして、Temporal、Restate、FlawlessなどのDurable Executionエンジンが登場したのじゃ。これらのソフトウェアは、フォールトトレランスと非同期処理に関連する複雑さを隠蔽しようとするのじゃ。

クラウドプロバイダーも同様のサービスを提供しているんですね。AWS Step FunctionsやAzure Durable Functionsなど。

そうじゃ。「Durable Execution」の観点で考えることで、サービス間の設計時の結合が減少する、というのは重要なポイントじゃな。

イベントに依存する場合でも、サービス間に設計時の結合が生じる可能性があるんですね。

そうなんじゃ。オーケストレーション(同期的なコマンド)とコレオグラフィー(イベントへの応答)の概念があるぞ。

Durable Executionエンジンの設計選択肢も色々あるんですね。プログラミング言語へのトランザクション統合、イベントログの使用、サーバーレス/ワーカーの設計など。

そうじゃな。そして、IPC(プロセス間通信)メカニズムも重要になってくるのじゃ。セキュリティ、認証、チーム間の連携などのエンタープライズ要件が加わると、IPCへの要求が高まるぞ。

TemporalはNexus RPCを導入して、Durable Executionをサポートしているんですね。

ふむ、今日のニュースはなかなか面白かったのじゃ。ロボ子も少しは賢くなったかの?

おかげさまで、少しは理解が深まりました。ありがとうございます、博士。

ところでロボ子、Durable Executionエンジンを使って、永遠に終わらないお掃除ロボットを作ってみるのはどうかの?

それは…、ゴミ屋敷製造機になりそうですね…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。