あるデータエンジニアリングチームは、以下の順番で実行する複雑なETLパイプラインを構築しています。 ①AWS Glueジョブでデータを前処理してS3に出力する ②Amazon EMR上でApache Sparkジョブを実行してデータを集計する ③集計結果をAmazon Redshiftにロードする ④成功・失敗をAmazon SNSで通知する 各ステップで再試行ロジックとエラーハンドリングが必要であり、パイプライン全体の実行状態をビジュアルに監視したいと考えています。この要件に最も適したオーケストレーションサービスはどれですか?
AWS Step Functions はサーバーレスのワークフローオーケストレーションサービスで、Amazon States Language(JSON)でステートマシンを定義します。AWS Glue、Amazon EMR、Amazon Redshift Data API、Amazon SNSなど200以上のAWSサービスとSDK統合によりコードなしで連携でき、各ステートにCatch(エラーハンドリング)とRetry(再試行設定)を宣言的に記述できます。実行中のワークフローはStep Functionsコンソールでビジュアルに状態遷移を確認でき、実行履歴も保存されます。 選択肢AのAmazon EventBridge Schedulerは定期スケジュールでタスクを実行する機能ですが、前ステップの成功を受けて次のステップを実行したり、エラー時に自動リトライするような複雑なワークフロー制御には対応していません。 選択肢BのAWS Glue WorkflowはGlueジョブやクローラーのオーケストレーションに有効ですが、Amazon EMRジョブの実行やAmazon SNS通知といったGlue以外のサービスをネイティブに組み込む機能がなく、マルチサービスのパイプラインには不向きです。 選択肢DのAWS Lambda連鎖は同期呼び出しの場合15分のタイムアウト制限があり、EMRジョブのような長時間実行タスクの待機に対応できません。また状態管理とエラーハンドリングをコードで実装する必要があり複雑化します。