Slide 1

Slide 1 text

マネージド・サービスと サーバレスでバッチ処理を実装した話 NCDC Dev Meetup AWSなんでもLT会#5 2022年5月13日 十川 亮平

Slide 2

Slide 2 text

自己紹介 NCDC株式会社 十川 亮平 (そごう りょうへい) IoTプラットフォーム製品の プロダクトマネージャー。 AWS関連のアーキテクチャの 設計や、バックエンドを 担当しています。

Slide 3

Slide 3 text

やりたかったこと 別システム FTPでファイル受 信 重たい データ変換処理 変換後のデータを WebアプリのDBに 入れる EC サイトで別システムから 各種マスタファイルが来るので、変換 処理を行い、 Web アプリケーションから 使用する DB に投入する

Slide 4

Slide 4 text

極力インフラ運用やりたくない! サーバー障害とかAWSさんに任せたい スケール勝手にして欲しい

Slide 5

Slide 5 text

こういう構成で実現しました 別システム AWS Transfer family for SFTP S3 受信ファイル 置き場 EventBridge ファイルが 置かれたことを 契機に起動 StepFunctions 処理フロー 制御 1. 前処理 2.データ変換 変換用Aurora Serverless DynamoDB Webアプリケーショ ンから利用 3.データ登録

Slide 6

Slide 6 text

他システムからのファイルの受信 ファイルはS3に送って欲しいけ ど他システムはSFTP、 FTPS、FTPしか対応できな いって言ってる・・・

Slide 7

Slide 7 text

そんなときはAWS Transfer Family 別システム AWS Transfer family for SFTP S3 受信ファイル 置き場 FTPサーバー 管理しなくて良 くて楽〜 SFTP, FTPS, FTPでファイルを受け付け、 AWS S3、EFSにファイルを配置してくれるサービス

Slide 8

Slide 8 text

処理フロー制御と実行基盤:StepFunctions + Lambda バッチ処理の実行基盤の候補は沢山ありますが、 StepFunctions + Lambdaで行いました。 S3 受信ファイル 置き場 EventBridge ファイルが 置かれたことを 契機に起動 StepFunctions 処理フロー 制御 1. 前処理 2. データ変換 3. データ登録

Slide 9

Slide 9 text

StepFunctions + Lambdaを選択した理由① ● このバッチ処理はファイルが来たら動くので、常にインス タンスが存在する必要はない S3 受信ファイル 置き場 EventBridge ファイルが 置かれたことを 契機に起動 StepFunctions 処理フロー 制御 1. 前処理 2. データ変換 3. データ登録 ● マネージド・サービスと サーバレスの組み合わ せでメンテナンスがかな り楽 ● 変換処理に使用する データベースもAurora Serverlessにし、コスト を抑えることができた

Slide 10

Slide 10 text

StepFunctions + Lambdaを選択した理由② ● 複数の処理を順番に実施したり、 一部は並列処理するのでフロー制御はやりたかった ● StepFunctionsの実行結果とLambdaのログをCloudWatchにて監視 StepFunctions の 処理失敗を CloudWatch から監視 SNS topic 経由でメール通知 CloudWatch

Slide 11

Slide 11 text

StepFunctions + Lambdaを選択した理由③ 実行基盤はLambdaを利用しました ● Lambdaの実行時間の制約である15分以内に1ステップ分の処理が 完了できる見込みがあったので、コンテナでやる必要がなかった ● 変換処理のロジックはスクラッチで書きたかった (データ変換用のツール、フレームワークを使うほどでもなかった)

Slide 12

Slide 12 text

EventBridge まとめ AWSの各種マネージドサービス、サーバレスなサービスを組み合わせた バッチ処理は開発時も、運用時も非常に楽ができました。 アプリケーションの実行基盤はAWS Lambdaを使いましたが、 ここは用途に合わせていんな組み合わせがありそうだなと思います。 Transfer family S3 StepFunctions Lambda Aurora Serverless

Slide 13

Slide 13 text

ありがとうございました