Kestraは、開発者による複雑なパイプラインの構築、実行、スケジュール、監視を支援する、新たなオープンソースのオーケストレーションおよびスケジューリング用プラットフォームだ。
Apache KafkaやElasticSearchといった、広く知られたツールを基盤として構築されている。Kafkaアーキテクチャが提供するのはスケーラビリティだ — KestraクラスタのワーカはすべてKafkaのコンシューマとして実装されており、ワークフローの実行状態はKafka Streamsで実装されたエグゼキュータ(executor)が管理する。ElasticSearchは、すべてのデータの表示、検索、集約を可能にするデータベースとして使用されている。
KastraでFlowと呼ばれるワークフローの概念が、このプラットフォームの心臓部だ。Flowはyamlに基づく記述言語で定義されたタスクのリストで、単純なワークフローの定義だけではなく、動的タスクやフローの依存関係といった複雑なシナリオも記述できる。
他のフローの結果やGoogle Cloud Storageからのファイル検出、SQLクエリの結果といったイベントをFlowのベースにすることも可能だ。cron式に基いて定期的にスケジュールすることもできる。さらにKestraでは、ワークフローを任意のアプリケーションから起動したり、Web UIから直接開始するためのAPIも公開している。
実際にKestraには、開発者がフローをリアルタイムで編集、実行、監視できる、リッチなWebインターフェースが付属している。
KestraのWebインターフェースは次のようなものだ。
Kestraは、複雑なワークフローを処理し、大規模なデータセット(ETLあるいはELT)の移動、変換、およびロードを行うデータオーケストレータとして、複数のワーカに作業をスケジュールし、すべてのプロセスを監視する分散crontabとして、あるいはAPIコールなどの外部イベントに反応するイベント駆動ワークフローとして、使用することができる。
KubernetesやCloud仮想マシン、Docker、オンプレミスにも、あらゆる場所に展開が可能だ。さらに、プラグイン可能なアーキテクチャにより、Amazon S3やApache Avro、Google BigQuery、MongoDBとの連携のように、プラグインによって機能を追加することもできる。
プラットフォームとしてはApache Airflowに近いが、こちらはyamlではなくPythonで記述されたワークフローを使用している。
yamlで記述されたフローは次のようなものになる。
最新リリースでは、CPU使用率とレイテンシの低減によって全体的なパフォーマンスが向上した他、バルククエリの可能なJDBCプラグインが新たに導入されている。
ソフトウェアとしては比較的新しく、最初の公式リリースが発表されたのが2022年2月である。最新バージョンである0.4.2がGithubリポジトリから入手可能だが、欧州の小売業大手のひとつであるLeroy Merlinでは、すでに実運用に使用されている。