AIを扱うバックエンド設計の基本 - SpringBoot SNS編
apiece
AI時代に開発者が備えるべき、サービスを企画・設計する思考力を養う実践型バックエンド講座です。
初級
PostgreSQL, Spring Boot, DBMS/RDBMS
先着順クーポンシステムの構築を通じて、同時実行制御、データ整合性、ピークトラフィック処理など、実務におけるバックエンドの核心的な課題を解決します。直接コードを書きながら問題を発見し、同期・非同期処理や待機列管理など、実務に不可欠な技術を習得します。ジュニア開発者や就職準備生が実戦経験を積むことができるプロジェクトベースの講義です。
受講生 332名
難易度 初級
受講期間 無制限
並行性問題の解決とデータ整合性の保証手法
同期/非同期処理によるトラフィック負荷分散設計
待機列システムとピークトラフィック防御アーキテクチャの実装
先着順クーポンイベントが開催されると、数多くのリクエストが同じ在庫に同時にアクセスします。
用意した数量より多く発行されたり、同じユーザーが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通信に関する基本概念
キャリア認証
1,042
受講生
40
受講レビュー
43
回答
4.9
講座評価
5
講座
カカオ、SKを経て開発者として働きながら
実際のサービス環境で多様なバックエンドシステムを設計し、運用してきました。
これまでの試行錯誤や悩みが
受講生の皆さんの時間と選択を少しでも減らす助けになることを願う気持ちで
知識共有コンテンツを作成しています。
コンテンツに関するご意見や改善点などがございましたら、
以下のメールアドレスまでいつでもお気軽にご連絡ください。
皆様の率直なフィードバックをお待ちしております。ありがとうございます。
apiece.dev.ai@gmail.com
全体
59件 ∙ (10時間 17分)
講座資料(こうぎしりょう):
6. 実践サーバスタックを一目で見る
03:00
全体
4件
知識共有者の他の講座を見てみましょう!
同じ分野の他の講座を見てみましょう!
期間限定セール
¥13
69%
¥7,027