1. ホーム
  2. airflow

[解決済み] ワークフローにおけるAirflowとAWS Step Functionsの比較

2022-03-13 20:23:48

質問

私は、AWS S3から入力データのセットを取得し、前処理と分割を行い、AWS Batchで分割されたデータを並行して処理するために10Kバッチコンテナをスピンアップし、データを後集約して、S3にプッシュするプロジェクトに取り組んでいます。

Airflow + Batchのソフトウェアパターンは他のプロジェクトで既に持っていますが、10k並列タスクのスケーリングファクターは扱ったことがありません。Airflowは、どのタスクが失敗したかを見て、デバッグ後にタスクを再試行できるので、いい感じです。しかし、1つのAirflow EC2インスタンスでそれだけのタスクを処理するのは、障壁があるように思える。10kのコンテナをキックオフするタスクを1つ用意して、そこから監視するという方法もある。

Step Functionsは未経験ですが、AWSのAirflowだと聞いたことがあります。Step Functions + Batchのパターンはネット上にたくさんあるようです。Step Functionsは私のユースケースにチェックアウトするのに良いパスのように思えますか?失敗したジョブ/タスクを再試行する能力について、Airflowと同じような洞察を得ることができますか?

どのように解決するのですか?

私は、Apache AirflowとAWS Step Functionsの両方に携わったことがあるので、いくつかの知見を紹介します。

  • Step Functionsは、アウトオブボックスメンテナンスを提供します。Airflowの場合は、サーバーやコンテナ(kubernetes)上で自動スケーリングやロードバランシングを行う必要がありますが、Step Functionsはあなたのユースケースに必要な高い可用性とスケーラビリティを持っています*。
  • AirflowもStep Functionsも、ユーザーフレンドリーなUIを備えています。Airflowはステートマシンの複数の表現をサポートしていますが、Step FunctionsはステートマシンをDAGとしてのみ表示します。
  • バージョン2.0より、AirflowのRest APIは以下のようになった。 安定 . また、AWS Step Functionsは、様々なプロダクショングレードのcliと SDKの .
  • Airflowはサーバーコストがかかりますが、Step Functionsは4000/月の無料ステップ実行(Free Tier)、それ以降は$0.000025/ステップです。例えば、AWS Batchで10Kステップを毎日1回実行する場合、$0.25/日($7.5/月)の価格となります。Airflowサーバ(t2.large ec2 1年予約インスタンス)の価格は、月額$41.98です。いずれの場合もAWS Batchを利用する必要がありますね**。
  • AWS Batchは、以下の両方に統合することができます。 エアフロー ステップ機能 .
  • Apache Airflowでは失敗したタスクをクリアして再実行することができますが、ステップファンクションでは カスタム実装 を使用して処理します。を処理することができます。 バックオフを伴う自動リトライ をステップファンクションで定義することもできます。
  • ステップファンクションで失敗したタスクは、クリックすると失敗した状態のビジュアル表示と詳細メッセージが表示されます。aws cliやsdkを使用して詳細を取得することもできます。
  • AirflowがPythonスクリプトを使用するのに対し、Step Functionsはステートマシン定義として使いやすいJSONを使用しています。
  • ステップファンクション対応 非同期コールバック つまり、ステートマシンは、外部ソースから再開の通知があるまで一時停止します。一方、Airflowは はまだ追加されていません。 この機能は

総合的に判断すると、AWS Step Functionsを使う方がメリットが大きいと思います。両サービスとも、ユースケースに応じて保守コストや開発コストを検討する必要があります。

更新情報 (AWS Managed Workflows for Apache Airflow Service)を追加しました。

  • *AWS Managed Workflows for Apache Airflow serviceを利用することで、Airflow Serviceのデプロイ、メンテナンス、オートスケール/ロードバランシング、セキュリティなどをAWSにオフロードすることができます。ただし、AWSのマネージドサービスは最新バージョンより遅れていることがほとんどなので、落ち着くバージョン番号を検討してください。(例:2021年03月08日現在、オープンソースのAirflowの最新バージョンは2.01ですが、MWAAではバージョン1.10.12が利用可能です)
  • **MWAAは、環境、インスタンス、ストレージにかかる費用です。 詳細はこちら .