こんにちは。
現在重量級のバッチ処理をPythonで開発しておりますが、そこで採用しているAWS Batchの話をしてみたいと思います。
AWS Batchとは
簡単に言ってしまえば、スケーラブルかつサーバレスなバッチ実行環境としてありがちな「SQS + ECS + EC2」の構成をラップしてくれるサービスです。
具体的には、下記の特徴を持っています。
- ECSの設定を行ってくれるため、ECS方面の知識が不要
- 処理性能の増減は、CPUコア数を設定するだけなため非常に楽チン
- Dockerコンテナ上で動作するため、開発言語、フレームワークを自由に選定することが可能
- キューイングの仕組みが実装されているため、キュー回りを独自に開発する必要がない
- 勝手にログファイルがCloudWatchLogsに転送される
- ある程度(ある程度です)のジョブの実行順や、並列実行の制御が可能