AWSの学習メモ

AWS Step Functions


必要になった背景:
    モダンアプリのベストプラクティス「Twelve-Factor App」
        - プロセスはステートレスかつシェアードナッシング
        - データはステートフルなバックエンドサービスに格納

    現代のアプリ -> 複数のプロセスが密接に関連
        - 複数のプロセスを同期実行させたい!
        - 複数のプロセスを並行実行させたい!
        - 条件分岐させたい!
        - 一定条件でリトライさせたい!
        - 例外やエラーを補足したい!
        - 状態を次のプロセスに連携させたい!

Step Functions
    - 分散アプリ・マイクロサービスの全体
    - ステートマシンでオーケストレーション可能
    - ワークフローが見やすい
        - ASL(Amazon States Language)と呼ばれるJsonで記述
        - ASLはrubyのチェックツールがある(cmd = gem install statelint)
    - 各ステップがログに出力

ステートマシン例:自販機
    1. 入金待ち
    2. ジュース選択
    3. ジュース出し/釣り銭だし

    -> こんな感じでプロセスを分離して連携している

ステートマシンから呼び出し可能なAWSサービス
    - Lambda:関数実行
    - DynamoDB:アイテム取得など
    - ECS/Fargate:ジョブ実行など
    - SNS:トピックへのメッセージ送信など
    - SQS:キューへのメッセージ送信など
    - Glue:ジョブ実行
    - SageMaker:トレーニングジョブ実行など
        ... etc
    - Activity
        サーバやコンテナに実装したアプリケーションからポーリングすることで、
        独自定義の処理を実行する仕組み
            - ECSやEC2からstep functionに対してポーリング