inflearn logo
知識共有
inflearn logo

同期から非同期へ — コマースAPIをメッセージキュー・Outbox・ワークフローエンジンへ移行する実践的手法

セール開始時の負荷で破綻する同期型のクーポン発行・商品登録APIを、キュー・アウトボックス・冪等コンシューマー・DLQ・Temporalに置き換え、同じ負荷における変更前後の数値(遅延・失敗率・DBコミット)を、自分のPC上のDockerで直接再現します。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

PostgreSQL
PostgreSQL
Kafka
Kafka
MSA
MSA
temporal
temporal
PostgreSQL
PostgreSQL
Kafka
Kafka
MSA
MSA
temporal
temporal

この講座で身につくこと

  • 同期APIを到着率固定の負荷で測定し、レイテンシ・失敗率・DBコミット数が悪化する境界点を見つけ、原因がCPUなのか、ロック・コミット待ちなのかを切り分けます。

  • 発行リクエストをキューに入れて202を返す受付APIと、バッチコンシューマーに変更し、同じ負荷条件で変更前後の数値を表にまとめます。

  • 二重書き込みの欠落・リレーの重複・順序逆転・毒メッセージを意図的に発生させ、Outbox・冪等コンシューマー・パーティションキー・DLQで防ぎます。

  • 数秒かかる登録APIを「受付→ステータス照会」の契約に変更し、予約送信・変更発行の方式を測定値に基づいてADRで決定します。

  • 関数+キューの組み合わせでひっそりと消えてしまう失敗をTemporalワークフローに移し、リトライと失敗の検知を一元管理します。

  • フィーチャーフラグで同期・非同期をデプロイなしで切り替え、キューに残ったリクエストを失わないロールバック手順を練習します。

セール開始時の負荷で破綻する同期クーポン発行・商品登録APIを、キュー・アウトボックス・冪等コンシューマー・DLQ・ワークフローエンジンに置き換え、同じ負荷でDBコミット・遅延・失敗率がどう変わるかを、導入前後の数値で直接証明します。

最終結果(第0回デモ実測値、毎秒800件の同一負荷):同期発行の失敗率77.29%・応答p50 9.82秒・DBコミット7,944件 → 非同期に切り替えた後は失敗率0%・p50 10.62ms・DBコミット820件。最後のキャップストーン(第30回)では、受講生がクーポン発行と商品登録を自ら切り替え、これらの前後の数値を算出します。

セール開始時の負荷で破綻する同期APIを、メッセージキュー・Transactional Outbox・冪等コンシューマー・DLQ・Temporalで置き換え、同じ負荷での導入前後の数値(レイテンシ・失敗率・DBコミット)を自分のPCのDocker環境で実際に再現します。

メッセージキューの講義の多くは、ツールの使い方で終わります。この講義では、すでに稼働している同期 API を非同期に「移行すること」そのものを扱います。移行前後の測定、受付の契約、データの消失・重複・順序の乱れ・毒メッセージといった失敗を意図的に起こして防ぐ方法、意思決定の記録、フィーチャーフラグによる切り替えとロールバックまで。開発者10〜20人規模へと成長中の架空のスポーツ・アウトドア専門モール「ループマーケット」の API・PostgreSQL・Redpanda(Kafka互換)・Temporal・k6・Prometheus・Grafana を Docker で起動し、画面に表示される数字はすべて実際の実行結果です。

この講義を終えると

  • 同期APIに到着率固定の負荷をかけて計測し、レイテンシ・失敗率・DBコミット数が頭打ちになる地点を見つけ、原因がCPUなのか、ロックやコミット待ちなのかを見分けます。

  • 発行リクエストをキューに入れて202で応答する受付APIとバッチコンシューマーに置き換え、同じ負荷で変更前後の数値を表にまとめます。

  • 二重書き込みの欠落・リレーの重複・順序逆転・ポイズンメッセージを意図的に発生させ、アウトボックス・冪等コンシューマー・パーティションキー・DLQで防ぎます。

  • 数秒かかる登録APIを受付→ステータス照会の契約に変更し、予約送信・変更発行の方式を測定値に基づいてADRで決定します。

  • 関数+キューの組み合わせでひっそり消えてしまう失敗をTemporalワークフローに移し、再試行・失敗検知を一か所で確認します。

  • フィーチャーフラグで同期・非同期をデプロイなしで切り替え、キューに残ったリクエストを失わないロールバック手順を練習します。

こんな方におすすめです

  • セールやイベント時のDB書き込み集中による障害を経験したECバックエンド開発者

  • Kafkaは使ったことがあるものの、既存の同期APIを安全に移行する方法が分からず悩んでいる方

  • Outbox・冪等性・DLQを言葉で知っているだけでなく、失敗を実際に再現してみたい方

