[速報]Step Functionsで大量データの並列処理が可能に!Step Functions Distributed MapがGAされました!# reInvent
速報です! 本日の Werner Vogels キーノートで、Step Functionsで大規模な並列処理を可能にする、「Step Functions Distributed Map」が発表されました!
これまで
Step FunctionsにはもとよりMap並列処理を提供機能がありましたが、並列処理の同時実行数は最大40回という制限がありました。
Step Functions Distributed Mapで何ができるのか
Mapは上記の制限により、数千件以上の項目を並列でタイムリーに処理することは困難でしたが、「Step Functions Distributed Map」により大規模な並列ワークロードの処理が可能になりました!!
「Step Functions Distributed Map」では、最大1万回の並列ワークロードを起動することができます。並列で実行できる処理には、Step Functionsがサポートする全てのAPIを使用することができますが、AWSとしてはLambda関数を呼び出してプログラミング言語でS3に置かれた大量データを処理する使い方を想定しています。
本機能は、標準ワークフローでもExpressワークフローでも使用可能です。
注意点
最大1万回のというStep Functions Distributed Mapの同時実行数は他のAWSサービスがサポートする同時実行数を大きく上回っています。
AWSに限らず外部サービスに接続する際も、Distributed Mapの最大実行数を設定し、下流サービスの同時実行数を超えないようにする必要があります。
たとえば、並列でLambdaを使ってデータを処理する場合も、Lambdaのデフォルトの同時実行数は1000回なので、上限緩和申請をしたりクォータを意識して使う必要がありますね。
MapとStep Functions Distributed Mapの比較
既存のMapとの比較です。
Map | Destributed Map | |
---|---|---|
最大同時実行数 | 40回 | 10000回 |
インプット | 前のステートから渡されたJSONの配列のみ | S3 オブジェクトのリスト JSONの配列またはファイル CSVファイル S3 インベントリ |
ペイロード | 256KB | ファイルへの参照や、単一のレコードを受け取る SFn側では制限はないが、実際にはLambdaのストレージやメモリの上限がある |
実行履歴 | ステートマシン全体で25000イベント | 子プロセス毎にそれぞれ25000イベント expressモードでSFnを実行する場合は実行履歴に制限なし |
その他の並列処理サービスとの使い分け
AWS GlueやAmazon EMR、Amazon S3 Batch Operationsといった同じく並列処理を行うサービスが存在します。
AWS GlueやAmazon EMRはデータサイエンティストやデータエンジニアが、大量データを処理するユースケースで使用します。
Step Functionsはゼロスケールで、API Gatewayと連携してHTTPでリクエストを受け付けたり、LambdaやSQSなどと組み合わせイベントドリブンなアーキテクチャと相性が良く、アプリケーションにサーバレスなデータ処理を追加する目的で使用されてきました。そこで並列処理により大量データを高速に捌けるようになったという点が、今回のアップデートの嬉しい点です。
使用できるリージョン
- バージニア (us-east1)
- オハイオ (us-east-2)
- オレゴン (us-west-2)
- シンガポール (ap-southeast-1)
- シドニー (ap-southeast-2)
- 東京 (ap-northeast-1)
- カナダ (ca-central-1)
- フランクフルト (eu-central-1)
- アイルランド (eu-west-1)
- ストックホルム (eu-north-1)
まとめ
S3に格納されたファイルを元にデータを処理するユースケースは、アプリケーション開発をしていて良くあります。これまで、大量データを扱う場合Lambdaでは実行時間やメモリ、ストレージなどのクォータのためFargateを選んだり、SQSでバッファリングしてLambdaで捌く方法がありました。
しかし、Fargateはコンテナ周りの考慮事項が増え、SQSは全体のオーケストレーションが複雑になる点を課題に感じていました。 Step FunctionsとLambdaで大量データ処理ができるようになると、この点が解消されるため嬉しいアップデートでした!
これからアプリケーションで大量データ処理を構築する際は、是非選択肢の一つに入れてはいかがでしょうか。
以上。CX事業本部Delivery部のきんじょーでした。