Temporal Technologies社は、durable execution(永続的な実行)に特化したオープンソースのマイクロサービスオーケストレーションプラットフォームであるTemporalを開発した企業であるが、AWSマーケットプレイスでTemporal Cloudを提供開始した。AWSを通じてサービスを提供することで、大規模アプリケーション向けの耐障害性のある分散システムの開発を簡素化することを目指している。
最近のブログ投稿で、AWSのシニアパートナーソリューションアーキテクトであるSai Kotagiri氏とTemporalのスタッフソリューションアーキテクトであるNeil Dahlke氏は、TemporalのプラットフォームとAWSインフラストラクチャの組み合わせが、組織が一貫性を保ち、システム障害から自動的に回復するフォールトトレラントなアプリケーションを構築できる方法を詳述した。
投稿では、分散システム、特に大量のトランザクションを処理する企業に特有の課題について解説している。ピーク販売期間中の仮想的なeコマースの停止を主要な例として使用している。データベースの障害、ネットワークの問題、APIのタイムアウト、キューのオーバーフローなどの問題が、サービスの低下やデータの不整合を引き起こす可能性がある。著者らは、各ステップの状態を追跡し、障害発生時点から再開可能にすることで、トランザクションの完了を保証するパラダイムであるDurable Executionが、これらの課題を克服するために重要であると主張している。
durable executionの重要性について、Hacker NewsのDurable Execution Engine Restateについての議論に参加したSewen氏は次のように説明している。
私たちがdurable executionについて考える方法は、それが長時間実行されるコードだけでなく、複数のステップが互いに積み重なるすべてのものに非常に役立つということです。サービスが複数のAPIとやり取りし、状態を更新し、ロックを保持し、イベントをキューに入れたりする際にはいつでも、状態が変化するほぼすべてのバックエンドロジックが、最終的にDurable Execution基盤の恩恵を受けます。そこで問題となるのは、オーバーヘッドを十分に低く抑え、システムを軽量化することで、あらゆるケースでDurable Executionを魅力的に使用できるかどうかです。それが私たちがここで構築しようとしているものです。
Temporalのプラットフォームは、SDKを通じてdurable executionを提供し、アプリケーションが障害や分散プロセスを超えて状態を維持できる。開発者は、アプリケーションロジックをオーケストレーションするためのワークフローを定義し、再試行ポリシーを設定可能な個々のアクティビティに分割する。ワーカーはタスクキューを介してTemporalサーバーと通信し、これらのワークフローとアクティビティを実行する。Temporalサービスは、これらのワークフローの実行と状態を管理し、AWS上でのセルフホスティングやTemporal Cloudの使用などのデプロイメントオプションを提供している。
(出典:AWS Partner Networkブログ投稿)
重要な利点として、Temporalのイベント駆動型アーキテクチャが強調されている。これは、各ワークフローアクションの詳細で不変のイベント履歴を保持する。この機能と永続的な状態管理を組み合わせることで、Temporalは障害を検出し、現在の状態を評価し、イベント履歴を確認し、最後の有効なポイントから実行を再開することで、体系的に障害から回復できる。プラットフォームは、障害が発生してもデータの整合性を保証するために、正確に一度だけの実行セマンティクスを保証している。
Redditのスレッドでのある回答者は次のように述べている。
はい、Temporal.ioを使用しました。信頼性のある複雑で長時間実行されるワークフローを管理する必要がある場合、これは堅実なフレームワークです。AWS Step Functionsとは異なり、リトライ、状態の永続化、障害回復をカスタムコードを大量に書かなくても対応します。
ブログ投稿では、Amazon Elastic Kubernetes Service(Amazon EKS)やAmazon Elastic Container Service(Amazon ECS)などのAWSサービス上でコンテナ化された環境でTemporal Workerを実行する効率性の向上も強調されている。このアプローチは、リアルタイムの需要に基づいて処理能力を自動的にスケールし、ピーク負荷時でも一貫したパフォーマンスを確保する。
(出典:AWS Partner Networkブログ投稿)
TemporalとAWSの統合は、セキュリティと運用の卓越性にも及んでいる。AWS Certificate Managerは、安全な通信のためのmTLS証明書管理を担当し、AWS PrivateLinkは顧客VPCとTemporal Cloud間のプライベート接続を提供する。Amazon Kinesisの統合は、運用の可視性を向上させるためのリアルタイムの監査ログを簡素化する。顧客は、AWSのスケーラビリティとリソース利用を活用して、Amazon EC2インスタンスやECSまたはEKS上のコンテナ化された環境にTemporalベースのアプリケーションをデプロイできる。
ブログ投稿は、Temporalのdurable execution機能とAWSの包括的なインフラストラクチャおよびマネージドサービスを組み合わせることで、組織はインフラストラクチャの障害管理の複雑さではなく、ビジネスロジックに集中できるようになり、最終的には開発者エクスペリエンスが向上し、運用のオーバーヘッドが削減されると結論付けている。
最後に、Learn Temporalでサンプルやチュートリアルが利用可能だ。