#devio2023 https://classmethod.connpass.com/event/286624/
Step Functionsの設計・開発・運用〜HTBのECサイトの場合〜2023/7/14北海道テレビ放送 三浦一樹
View Slide
三浦一樹/みうみうAWS SamuraiJAWS-UG札幌Media-JAWSJP_Stripes札幌AWS Community BuilderWithSecure Customer Ambassador札幌在住でいろんなIT系コミュニティに出没しています 自己紹介
趣味サウナフィンランドでサウナ入ってきました(仕事)
今日のお話AWS Step Functionsの使い方実際にこうやって考えてやってみた話すこと話さないことAWS Step Functionsの細かい話VPCの内側の話
もう懇親会したいよねA会場は懇親会準備中
その前にいきなり、脱線
クラメソ愛をちょっとだけ語らせてください余談なんですけど。。
感謝!クラメソさんのイベントでお話できるのめっちゃ光栄です!!
時は2019年ただの Developers読者だった私開発経験ゼロだけどやってみたくなってしまった
詳しくはこちらの資料をご覧くださいノリと勢いで開発チームの立ち上げ
クラメソさん大好きmade me an Engineer.
re:Invent 2022でMA-1着てウロウロ
20周年おめでとうございます!
東京行きたかったな〜DevelopersIO 2023GETだけじゃもったいない、POSTしてPUTする2日間たいがー氏のブログめっちゃよかった
決算すごい!おめでとうございます!
クラメソさん採用強化中らしいよ説明会あるよ!
今日のまとめ大好きです!
ご参加いただいてるみなさんにアンケート みんなの気持ちも教えて
アンケート その1大好きな人ー?
アンケート その2大好きな人ー?ブログ
アンケート その3大好きな人ー?AWS Step Functions
改めまして本編です 唐突なAWSを挟んで
担当サービス動画配信事業 EC事業ネットデジタル事業部
みんな初心者から動画配信事業 EC事業8人のチームエンジニア3名(+SES 2名)ネットデジタル事業部
ざっくりアーキテクチャOIDCOIDCOIDCS3 MediaConvert S3DynamoDBDynamoDBDynamoDBAppSyncLambdaAPI-GWStep FunctionsAPI-GWAmplifyAmplify担当者向けCMS倉庫システムBFFFrontend Backend
VPC LESSVPC LESSVPC LESSOS LESSOS LESSOS LESS
LambdaLESSLambdaLESSLambdaLESS
AWS Step Functions
AWS Step FunctionsとはInput JSON Output JSON分岐文字列操作Map / Parallel 200+AWS SDKFlowAWS LambdaAWS Step Functions
触ったことない人、ハンズオンあるよ
今日は自社ECのお話自社番組の関連グッズを販売
カート画面 情報入力 確認画面 購入完了ECの画面遷移
カート画面 情報入力 確認画面 購入完了在庫チェック在庫 Tableカート Tabletemp Tableカート Table決済処理在庫 Table注文 Table配送 Table送料計算今回の対象とする部分
カート画面 情報入力 確認画面 購入完了在庫チェック在庫 Tableカート Tabletemp Tableカート Table決済処理在庫 Table注文 Table配送 Table送料計算今回の対象とする部分👇ここ
Step Functionsを作る時の流れ設計・開発・運用HTBの場合AWS Step Functions
実際に考える順番は運用 設計 開発
実際に考える順番は運用こんな時お問合せきたらつらい返金・返品ってどういうフロー?経理的に気にしてる部分って?可観測性ってどこまでやる?ビジネス側の担当者と一緒にあーだこーだ運用がツラくない仕様を考える
設計実際に考える順番は運用ワイワイ ガヤガヤGather.town Miro
実際に考える順番は運用 設計 開発AWS ConsoleAWS Step FunctionsWorkflow StudioServerless Framework
実際に考える順番は運用 設計 開発カイゼン カイゼン
運用を考える運用想像フェーズ
設計の精度を上げるために運用を考える運用返金処理をすると決済手数料分、損をする返金処理は簡単決済について考える
利益を損なう処理は自動化しない運用返金処理をすると決済手数料分、損をする返金処理は簡単決済について考える結論返金処理は全て人が判断する!
Reject Day 2023でお話してたりします運用この辺りの悩みは、別資料参照で、、
設計に落とし込む設計
フロント部分の設計も合わせてワイワイ ガヤガヤ確認画面決済処理
在庫を確保し決済して伝票データ作成フロント部分の設計も合わせて入力はちゃんとフロントから渡せる?IDだけ渡すならいけますワイワイ ガヤガヤ
在庫を確保し決済して伝票データ作成フロント部分の設計も合わせて入力はちゃんとフロントから渡せる?このLambdaは置き換えられないか? DyanoDBの条件付き書き込みはSDK無理IDだけ渡すならいけますLambdaは分割すると遅くなるワイワイ ガヤガヤ
在庫を確保し決済して伝票データ作成フロント部分の設計も合わせて入力はちゃんとフロントから渡せる?このLambdaは置き換えられないか?ここは Choiceで良いよねDyanoDBの条件付き書き込みはSDK無理IDだけ渡すならいけます良いと思いまーすLambdaは分割すると遅くなるワイワイ ガヤガヤ
実際に作っていく開発AWS ConsoleAWS Step FunctionsWorkflow StudioServerless Framework
workflow studioってご存知?
まずはワークフロースタジオでAWS ConsoleAWS Step FunctionsWorkflow Studio
AWS ConsoleAWS Step FunctionsWorkflow Studio上手にできました!資料としてMIroに貼っておく次のフェーズに渡してIaC化
AWS ConsoleAWS Step FunctionsWorkflow Studio画面ポチポチがコードに化ける!GUIでの設定がYAMLで出てくる
画像はこんな感じAWS ConsoleAWS Step FunctionsWorkflow Studiopng
Serverless Frameworkに yamlを入れ込むAWS ConsoleAWS Step FunctionsWorkflow StudioServerless Framework環境変数とかX-RayとかIAM Policyを追加
CI/CDにしましょう(強い気持ち)ServerlessFrameworkGitHub AWS CodeBuild AWS Step Functionsただいま順次移行中。。
できるならCDKですよねーそうですよねーAWS ConsoleAWS Step FunctionsWorkflow StudioAWS CDKCDKを採用しない理由がなくなってしまったASL JSON
なんかアプデきちゃって
運用する運用実践編
運用する1実行毎に画面に出てくる
Step Functionsが失敗するとエラーになったら途中から再実行が不可能
途中からの再実行を実現するためにAWS Step FunctionsAWS Step FunctionsStep Functionsの中から別の Step Functionsを呼び出すことでその状態が保存されるJSON
エラーの通知までSNS失敗チャットに失敗した実行のURLをつけて送信だいたい再実行でうまくいく
まとめSDK直接さわれるのがすごく良いGUIで試行錯誤できるのがよい要件によってはノーコードツールでもGit管理してIaCにできるクエリ要らずで、エラー箇所が一目瞭然再試行も簡単(SQL書いたことなくて)みなさん、どんな感じで使ってますか?
懇親会でお話しましょう!ありがとうございました!
セッションアンケート満足度上位のセッションを後日ブログで公開予定!回答へのご協力をよろしくお願いします。https://forms.gle/gnLmdXpsXmek8KVTA