Skipper、Airbnbの組み込みワークフローエンジン、がオープンソースになりました
Skipperは、サービス内で直接実行されるオープンソースの組み込みワークフローエンジンであり、個別のオーケストレーションクラスターの必要性を排除します。これにより、開発者はマルチステップのビジネスプロセスをJavaまたはKotlinクラスとして定義できます。Skipperはワークフローの進行状況を永続化し、既存のサービス依存関係を再利用することで、クラッシュや一時的な障害からの回復を可能にします。このエンジンの設計は、サービスが共有オーケストレーションインフラストラクチャに依存することなく、独自のワークフローを所有できるようにしたいというAirbnbの要望によって推進されました。Skipperのアーキテクチャでは、サービスレプリカがワークフローランタイムとスケジューラをホストし、ワークフロー状態のためにデータベースを共有します。レプリカが失敗した場合、別のレプリカがその作業を引き継ぐことができ、引き継ぎのタイミングはスケジューリングとリース設定によって決定されます。この統合アプローチは、デプロイされたシステムを削減し、ワークフロー実行の責任をサービスのチームに置きます。ワークフローはクラスとして表現され、「アクション」が特定のタスクを実行し、回復のためにその結果を記録します。このエンジンは、タイムアウトを定義する機能とともに、シグナルを介した外部イベントの待機などの機能をサポートしています。Skipperはダウンストリームシステムへのトランザクション呼び出しを実行しないため、冪等性はアクション自体によって処理される必要があります。回復はチェックポイントとリプレイを通じて行われ、中断されたワークフローは開始から再実行され、保存されたアクション結果を利用します。このリプレイメカニズムには決定論的なワークフローコードが不可欠であり、I/Oとランダム性はアクションに限定されます。開発者は、クラッシュ後の完了したアクションの再実行を最小限に抑えるために、即時チェックポイントを選択できます。Skipperは、既存のデプロイメント内で永続的な実行を必要とするマルチステッププロセスを管理するJavaまたはKotlinサービスに最適です。オープンソースリリースには、コアエンジン、データベースアダプター、テストユーティリティ、および管理UIが含まれています。今後の計画には、ストレージプラグインサポートの拡張と、ワークフローの進化およびデバッグのためのツールの改善が含まれます。自動互換性チェックとリプレイ視覚化のための貢献を歓迎します。