Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Step Functions の設計・開発・運用 〜HTBのECサイトの場合〜
Search
Kazuki Miura
PRO
July 14, 2023
Technology
0
600
Step Functions の設計・開発・運用 〜HTBのECサイトの場合〜
#devio2023
https://classmethod.connpass.com/event/286624/
Kazuki Miura
PRO
July 14, 2023
Tweet
Share
More Decks by Kazuki Miura
See All by Kazuki Miura
ワイキキサークルホテルとその過ごし方
miu_crescent
PRO
0
64
私のawsの学び方、社外へ飛び出そう
miu_crescent
PRO
0
70
地方だからできた! 東北でのAWS事例を一挙紹介!
miu_crescent
PRO
1
95
地方企業がクラウドを活用するヒント
miu_crescent
PRO
1
140
AWSにおける生成AIでの動画生成について
miu_crescent
PRO
1
85
Storage Browser for Amazon S3
miu_crescent
PRO
1
490
Amazon Nova Reel でカメラの動きを指示してみた
miu_crescent
PRO
0
43
Lambdaと地方とコミュニティ
miu_crescent
PRO
2
460
re:Play ってこんなイベントです、オープニングとクロージングも #reinventhokkaido
miu_crescent
PRO
0
130
Other Decks in Technology
See All in Technology
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
110
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
140
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
1.1k
Oracle Cloud Infrastructure:2025年2月度サービス・アップデート
oracle4engineer
PRO
1
340
JEDAI Meetup! Databricks AI/BI概要
databricksjapan
0
280
深層学習と古典的画像アルゴリズムを組み合わせた類似画像検索内製化
shutotakahashi
1
260
管理者しか知らないOutlookの裏側のAIを覗く#AzureTravelers
hirotomotaguchi
2
510
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
100
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
1.6k
Developers Summit 2025 浅野卓也(13-B-7 LegalOn Technologies)
legalontechnologies
PRO
1
1.3k
OSS構成管理ツールCMDBuildを使ったAWSリソース管理の自動化
satorufunai
0
350
分解して理解する Aspire
nenonaninu
2
490
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
The Pragmatic Product Professional
lauravandoore
32
6.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Making Projects Easy
brettharned
116
6k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Side Projects
sachag
452
42k
Transcript
Step Functions の設計・開発・運用 〜HTB のEC サイトの場合〜 2023/7/14 北海道テレビ放送 三浦一樹
三浦一樹/みうみう AWS Samurai JAWS-UG 札幌 Media-JAWS JP_Stripes 札幌 AWS Community
Builder WithSecure Customer Ambassador 札幌在住でいろんなIT 系コミュニティに出没しています 自己紹介
趣味サウナ フィンランドでサウナ入ってきました(仕事)
今日のお話 AWS Step Functions の使い方 実際にこうやって考えてやってみた 話すこと 話さないこと AWS Step
Functions の細かい話 VPC の内側の話
もう懇親会したいよね A会場は懇親会準備中
その前に いきなり、脱線
クラメソ愛をちょっとだけ 語らせてください 余談なんですけど。。
感謝! クラメソさんのイベントで お話できるのめっちゃ光栄です!!
時は2019 年 ただの Developers 読者だった私 開発経験ゼロだけど やってみたくなってしまった
詳しくはこちらの資料をご覧ください ノリと勢いで開発チームの立ち上げ
クラメソさん大好き made me an Engineer.
re:Invent 2022 でMA-1 着てウロウロ
20 周年おめでとうございます!
東京行きたかったな〜 DevelopersIO 2023 GET だけじゃもったいない、POST してPUT する2 日間 たいがー氏の ブログ
めっちゃよかった
決算すごい!おめでとうございます!
クラメソさん採用強化中らしいよ 説明会あるよ!
今日のまとめ 大好きです!
ご参加いただいてるみなさんに アンケート みんなの気持ちも教えて
アンケート その1 大好きな人ー?
アンケート その2 大好きな人ー? ブログ
アンケート その3 大好きな人ー? AWS Step Functions
改めまして 本編です 唐突なAWS を挟んで
Step Functions の設計・開発・運用 〜HTB のEC サイトの場合〜 2023/7/14 北海道テレビ放送 三浦一樹
担当サービス 動画配信事業 EC事業 ネットデジタル事業部
みんな初心者から 動画配信事業 EC事業 8人のチーム エンジニア3名 (+SES 2名) ネットデジタル事業部
ざっくりアーキテクチャ OIDC OIDC OIDC S3 MediaConvert S3 DynamoDB DynamoDB DynamoDB
AppSync Lambda API-GW Step Functions API-GW Amplify Amplify 担当者向け CMS 倉庫 システム BFF Frontend Backend
None
VPC LESS VPC LESS VPC LESS OS LESS OS LESS
OS LESS
LambdaLESS LambdaLESS LambdaLESS
AWS Step Functions
AWS Step Functions とは Input JSON Output JSON 分岐 文字列操作
Map / Parallel 200+ AWS SDK Flow AWS Lambda AWS Step Functions
触ったことない人、ハンズオンあるよ
今日は自社EC のお話 自社番組の 関連グッズを販売
カート画面 情報入力 確認画面 購入完了 EC の画面遷移
カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table temp
Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table 送料計算 今回の対象とする部分
カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table temp
Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table 送料計算 今回の対象とする部分 👇ここ
Step Functions を作る時の流れ 設計・開発・運用 HTB の場合 AWS Step Functions
実際に考える順番は 運用 設計 開発
実際に考える順番は 運用 こんな時お問合せきたらつらい 返金・返品ってどういうフロー? 経理的に気にしてる部分って? 可観測性ってどこまでやる? ビジネス側の担当者と一緒にあーだこーだ 運用がツラくない仕様を考える
設計 実際に考える順番は 運用 ワイワイ ガヤガヤ Gather.town Miro
設計 実際に考える順番は 運用 ワイワイ ガヤガヤ Gather.town Miro
実際に考える順番は 運用 設計 開発 AWS Console AWS Step Functions Workflow
Studio Serverless Framework
実際に考える順番は 運用 設計 開発 カイゼン カイゼン
運用を考える 運用 想像フェーズ
設計の精度を上げるために運用を考える 運用 返金処理をすると 決済手数料分、損をする 返金処理は簡単 決済について考える
利益を損なう処理は自動化しない 運用 返金処理をすると 決済手数料分、損をする 返金処理は簡単 決済について考える 結論 返金処理は全て人が判断する!
Reject Day 2023 でお話してたりします 運用 この辺りの悩みは、別資料参照で、、
設計に落とし込む 設計
フロント部分の設計も合わせて ワイワイ ガヤガヤ 確認画面 決済処理
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? ID だけ渡すならいけます ワイワイ ガヤガヤ
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? このLambda は 置き換えられないか? DyanoDB
の条件付き 書き込みはSDK 無理 ID だけ渡すならいけます Lambda は分割すると 遅くなる ワイワイ ガヤガヤ
在庫を確保し 決済して 伝票データ作成 フロント部分の設計も合わせて 入力はちゃんと フロントから渡せる? このLambda は 置き換えられないか? ここは
Choice で良い よね DyanoDB の条件付き 書き込みはSDK 無理 ID だけ渡すならいけます 良いと思いまーす Lambda は分割すると 遅くなる ワイワイ ガヤガヤ
実際に作っていく 開発 AWS Console AWS Step Functions Workflow Studio Serverless
Framework
workflow studio ってご存知?
まずはワークフロースタジオで AWS Console AWS Step Functions Workflow Studio
AWS Console AWS Step Functions Workflow Studio 上手にできました! 資料として MIro
に貼っておく 次のフェーズに 渡してIaC 化
AWS Console AWS Step Functions Workflow Studio 画面ポチポチがコードに化ける! GUI での設定がYAML
で出てくる
画像はこんな感じ AWS Console AWS Step Functions Workflow Studio png
Serverless Framework に yaml を入れ込む AWS Console AWS Step Functions
Workflow Studio Serverless Framework 環境変数とか X-Ray とかIAM Policy を追加
CI/CD にしましょう( 強い気持ち) Serverless Framework GitHub AWS CodeBuild AWS Step
Functions ただいま順次移行中。。
できるならCDK ですよねーそうですよねー AWS Console AWS Step Functions Workflow Studio AWS
CDK CDK を採用しない 理由がなくなってしまった ASL JSON
なんかアプデきちゃって
運用する 運用 実践編
運用する 1 実行毎に画面に出てくる
Step Functions が失敗すると エラーになったら 途中から再実行 が不可能
途中からの再実行を実現するために AWS Step Functions AWS Step Functions Step Functions の中から
別の Step Functions を呼び出すことで その状態が保存される JSON
エラーの通知まで SNS 失敗 チャットに失敗した実行の URL をつけて送信 だいたい再実行でうまくいく
まとめ SDK 直接さわれるのがすごく良い GUI で試行錯誤できるのがよい 要件によってはノーコードツール でもGit 管理してIaC にできる クエリ要らずで、エラー箇所が一目瞭然
再試行も簡単 (SQL 書いたことなくて) みなさん、どんな感じで使ってますか?
懇親会で お話しましょう! ありがとうございました!
セッションアンケート 満足度上位のセッションを後日ブログで公開予定! 回答へのご協力をよろしくお願いします。 https://forms.gle/gnLmdXpsXmek8KVTA