■
AWSの学習メモ
- AWSのblackbaltの動画を15分以上毎日見る
- 動画を簡単にまとめる
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に対してポーリング