AWS Step Functions

# AWS Step Functions

https://d1.awsstatic.com/webinars/jp/pdf/services/20190522_AWS-Blackbelt_StepFunctions.pdf

## 概要

分散アプリケーション・マイクロサービス全体を「ステートマシン」と呼ばれるしくみでオートスケールできる。

定義したステートマシンはAWSコンソールから「ワークフロー」という形式で可視化できる。

  1. ステートマシンの作成
    1. ASL(Amazon States Language)をJSON形式で記述
  2. ステートマシンの呼び出し元
    1. CloudWatch Events
    2. API-Gateway
    3. マネージメントコンソールから手動実行
    4. AWS CLI
    5. 各種SDK
  3. ステートマシンから呼び出し可能なAWSサービス
    1. Lambda
    2. DynamoDB
    3. AWS Batch
    4. AWS ECS
    5. AWS SNS
    6. AWS SQS
    7. AWS Glue
    8. Amazon SageMaker
    9. Activity(自身で定義したサービス)
      1. サーバーやコンテナ等に実装したアプリケーションからポーリングすることで独自定義の処理を実行する仕組み

 

## ユースケース

  • 相互に依存するような複数の処理を組み合わせたい場合に最適

 

##  データの入出力

  • InputPath / Parameters
  • ResultPath
  • OutputPath

 

## Stateの記述

  • ASL JSON形式で記述
  • 複数のステートタイプが指定できる

 

## 実行状況の確認

  • ステートマシンの実行には任意の名称を付与できる
  • ステートごとに実行結果を確認可能
  • ステートマシンの実行ステータスが変化した際に、CloudWatch Events に対してイベントを発行することができる

 

## その他のサービスとの使い分け

  • SQS
    • サービス間のメッセージ管理の場合は、信頼性のより高いSQS
    • 処理の追跡や、サービス間のメッセージの受け渡しなど、アプリケーション開発に役立つ機能をマネージドに利用したい場合はStep Functions
  • Simple Workflow Service
    • 現状ではこれよりStep Functions を推奨(複雑化するため)

 

## 雑感

すでにあるパーツを組み合わせてワークフローを構築する際に利用するサービス。

これを有効に利用するにはUNIX哲学に基づいてパーツ化された部品が多くあると有効だと思うが、自然とそこにいたることは難しいのでパーツも含めて設計することになると思う。

シンプルなケースとしてはLambda Step Functions でつないでいくのが考えられる。

https://yoshidashingo.hatenablog.com/entry/serverlss-usecases-2017