トラフィックの急増に耐えるサーバーシステムの設計 - クーポン発行サービス

先着順クーポンシステムの構築を通じて、同時実行制御、データ整合性、ピークトラフィック処理など、実務におけるバックエンドの核心的な課題を解決します。直接コードを書きながら問題を発見し、同期・非同期処理や待機列管理など、実務に不可欠な技術を習得します。ジュニア開発者や就職準備生が実戦経験を積むことができるプロジェクトベースの講義です。

難易度 初級

受講期間 無制限

Java
Java
Kotlin
Kotlin
MySQL
MySQL
Docker
Docker
Spring Boot
Spring Boot
Java
Java
Kotlin
Kotlin
MySQL
MySQL
Docker
Docker
Spring Boot
Spring Boot

受講後に得られること

  • 並行性問題の解決とデータ整合性の保証手法

  • 同期/非同期処理によるトラフィック負荷分散設計

  • 待機列システムとピークトラフィック防御アーキテクチャの実装


普段は大丈夫なサーバーが、イベントが始まるとどうして崩壊してしまうのでしょうか? 🚦


  • 先着順クーポンイベントが開催されると、数多くのリクエストが同じ在庫に同時にアクセスします。

  • 用意した数量より多く発行されたり、同じユーザーが2枚受け取ったり、複数のストレージ間で記録の整合性が崩れたりすることがあります。


この講義は、完成されたアーキテクチャを暗記する代わりに、一つのクーポン発行サービスを自ら崩壊させ、再び設計します。


問題を再現し、TPS、P99、エラー率、および実際の配布の正確性を測定した後、DB Lock、Redis、Kafka、Cache、仮想待機室を選択し、同じ負荷で再度検証します。


  • KotlinとSpring Bootでコードを作成します。

  • Docker ComposeでMySQL、Redis、Kafkaを実行し、RedisやKafkaが初めての方でも、HTTP、RDB、Spring Bootの基礎があれば段階的に進めることができます。


この講義の特徴


📌 一つのクーポンサービスを、基本実装から同時実行制御、非同期処理、キャッシュ、整合性復旧、トラフィック制御まで継続的に発展させていきます。

📌 問題の再現 → ボトルネックの測定 → 設計の選択 → 同一条件での再検証という流れを、すべてのパートで繰り返します。

📌 TPSとP99だけを見るのではありません。正確にN枚が発行されたか、1人1枚が守られたか、イベントがMySQLまで漏れなく保存されたかも併せて確認します。

📌 DB悲観的ロックとRedis Lua、インメモリキューとKafkaのように、複数の選択肢を直接比較しながら、いつ何を選択すべきかを判断します。

📌 理論だけで終わらせません。動作するコード、実行環境、k6負荷シナリオ、変更前後の検証結果がセットで残ります。

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

ピークトラフィックが初めてのジュニアバックエンドエンジニア

リクエストが集中した際、DB、キャッシュ、キューのどこから手をつければいいか分からず困っている方に最適です。

設計能力を高めたいバックエンド就職準備生

技術名を羅列する代わりに、問題、選択、結果をプロジェクトとして説明したい方におすすめです。

性能を数値で検証したいサーバー開発学習者

CRUDを超えて、負荷テストや障害再現を通じてシステムを発展させたい方に役立ちます。

単純な実装には慣れているものの、トラフィックが集中する状況でどこから確認し、どの技術を選択すべきか分からず途方に暮れている方に最適です。問題を直接再現し、測定結果に基づいて設計を改善するプロセスを通じて、実務で活用できる判断基準を築きます。


受講後には

✓ 同時リクエストにおいても、正確な数量と1人1枚のルールを同時に守る発行ロジックを実装できます。

✓ DBの悲観的ロック、Redisの分散ロック、Redis Luaの原子演算の長所と短所を比較し、状況に合った方式を選択できるようになります。

✓ Kafkaでユーザー応答とDB保存を分離し、失敗メッセージをDLTと再処理フローで復旧します。

✓ Cache Stampede、完売後のリクエスト殺到、RedisとMySQLの不一致を検知して対応できます。

✓ 仮想待機室とGateway Rate Limitを連携させ、正常なユーザーは待機させ、アビューザーは入り口で遮断します。

✓ TPS、P99、エラー率だけでなく、発行量、重複の有無、保存漏れまで測定し、設計の改善を結果で証明できます。


このような内容を学びます

問題を再現し、数値で原因を特定します

クーポンの超過発行とボトルネックをあえて作ってみましょう。TPS、P99、エラー率、正確性の指標を読み取り、設計の前後を同じk6負荷条件で比較します。感覚ではなく測定値で、次の選択の根拠を作ります。

基本実装からトラフィック制御まで6段階で成長します

クーポン要件の実装、同時実行制御、非同期処理、キャッシュ戦略、整合性復旧、トラフィック制御の順序で進めます。各段階の限界を確認しながら、次の設計が必要な理由を自然に理解します。

