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
気がついたらSagaパターンになっていた!? 少人数で運用するサーバレスバックエンド
Search
Kazuki Miura
PRO
June 24, 2023
Technology
1.7k
1
Share
気がついたらSagaパターンになっていた!? 少人数で運用するサーバレスバックエンド
#RejectDay2023
Kazuki Miura
PRO
June 24, 2023
More Decks by Kazuki Miura
See All by Kazuki Miura
地域のCCoEの拡大を目指す 企業間コミュニティ 「re:light local」について
miu_crescent
PRO
0
36
us-east-1 に障害が起きた時に、 ap-northeast-1 にどんな影響があるか 説明できるようになろう!
miu_crescent
PRO
13
4.7k
これだけはやっておいた方がよさそう?awsにおけるランサムウェア対策
miu_crescent
PRO
1
130
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
4
400
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
390
エンタメ方向のTを広げよう!Werner先生の クロージングキーノートを 深掘りするための小ネタ10
miu_crescent
PRO
1
190
Amazon Bedrockを活用した 報道向け文字起こしシステムの開発
miu_crescent
PRO
1
170
us-east-1 の障害が 起きると なぜ ソワソワするのか
miu_crescent
PRO
0
73
us-east-1 の障害が 起きると なぜ ソワソワするのか
miu_crescent
PRO
3
1.1k
Other Decks in Technology
See All in Technology
セキュリティ対策、何からはじめる? CloudNative環境の脅威モデリングと リスク評価実践入門 #cloudnativekaigi
varu3
5
820
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
6
520
AI時代に、 データアナリストがデータエンジニアに異動して
jackojacko_
0
780
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
600
[Scram Fest Niigata2026]Quality as Code〜AIにQAの思考を再現させる試み〜
masamiyajiri
1
320
AI時代の品質はテストプロセスの作り直し #scrumniigata
kyonmm
PRO
4
1.5k
Shiny New Tools Won't Fix Your Problem
trishagee
1
120
Every Conversation Counts
kawaguti
PRO
0
210
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
190
多角的な視点から見たAGI
terisuke
0
130
AI時代に越境し、 組織を変えるQAスキルの正体 / QA Skills for Transforming an Organization
mii3king
5
4.3k
AI駆動開発で生産性を追いかけたら、行き着いたのは品質とシフトレフトだった
littlehands
0
490
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
38
A Modern Web Designer's Workflow
chriscoyier
698
190k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
190
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Designing for humans not robots
tammielis
254
26k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
130
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
Balancing Empowerment & Direction
lara
6
1.1k
Side Projects
sachag
455
43k
Transcript
Reject Day 2023 気がついたらSagaパターンになっていた!? 少人数で運用するサーバレスバックエンド 2023.06.24 三浦一樹 #RejectDay2023
自己紹介 37歳 秋田→東京→札幌 サウナ大好き 三浦一樹 #RejectDay2023
自己紹介 #RejectDay2023 WithSecure Customer Ambassador を拝命しておりまして この間 フィンランドはヘルシンキに行ってきました
#AWSDevDay 楽しかった〜 #RejectDay2023
お仕事紹介 北海道を対象とした特定地上基幹放送事業者 #RejectDay2023
みなさんテレビ見てます? #RejectDay2023
みなさんテレビ見てます? #RejectDay2023
みなさんテレビ見てます? 今期は #だが情熱はある #RejectDay2023
お仕事紹介 BtoB事業 BtoC事業 テレビのCMや番組提供 番組関連のイベント事業 放送収入 番組の配信や 関連グッズの販売など ファンの方に直接お届けする 放送外収入
北海道を対象とした特定地上基幹放送事業者 01 02 #RejectDay2023
お仕事紹介 動画配信事業 EC事業 ネットデジタル事業部 #RejectDay2023
お仕事紹介 動画配信事業 EC事業 8人のチーム エンジニア3名 (+SES 2名) ネットデジタル事業部 #RejectDay2023
OIDC OIDC OIDC ざっくりアーキテクチャ #RejectDay2023 S3 MediaConvert S3 DynamoDB DynamoDB
DynamoDB AppSync Lambda API-GW Step Functions API-GW Amplify Amplify 担当者向け CMS 倉庫 システム BFF Frontend Backend
今日の主役 EC事業 #RejectDay2023 AWS Step Functions 10 +
AWS Step Functions みなさん使ってます? #RejectDay2023
概要 AWS Step Functions の簡単な説明 ECでどのようにつかっているか エラーと戦う ステートマシンの分割 Sagaパターンと出会う みんなのステートマシンがみたい!!
#RejectDay2023
AWS Step Functions 基本情報 #RejectDay2023
基本情報 #RejectDay2023 AWS Step Functions
基本情報 #RejectDay2023 AWS Step Functions ] 半角スペース ] 半角スペース
基本情報 #RejectDay2023 AWS Step Functions は、 デベロッパーが AWS のサービスを利用して分散型アプリケー ションを構築し、プロセスを自動化し、マイクロサービスのオ
ーケストレーション、データと機械学習のパイプラインを構築 できるようにするビジュアルワークフローサービスです。 AWS Step Functions ] 半角スペース ] 半角スペース
基本情報 #RejectDay2023 詳細な説明は今日はしないです。ごめんなさい ざっくりだけ AWS Step Functions ] 半角スペース ]
半角スペース
基本情報 #RejectDay2023 Input JSON Output JSON SDK
基本情報 #RejectDay2023 Workflow Studio 最高! ステートマシンを GUIで作れる!
https://aws.amazon.com/jp/builders-flash/202306/implement-step-functions-error-handling エラーハンドリング #RejectDay2023 山口さんのbuilders.flash ステート遷移を利用したエラーハンドリング ステート内の処理リトライを利用したエラーハンドリング Choice フローを利用した処理ハンドリング EventBridge を利用したエラーハンドリング
AWS Step Functions ECサイト #RejectDay2023
ECの注文まで #RejectDay2023 カート画面 情報入力 確認画面 購入完了
#RejectDay2023 カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table
ECの注文まで
#RejectDay2023 カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table
temp Table カート Table ECの注文まで 送料計算
#RejectDay2023 カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table カート Table
temp Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table ECの注文まで 送料計算
#RejectDay2023 カート画面 情報入力 確認画面 購入完了 在庫チェック 送料計算 在庫 Table カート
Table temp Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table 2s 5s ECの注文まで
2s 5s #RejectDay2023 カート画面 情報入力 確認画面 購入完了 在庫チェック 在庫 Table
カート Table temp Table カート Table 決済処理 在庫 Table 注文 Table 配送 Table ECの注文まで 送料計算
エラーと戦う #RejectDay2023
#RejectDay2023 在庫確保できた 決済成功
#RejectDay2023 在庫確保できた 決済成功 注文分の在庫をテーブルから引く 失敗したら戻せばいい
#RejectDay2023 在庫確保できた 決済失敗 決済成功
#RejectDay2023 在庫確保できた 決済失敗 決済成功 お金もらってる ここで失敗したら?
#RejectDay2023 在庫確保できた 決済失敗 決済成功 返金処理 失敗 こんな感じ?
決済失敗 返金処理 #RejectDay2023 在庫確保できた 決済成功 失敗 Stripe の手数料が発生 大量発生したら金が、、、 クレカの状態まで戻せない
ユーザはどう思う? この方法を採用すると
決済失敗 返金処理 #RejectDay2023 在庫確保できた 決済成功 失敗 Stripe の手数料が発生 大量発生したら金が、、、 クレカの状態まで戻せない
ユーザはどう思う? この方法を採用すると 戻さない方が良さそう
#RejectDay2023 在庫確保できた 決済失敗 決済成功 これ以降は 意地でも通す
#RejectDay2023 在庫確保できた 決済失敗 決済成功 カートの論理削除 マイページの情報作成・完了メールの送信
#RejectDay2023 在庫確保できた 決済失敗 決済成功 まぁ、なんとかなりそう。 最悪TTLで消えてくれる ここまでの状態を保持しつつ、再起する必要あり Step Functions の分割が必要
ステートマシンの分割 #RejectDay2023
Step Functions は途中からの再実行ができない 結果を待たず、 別のStep Functions を起動だけすると その状態を保存した形で処理を渡せる #RejectDay2023 在庫確保できた
決済失敗 決済成功 { "StateMachineArn": "arn:", "Input": { "tempOrderId.$": "$.tempOrderId", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } } すぐ通したい
#RejectDay2023 在庫確保できた 決済失敗 決済成功 失敗 SNS 人が対応 SNS コンソールから Step
Functions 再起 失敗
#RejectDay2023 コンソールからボタン押したら 途中から再開できる
#RejectDay2023 その他の分岐を追加して、、、
#RejectDay2023 ECの注文処理 余裕があればデモ
#RejectDay2023 とりあえず大丈夫そうだけど 答え合わせがしたい
Saga パターンとは? #RejectDay2023
#RejectDay2023 https://speakerdeck.com/fatsushi/fen-san-sisutemuniokerusagapatanfalseaws-step-functions-niyorushi-zhuang-number-awsdevday AWS 福井さんの資料に出会う
#RejectDay2023 https://speakerdeck.com/fatsushi/fen-san-sisutemuniokerusagapatanfalseaws-step-functions-niyorushi-zhuang-number-awsdevday AWS 福井さんの資料に出会う
#RejectDay2023 https://speakerdeck.com/fatsushi/fen-san-sisutemuniokerusagapatanfalseaws-step-functions-niyorushi-zhuang-number-awsdevday オーケストレーションならStep Functions
#RejectDay2023 https://github.com/aws-samples/aws-step-functions-long-lived-transactions
#RejectDay2023 Saga パターンができてた!?
#RejectDay2023 在庫確保できた 決済失敗 決済成功 失敗 SNS 人が対応 SNS コンソールから Step
Functions 再起 失敗 補償トランザクション……?
#RejectDay2023 Saga パターンができてた!? みたいなもの?
#RejectDay2023 その他Sagaパターン資料 #AWSDevDay 2023 野村さんの資料 12章が丸っと トランザクショナルサーガ
”決して最善のアーキテクチャを狙ってはいけない。 むしろ 少なくとも最悪ではないトレードオフの組み合わせを狙おう” ソフトウェアアーキテクチャ・ハードパーツ / P.2 #RejectDay2023
#RejectDay2023 1年くらい無事だから 1年くらい運用しておりますが、 そもそも、かなり限定的な条件なので 手動を動かしたのは10回くらい
まとめ #RejectDay2023
まとめ AWS Step Functions 便利! エラーハンドリングは悩ましい 再起を考えると分割すると対応しやすい Sagaは先にちゃんと勉強しておくべきだった 1年以上とりあえず安定運用 理想との差分で大事なもの抜けてないか心配
みんなのステートマシンを見てみたい! いろいろ議論したい! #RejectDay2023
Thank You! #RejectDay2023 来年はCfP通るように頑張っていきます