カリキュラム(8セクション・32講・約195分)

  • セクション0. オリエンテーション:完成形を先に見る — 完成形のデモ:同じ負荷、異なる数値

  • セクション1. 同期構造が崩れる瞬間 — 実習環境の起動、ループマーケットの同期クーポン発行APIを読む、k6でオープン負荷を生成する、同期発行が破綻する様子、ボトルネック診断:1行ロックとコミット数

  • セクション2. キューでバッファリングする — ブローカーの基礎:トピック・パーティション・コンシューマーグループ、受付APIに変更する:202応答、バッチコンシューマーでDB書き込みをまとめる、同じ負荷での前後比較、コンシューマーの遅延を指標として見る

  • セクション3. メッセージを失わず、重複させない — 二重書き込み問題をあえて発生させる、トランザクショナルアウトボックス、リレーが停止したら:重複発行、冪等キーと冪等コンシューマー、順序保証とパーティションキー:ポイント付与、再試行とDLQ、重複・消失シナリオのチェックリスト

  • セクション4. 時間のかかるAPIを非同期に — 数秒かかる商品登録APIの測定、受付とステータス照会の契約、代替案の比較:同期を維持・スレッド・キュー・ワークフロー、別のドメインへの適用:配送指示

  • セクション5. 設計上の決定を文書化する — 特定時刻に送信:個別予約とバッチのADR、変更の発行:全体スナップショットと行単位のデルタ、コンシューマーの対象範囲のみをロードする

  • セクション 6. 永続性のある実行:ワークフローエンジン — 関数とキューを直接組み合わせる際の限界、Temporalでの商品登録ワークフロー、ワークフローレベルでの失敗検知

  • セクション7. 段階的な移行とキャップストーン — フィーチャーフラグによる同期・非同期の切り替え、ロールバック演習:元に戻したときに残るもの、キャップストーン:ループマーケットの移行を完成させる、まとめ:移行チェックリスト

実習環境

実習資料(ZIP):compose.yml ひとつで9つのサービスを起動し、各講義で scenarios/sNN.sh をそのまま実行すると、講義画面と同じ現象を再現できます。チェック用スクリプト・k6シナリオ・切り替えチェックリスト・ADR・受付契約書式を含みます。

前提知識

  • REST APIを作った経験(言語不問、実習コードはPython)

  • RDBとトランザクションの基礎

  • Dockerでコンテナを起動した経験(DockerにCPU 4個・メモリ8GB以上を割り当てることを推奨)

この講義で扱わないこと

  • Kafkaクラスターのインストール・運用

  • Kubernetesのデプロイ

  • 特定のクラウドマネージドサービスの使い方

ご案内

動画のナレーションはAI合成音声です。画面上のコマンド・指標・結果は、実習環境で実際に実行した際の出力です。すべてのデータは教育用の仮想データであり、数値は実行環境によって異なる場合があります。

次のような方に
おすすめです

受講対象

  • セール・イベント時のDB書き込み集中による障害を経験したコマース系バックエンドエンジニア

  • Kafkaは使ったことがあるものの、既存の同期APIを安全に移行する方法が分からず困っている方

  • アウトボックス・冪等性・DLQを知識として知っているだけでなく、障害を実際に再現してみたい方

前提知識

  • REST APIを作成した経験(言語不問、実習コードはPython)

  • RDBとトランザクションの基礎

  • Dockerでコンテナを起動した経験(DockerにCPU 4コア・メモリ8GB以上の割り当てを推奨)

こんにちは
dorian05202988です。

経歴認証済み

20年以上にわたりデータベースとIT分野でキャリアを積んできたデータ職人です。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームに携わり、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。ゲーム・金融・ITサービス分野での経験をもとに、データベースとクラウドアーキテクチャについて解説しています。『オラ​​クル実務チューニング SQLパターン学習』と『Oracle Pro*C実務プロジェクト活用書』を出版し、AWS Summit 2018・2019と「データよ、遊ぼう」2020では、サーバーレス・データベースの選択・マルチデータベース戦略について発表しました。最近は、Bedrock LLMを利用したスロークエリの分析・チューニング提案、DBスペック算定の自動化、DBメタMCPサーバーとSlackボットを通じた照会フローを扱っています。開発者向けのデータベース自動化と、非開発者向けのAI業務活用について、各コースの対象者と目的に合わせた実習を通じて解説しています。AIの提案をそのまま適用するのではなく、結果の同一性・実行計画・観測条件を確認し、根拠が不足している場合は保留する判断基準を伝えています。会社の運用データや認証情報は講義資料に含めません。

もっと見る

カリキュラム

全体

32件 ∙ (3時間 15分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

dorian05202988の他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥52,800

20%

¥8,439