omuronの備忘録

個人的な備忘録

「AWS Expert Online JAWS-UG: Step Functionsの本気」 #awsxon 受講メモ

AWS Expert Online JAWS-UG: Step Functionsの本気

jawsug-arch.connpass.com

見せてやるよ、Step Functionsの本気ってやつをな

アマゾンウェブサービスジャパン toriはらさん、下川さん

www.slideshare.net

Step Functions のかゆいところと改善策

  • JSON(ASL) でワークフロー書くのが大変?
    • arn もドロップダウンで出ない
    • Lambda が無いと先に枠(フロー)だけ書くことができない
  • Workflow Studio でビジュアルツールでワークフローが書けるようになった
    • ASL を抜き出せる
    • CFn に ASL を埋め込む元にできる
  • Python なれてたら Step Functions Data Science SDK で書ける
    • Jpyter Notebook で作れる
  • VSCode なら YAML で書けるようになった
  • CDK にも対応

Step Functions から呼ばれる Lambda のリポジトリ分け

  • 答えはない
  • Lambda の作成チームが別れているなら分ける
  • 一連の流れとして Start から End までマイクロサービスとして成立しているなら一つ
  • 切り分けのキーワード
    • ドメイン駆動設計
    • 境界づけられたコンテキスト
    • コンテキストマップ

Step Functions から呼ばれる Lambda 関数のデバッグは?

  • 昔なら CloudWatch Logs
  • Step Functions も Lambda も X-Ray に対応しているので、X-Ray とか
  • Local で先にテストしておく
    • Lambda handler を直接テストすべきでない
    • main.py も準備して事前確認できるようにする
    • ピュアなビジネスロジック部分をテスト
      • DynamoDB とかの Repository は、インターフェースにして切り離す
  • Lambda からエラーハンドリングを取り除くために Step Functions を使う
    • エラーやリトライは Step Functions で処理する

Step Functions の入出力処理の JSON path syntax はどうやって慣れる?

SF で復元力のある Fargate Task 実行って?

オンプレミス/外部 SaaS などのジョブとどうやって連携する?

  • Callback ワークフロー
    • Task token を払い出して SQS に積んで処理する
    • コンシューマーは SQS から Task token 入のメッセージを処理
    • SF の API に Task token をパラメータとして渡して戻す

並列ジョブはどうする?

  • SF に Map State があるので、配列の数だけジョブを呼び出せる
  • 複数ジョブを同時に実行するパラレルもある

SF を API に使えるか?

  • 軽量 ETL オーケストレーションとして使う
    • APIG から呼び出して、同期的にワークフローをコールする
      • APIG の29秒制限内で処理が終わるのであればできる
  • BFF として使う
    • APIG から BFF の処理を SF として作って呼び出す
  • 非同期パターンとして使う
    • WebSockets

デザインパターンの視点

コードフリーな世界観に浸りたい

  • SF が AWS SDK との統合をサポート
    • API 叩いたら AI サービスを実現など
  • EventBridge のターゲットに API Destinations を指定可能に
    • 任意のエンドポイントに HTTP リクエストを遅れる

まとめ

  • SF はサーバーレスのワークフロー
    • 利用した分課金
  • マイクロサービスをオーケストレーションしたいときに可視化されたワークフローを体験可能

所感

Step Functions は、サンプル実装しかしてない状況です。
API のバックエンドとしても使えそうなので、その方向で試したりはしてたのですが、使い方として間違ってなさそうで良かった。
全然なれてないので、もっと触らないと使いこなせなさそうです。

時間が過ぎてたけど、懇親会に突入したらちゃんとやってました。
@tcsh さん、@98lerr さんありがとうございましたー!