SNSアプリの最終インフラ構成図
6ヶ月のカリキュラムを通して組み上げる SNS アプリの最終形(AWS 本番インフラ)を事前に俯瞰する
このドキュメントは、カリキュラム全体を通して「最終的に何を組み上げるのか」を最初に俯瞰するための 北極星 です。 個別の技術(React / Hono / Docker / AWS など)を学ぶときも、常にこの図の「どのピースを今作っているか」を意識することで、点の知識が線でつながります。
最終インフラ構成図
構成要素と、関連する beginner-stepup docs
| コンポーネント | 役割 | 関連 docs |
|---|---|---|
| CloudFront | CDN・HTTPS 終端・エッジキャッシュ | b05 Webアーキ / b17 ホスティング |
| S3 | React SPA(静的ファイル)の配信元 | b17 ホスティング |
| ALB(Application Load Balancer) | HTTP(S) を受けて EC2 に振り分ける | b05 Webアーキ / b06 HTTP/REST |
| App EC2(private subnet) | Docker Compose 上で Hono API を動かす | b13 API設計 / b17 ホスティング |
| RDS PostgreSQL(private subnet) | 永続データストア | b15 DB設計 / b16 マイグレーション |
| Bastion EC2(public subnet) | 管理 SSH の踏み台(private リソースへの穴) | b01 シェル / b07 認証・認可 |
| VPC | AWS ネットワーク境界。public/private subnet に分離 | b17 ホスティング |
| GitHub Actions | CI/CD(build / test / deploy) | b19 CI/CD |
| 環境変数 / Secrets Manager | DB 接続文字列・JWT secret 等の秘匿管理 | b18 環境変数 |
通信経路(リクエストの流れ)
ユーザーからのアクセス
ブラウザ
↓ HTTPS
CloudFront
├─ / → S3(React SPA の index.html)
└─ /api/* → ALB → App EC2(Hono API)
↓ SQL over SSL
RDS PostgreSQL
管理者の運用アクセス(SSH ProxyJump)
管理者の PC
↓ SSH
Bastion EC2(public subnet)
↓ SSH(VPC 内通信)
App EC2(private subnet)
↓ psql
RDS PostgreSQL
Private subnet のリソースはインターネットから直接アクセス不能。 「踏み台を経由して VPC の中に入る」が AWS セキュリティの基本パターン。
なぜこの構成なのか(学習ポイント)
1. Public / Private Subnet 分離
- Public subnet: インターネットからの窓口(ALB・Bastion)
- Private subnet: アプリ本体・DB(外部から直接触れない)
- セキュリティ境界を明示する設計
2. コンテナ化(Docker Compose)
- アプリを環境に依存しない形でパッケージング
- ローカル開発 → EC2 本番 → 同じコンテナイメージで動く
- 再現性・デプロイの高速化
3. CloudFront + S3(フロント)
- 静的ファイルは CDN で高速配信
- サーバー不要 → コスト低
- グローバル配信(世界中から速い)
4. ALB + EC2(API)
- 将来的な水平スケールへの布石(ALB 配下に複数 EC2 を並べられる)
- ヘルスチェック・スティッキーセッション等の機能
5. Bastion 踏み台
- Private リソースへの SSH アクセス経路を 1 箇所に集約
- ログ・アクセス制御を1台に集中できる
- 「最小権限の法則」の実践例
6ヶ月で組み上げるピースのマップ
| Month | 組み上げるピース |
|---|---|
| Month 1 | 上図のピースをローカル開発として凝縮した状態(web + api + Docker PostgreSQL)で動かす |
| Month 2 | 要求から要件を起こし、自前アプリとしてコード再設計 |
| Month 3-4 | 自前アプリを Month 1 と同じローカル構成で完成させる |
| Month 5 | 本図の AWS 構成を実際に組み立てる(VPC→SG→RDS→Bastion→EC2→ALB→CloudFront→S3) |
| Month 6 | CI/CD で自動化し、監視・セキュリティ診断を導入 |
よくある質問
Q. なぜ Amplify ではなく EC2/RDS? Amplify は確かに速く立ち上がるが、ブラックボックス化されていて中身の理解が浅くなる。 このカリキュラムは「本番運用で使える実務スキル」を目指すので、VPC/SG/Docker/RDS など、実務でよく使われるピースを 自分の手で 組み立てる経験を重視する。
Q. 全部自分でやる必要がある? 初見では複雑に見えるが、Month 5 の4週間をかけて Step-by-Step で一緒に構築する。 AWS Console での操作と、AWS CLI での確認を並行させることで、GUI に頼らない理解も育てる。
Q. コストは大丈夫? t3.micro(EC2・Bastion)と db.t3.micro(RDS)は AWS Free Tier の対象。 使わない時は停止を徹底すれば、月 100 ドル以内に収まる設計。Month 5 の冒頭で Budget Alert を設定する。
生きているコード
本ドキュメントで扱ったパターンの完全な動作コードは、メンター側リポジトリの参照ブランチで確認できます。
- 対応 Week: W4 / W17 / W18 / W19 / W20
- 参照ブランチ:
- W4:
reference/week-4 - W17:
reference/week-17 - W18:
reference/week-18 - W19:
reference/week-19 - W20:
reference/week-20 - 対応 checklist 項目: M12
ブランチの作り方・見方は b00-curriculum-map を参照してください。
- 1. 📄環境構築の段階的導入(macOS / Windows)
- 2. 📄SNSアプリの最終インフラ構成図
- 3. 📄SNSクローンの全体設計(Month 1 ゴール)
- 4. 📄カリキュラム全体マップ(Week × 教材 × 参照ブランチ × 要求チェックリスト)
- 5. 📄このカリキュラムの使い方(SQL・Python・Dify経験者向け)
- 6. 📄シェル・ターミナル基礎
- 7. 📄Windows で完全にゼロから始める開発環境構築(Week 1)
- 8. 📄Git基礎
- 9. 📄GitHubワークフロー
- 10. 📄パッケージ管理(pnpm workspace)
- 11. 📄Webアプリアーキテクチャ全体像
- 12. 📄要求ヒアリングとユーザーストーリー(Month 2 Week 5)
- 13. 📄画面ワイヤーフレームと画面遷移図(Month 2 Week 6)
- 14. 📄HTTP・REST API基礎
- 15. 📄ER 図の描き方(Month 2 Week 7)
- 16. 📄認証・認可のパターン
- 17. 📄REST API 仕様書の書き方(Month 2 Week 7)
- 18. 📄HTML/CSS基礎とレイアウト
- 19. 📄JavaScript基礎(Pythonとの対比)
- 20. 📄TypeScript基礎(型システムとPythonとの対比)
- 21. 📄Reactコンポーネント設計の基礎
- 22. 📄状態管理の概念
- 23. 📄フォーム検証(React Hook Form + Zod)(Month 3 Week 11)
- 24. 📄バックエンドAPI設計(Hono)
- 25. 📄ルーティング(React Router v7)
- 26. 📄Hono のエラーハンドリング(Month 4 Week 13)
- 27. 📄データベース設計・SQL→Drizzle ORM対応
- 28. 📄マイグレーションの考え方
- 29. 📄AWSインフラ基礎
- 30. 📄AWS Budget Alert の設定(Month 5 Week 17)
- 31. 📄環境変数管理
- 32. 📄Bastion EC2 と SSH ProxyJump(Month 5 Week 18)
- 33. 📄CI/CD基礎
- 34. 📄ECR への Docker イメージ push と App EC2 デプロイ(Month 5 Week 19)
- 35. 📄テスト設計の基本
- 36. 📄CloudFront + S3 + ALB で公開する(Month 5 Week 20)
- 37. 📄CLAUDE.md・プロジェクト設定
- 38. 📄PR レビュー 5 観点ルーブリック(全 Week 共通)
- 39. 📄タスク分解・仕様の書き方
- 40. 📄Playwright で E2E テスト(Month 6 Week 22)
- 41. 📄生成コードのレビュー・デバッグの勘所
- 42. 📄Trivy で脆弱性スキャン(Month 6 Week 23)
- 43. 📄CloudWatch Logs の読み方と運用(Month 6 Week 23)
- 44. 📄PDF ポートフォリオの自動生成(Month 6 Week 24)