re:Growth 2016でAWS Step Functionsについて発表してきた #cmdevio

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

本日弊社主催で開催しているre:Growth 2016 TOKYOでStep Functionsについて発表してきたので報告します。

[slideshare id=69867280&doc=20161206regrowth-tokyo-maroon1st-161206102134]

レポート

Step Functionsとは?

LambdaやEC2処理、ECS処理をいい感じにステートマシンとしてワークフローをビジュアライズして実行できる機能となります。

何ができるの?

ワークフローをステートマシンして定義してステートマシン図として表示できます。また、Lambdaを疎結合に連携させることができます。
バッチジョブのフロー定義もできますが、AWS Batchとの住み分けを考える必要があります。AWS Batchが使用できるようになったら検証が必要です。

Amazon States Language

Step Functionsのワークフローを定義するための言語です。JSONで以下のような内容を記述します。

  • States
    • Task : 処理を実行する
    • Wait : 指定した秒数を待ったり、指定した時刻まで待ったりできる
    • Pass : 何もせずに入力をそのままスルー
    • Succeed : 正常終了する
    • Fail : 異常終了する
    • Choice : 条件によって後続処理を選択できる
    • Parallel : 処理を並列実行できる
  • Paths
    • 入出力のJSONデータを記述する
  • Errors
    • 実行時エラーが事前定義されている
    • リトライを記述可能。エクスポネンシャルバックオフを指定可能!
    • エラーハンドリングもできる
  • Filters
    • 入力、出力、実行結果のデータをフィルタリングする

ちょっとしたデモ

ステートマシンの可視化やエクスポネンシャルバックオフ(リトライ間隔を徐々に長くなる)なリトライなどをデモさせて頂きました。

まとめ

  • Lambdaなどを繋げて大きな処理をワークフローとして実行するサービス
  • 状態遷移図はStep Functionsの設計になります
  • 結局はAmazon States Languageを覚えましょう

さいごに

AWS Step Functionsは今回のre:Invent 2016で発表された新サービス中で一番自分にササリました。Lambdaで大きな処理を行うのはユースケースが合っていないと考えていましたが、Step Functionsによりメンテナンス性を低下させずに大きな処理を記述できるようになりました。
今回のre:InventではLambdaに関する新サービスやアップデートが数多くありました。今まで以上にLambdaの重要性を感じたためもっとLambdaを勉強して行こうと思います。