複数の技術を一つのクーポン発行フローとして繋げます

Gatewayと仮想待機室が進入速度を制御し、Redisが在庫と重複発行をアトミックに処理します。Kafka WorkerはMySQLに保存し、バッチスケジューラは2つのストレージ間の不一致をチェックします。

コードと検証結果が一緒に残ります

KotlinとSpring Bootでアプリケーションを作成します。Docker ComposeでMySQL、Redis、Kafkaを実行し、k6で実際の負荷をかけてTPS、P99、エラー率、発行量、重複の有無、保存漏れを確認します。

この講義を作った理由

  • 完成されたアーキテクチャを見るとすべての選択が当然のように見えますが、実務では原因を探し、複数の選択肢の中から一つを選ばなければなりません。

  • 有名な技術をもう一つ追加する方法よりも、どこでリクエストを制御し、どの状態をどこに置き、何をもって成功と判断するかを決定する力を伝えたいと思いました。

この講義では扱いません

  • 決済や配送といったクーポンの周辺ドメインや、すべての分散システム理論を広く網羅するわけではありません。

  • 事前に固定された数量のクーポン発行、1人1枚、決められた開始時刻、売り切れ次第終了という条件に集中します。

受講前のご注意事項

実習環境

• Kotlin, Spring Boot, Gradleを使用します。

• MySQL、Redis、KafkaはDocker Composeで実行します。

• 負荷テストにはk6を使用します。

• Dockerを実行できるWindows、macOS、Linux環境であれば実習可能です。

• スムーズな実習のために、8GB以上のメモリを推奨します。

学習資料

• 講義スライドと全ソースコードを提供します。

• パート別の実行環境とDocker Compose構成を提供します。

• 直接繰り返し実行できるk6負荷テストシナリオがあります。

• 各段階の設計文書と変更前後の検証結果を併せて確認します。

前提知識および注意事項

• HTTPとREST APIの基本概念が必要です。

• 関係型データベースと SELECT、UPDATE レベルの SQL を使用します。

• JavaまたはKotlinの文法を理解している必要があります。

• Spring Bootの基礎知識を推奨します。

• RedisとKafkaの経験は必須ではありません。




こんな方に
おすすめです

学習対象は
誰でしょう?

  • 実戦経験を積みたいジュニアバックエンドエンジニア

  • コンカレンシー制御と大容量トラフィック処理を学びたいバックエンド就職準備生

  • 実務レベルのバックエンドシステム設計を経験したいコンピューター工学専攻の大学生

前提知識、
必要でしょうか?

  • バックエンドプログラミング言語(Java、Pythonなど)の基本文法の理解

  • データベースとSQLの基礎知識

  • REST APIとHTTP通信に関する基本概念

こんにちは
apieceです。

キャリア認証

1,042

受講生

40

受講レビュー

43

回答

4.9

講座評価

5

講座

カカオ、SKを経て開発者として働きながら
実際のサービス環境で多様なバックエンドシステムを設計し、運用してきました。

これまでの試行錯誤や悩みが
受講生の皆さんの時間と選択を少しでも減らす助けになることを願う気持ちで
知識共有コンテンツを作成しています。

コンテンツに関するご意見や改善点などがございましたら、
以下のメールアドレスまでいつでもお気軽にご連絡ください。
皆様の率直なフィードバックをお待ちしております。ありがとうございます。
apiece.dev.ai@gmail.com

もっと見る

カリキュラム

全体

59件 ∙ (10時間 17分)

講座資料(こうぎしりょう):

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

受講レビュー

全体

4件

5.0

4件の受講レビュー

  • maruhxn님의 프로필 이미지
    maruhxn

    受講レビュー 11

    平均評価 5.0

    5

    61% 受講後に作成

    大規模トラフィックで発生しうる問題が頭の中で整理できていなかったのですが、この講義一つでバラバラだった知識が一つにまとまるような気分です。このような講義を受けられるという事実に、本当に感謝しています。

    • apiece
      知識共有者

      こんにちは、maruhxnさん。 バラバラだった知識が一つに繋がったとのこと、講義を作った意図がしっかり伝わったようで本当に嬉しいです。 大規模トラフィックの問題を見極める基準を立てるのに、お役に立てれば幸いです。 受講評を残していただきありがとうございました! 😊

  • wlgusqkr116518님의 프로필 이미지
    wlgusqkr116518

    受講レビュー 3

    平均評価 5.0

    5

    80% 受講後に作成

    • jorealbusiness님의 프로필 이미지
      jorealbusiness

      受講レビュー 7

      平均評価 5.0

      5

      31% 受講後に作成

      • hk0305님의 프로필 이미지
        hk0305

        受講レビュー 30

        平均評価 5.0

        5

        31% 受講後に作成

        似ている講座

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

        期間限定セール

        ¥13

        69%

        ¥7,027