Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Step Functions の設計・開発・運用 〜HTB のEC サイトの場合〜 2023/7/14 北海道テレビ放送 三浦一樹
Slide 2
Slide 2 text
三浦一樹/みうみう AWS Samurai JAWS-UG 札幌 Media-JAWS JP_Stripes 札幌 AWS Community Builder WithSecure Customer Ambassador 札幌在住でいろんなIT 系コミュニティに出没しています 自己紹介
Slide 3
Slide 3 text
趣味サウナ フィンランドでサウナ入ってきました(仕事)
Slide 4
Slide 4 text
今日のお話 AWS Step Functions の使い方 実際にこうやって考えてやってみた 話すこと 話さないこと AWS Step Functions の細かい話 VPC の内側の話
Slide 5
Slide 5 text
もう懇親会したいよね A会場は懇親会準備中
Slide 6
Slide 6 text
その前に いきなり、脱線
Slide 7
Slide 7 text
クラメソ愛をちょっとだけ 語らせてください 余談なんですけど。。
Slide 8
Slide 8 text
感謝! クラメソさんのイベントで お話できるのめっちゃ光栄です!!
Slide 9
Slide 9 text
時は2019 年 ただの Developers 読者だった私 開発経験ゼロだけど やってみたくなってしまった
Slide 10
Slide 10 text
詳しくはこちらの資料をご覧ください ノリと勢いで開発チームの立ち上げ
Slide 11
Slide 11 text
クラメソさん大好き made me an Engineer.
Slide 12
Slide 12 text
re:Invent 2022 でMA-1 着てウロウロ
Slide 13
Slide 13 text
20 周年おめでとうございます!
Slide 14
Slide 14 text
東京行きたかったな〜 DevelopersIO 2023 GET だけじゃもったいない、POST してPUT する2 日間 たいがー氏の ブログ めっちゃよかった
Slide 15
Slide 15 text
決算すごい!おめでとうございます!
Slide 16
Slide 16 text
クラメソさん採用強化中らしいよ 説明会あるよ!
Slide 17
Slide 17 text
今日のまとめ 大好きです!
Slide 18
Slide 18 text
ご参加いただいてるみなさんに アンケート みんなの気持ちも教えて
Slide 19
Slide 19 text
アンケート その1 大好きな人ー?
Slide 20
Slide 20 text
アンケート その2 大好きな人ー? ブログ
Slide 21
Slide 21 text
アンケート その3 大好きな人ー? AWS Step Functions
Slide 22
Slide 22 text
改めまして 本編です 唐突なAWS を挟んで
Slide 23
Slide 23 text
Step Functions の設計・開発・運用 〜HTB のEC サイトの場合〜 2023/7/14 北海道テレビ放送 三浦一樹
Slide 24
Slide 24 text
担当サービス 動画配信事業 EC事業 ネットデジタル事業部
Slide 25
Slide 25 text
みんな初心者から 動画配信事業 EC事業 8人のチーム エンジニア3名 (+SES 2名) ネットデジタル事業部
Slide 26
Slide 26 text
ざっくりアーキテクチャ OIDC OIDC OIDC S3 MediaConvert S3 DynamoDB DynamoDB DynamoDB AppSync Lambda API-GW Step Functions API-GW Amplify Amplify 担当者向け CMS 倉庫 システム BFF Frontend Backend
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
VPC LESS VPC LESS VPC LESS OS LESS OS LESS OS LESS
Slide 29
Slide 29 text
LambdaLESS LambdaLESS LambdaLESS
Slide 30
Slide 30 text
AWS Step Functions
Slide 31
Slide 31 text
AWS Step Functions とは Input JSON Output JSON 分岐 文字列操作 Map / Parallel 200+ AWS SDK Flow AWS Lambda AWS Step Functions
Slide 32
Slide 32 text
触ったことない人、ハンズオンあるよ
Slide 33
Slide 33 text
今日は自社EC のお話 自社番組の 関連グッズを販売
Slide 34
Slide 34 text
カート画面 情報入力 確認画面 購入完了 EC の画面遷移
Slide 35
Slide 35 text
カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table temp Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table 送料計算 今回の対象とする部分
Slide 36
Slide 36 text
カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table temp Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table 送料計算 今回の対象とする部分 👇ここ
Slide 37
Slide 37 text
Step Functions を作る時の流れ 設計・開発・運用 HTB の場合 AWS Step Functions
Slide 38
Slide 38 text
実際に考える順番は 運用 設計 開発
Slide 39
Slide 39 text
実際に考える順番は 運用 こんな時お問合せきたらつらい 返金・返品ってどういうフロー? 経理的に気にしてる部分って? 可観測性ってどこまでやる? ビジネス側の担当者と一緒にあーだこーだ 運用がツラくない仕様を考える
Slide 40
Slide 40 text
設計 実際に考える順番は 運用 ワイワイ ガヤガヤ Gather.town Miro
Slide 41
Slide 41 text
設計 実際に考える順番は 運用 ワイワイ ガヤガヤ Gather.town Miro
Slide 42
Slide 42 text
実際に考える順番は 運用 設計 開発 AWS Console AWS Step Functions Workflow Studio Serverless Framework
Slide 43
Slide 43 text
実際に考える順番は 運用 設計 開発 カイゼン カイゼン
Slide 44
Slide 44 text
運用を考える 運用 想像フェーズ
Slide 45
Slide 45 text
設計の精度を上げるために運用を考える 運用 返金処理をすると 決済手数料分、損をする 返金処理は簡単 決済について考える
Slide 46
Slide 46 text
利益を損なう処理は自動化しない 運用 返金処理をすると 決済手数料分、損をする 返金処理は簡単 決済について考える 結論 返金処理は全て人が判断する!
Slide 47
Slide 47 text
Reject Day 2023 でお話してたりします 運用 この辺りの悩みは、別資料参照で、、
Slide 48
Slide 48 text
設計に落とし込む 設計
Slide 49
Slide 49 text
フロント部分の設計も合わせて ワイワイ ガヤガヤ 確認画面 決済処理
Slide 50
Slide 50 text
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? ID だけ渡すならいけます ワイワイ ガヤガヤ
Slide 51
Slide 51 text
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? このLambda は 置き換えられないか? DyanoDB の条件付き 書き込みはSDK 無理 ID だけ渡すならいけます Lambda は分割すると 遅くなる ワイワイ ガヤガヤ
Slide 52
Slide 52 text
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? このLambda は 置き換えられないか? ここは Choice で良い よね DyanoDB の条件付き 書き込みはSDK 無理 ID だけ渡すならいけます 良いと思いまーす Lambda は分割すると 遅くなる ワイワイ ガヤガヤ
Slide 53
Slide 53 text
実際に作っていく 開発 AWS Console AWS Step Functions Workflow Studio Serverless Framework
Slide 54
Slide 54 text
workflow studio ってご存知?
Slide 55
Slide 55 text
まずはワークフロースタジオで AWS Console AWS Step Functions Workflow Studio
Slide 56
Slide 56 text
AWS Console AWS Step Functions Workflow Studio 上手にできました! 資料として MIro に貼っておく 次のフェーズに 渡してIaC 化
Slide 57
Slide 57 text
AWS Console AWS Step Functions Workflow Studio 画面ポチポチがコードに化ける! GUI での設定がYAML で出てくる
Slide 58
Slide 58 text
画像はこんな感じ AWS Console AWS Step Functions Workflow Studio png
Slide 59
Slide 59 text
Serverless Framework に yaml を入れ込む AWS Console AWS Step Functions Workflow Studio Serverless Framework 環境変数とか X-Ray とかIAM Policy を追加
Slide 60
Slide 60 text
CI/CD にしましょう( 強い気持ち) Serverless Framework GitHub AWS CodeBuild AWS Step Functions ただいま順次移行中。。
Slide 61
Slide 61 text
できるならCDK ですよねーそうですよねー AWS Console AWS Step Functions Workflow Studio AWS CDK CDK を採用しない 理由がなくなってしまった ASL JSON
Slide 62
Slide 62 text
なんかアプデきちゃって
Slide 63
Slide 63 text
運用する 運用 実践編
Slide 64
Slide 64 text
運用する 1 実行毎に画面に出てくる
Slide 65
Slide 65 text
Step Functions が失敗すると エラーになったら 途中から再実行 が不可能
Slide 66
Slide 66 text
途中からの再実行を実現するために AWS Step Functions AWS Step Functions Step Functions の中から 別の Step Functions を呼び出すことで その状態が保存される JSON
Slide 67
Slide 67 text
エラーの通知まで SNS 失敗 チャットに失敗した実行の URL をつけて送信 だいたい再実行でうまくいく
Slide 68
Slide 68 text
まとめ SDK 直接さわれるのがすごく良い GUI で試行錯誤できるのがよい 要件によってはノーコードツール でもGit 管理してIaC にできる クエリ要らずで、エラー箇所が一目瞭然 再試行も簡単 (SQL 書いたことなくて) みなさん、どんな感じで使ってますか?
Slide 69
Slide 69 text
懇親会で お話しましょう! ありがとうございました!
Slide 70
Slide 70 text
セッションアンケート 満足度上位のセッションを後日ブログで公開予定! 回答へのご協力をよろしくお願いします。 https://forms.gle/gnLmdXpsXmek8KVTA