- 「TypeScriptで書かれた耐久性があり(durable)、再開可能(resumable)なワークフローフレームワーク」
- さまざまなサービスやAPIを接続して複雑な業務フローを自動化するワークフローエンジンを提供
- ワークフロー自動化と統合の課題を解決するために開発されたモジュール型オープンソースプラットフォーム
- サーバーが落ちたりデプロイがあっても、状態をPostgresに保存することで、正確に最後のステップから再開して実行可能
- 各
step.run({ name }, fn) は一度だけ実行され、結果がメモ化されるため、クラッシュ後の再起動時にもカード決済やメール送信のような副作用を重複実行せず、キャッシュされた結果を再利用
- 専用サーバーなしでワーカープロセス(
ow.newWorker({ concurrency }))がDBから pending run をポーリングして実行する構造のため、ワーカーを複数起動して高可用性・スケールアウトが可能で、step.sleep("id", "1h") のような長時間 sleepでもワーカースロットを占有しない
- ワークフローの入力/出力ジェネリクス、バージョンフィールド(
version: "v2")、run().result(), handle.cancel() などにより、型安全な定義・バージョン管理・結果取得・キャンセルをすべてコードレベルで扱えるよう設計
- プラグインアーキテクチャにより、外部システムとの拡張やカスタマイズをサポート
- OpenAI, Slack, GitHub, Notion など主要なSaaSおよび開発ツールとの統合をサポート
- 現在は**PostgreSQLバックエンドと基本ランタイム機能(同時実行、リトライ、並列 step、sleep、バージョン管理、cancel)**に注力
- 今後はCLI・ダッシュボード・idempotency key・ロールバック/補償関数・signals・OpenTelemetry・Redis/SQLiteバックエンド・Go/Python SDK などがロードマップに含まれている
2件のコメント
少し前に GitHub - earendil-works/absurd: An experiment in durability https://share.google/PCjaLh3j46ayECI9b これが上がっていましたが……同じコンセプトのプロジェクトに見えるのですが、どこに行ったのでしょうか……
Spring Batchに似た感じですね