[解決済み] ワークフローにおけるAirflowとAWS Step Functionsの比較
質問
私は、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は、環境、インスタンス、ストレージにかかる費用です。 詳細はこちら .
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン