System Architecture
Frontend · Backend · Database — AWS Infrastructure
🌐 Client
User / Browser
HTTPSリクエスト発行
React SPA
React SPA
HTTPS
☁️ Frontend Layer — AWS
CloudFront
CDN・グローバルエッジ配信
SSL終端・キャッシュ制御
WAF統合・DDoS保護
CDN
SSL
WAF
SSL終端・キャッシュ制御
WAF統合・DDoS保護
S3
静的アセット格納
HTML / JS / CSS / 画像
バージョニング・暗号化
Static
Origin
HTML / JS / CSS / 画像
バージョニング・暗号化
API Call (HTTPS/JSON)
⚙️ Backend Layer — AWS
ECS Fargate
FastAPI コンテナ実行
サーバーレス・オートスケール
メインAPI処理ロジック
FastAPI
Docker
Auto Scale
サーバーレス・オートスケール
メインAPI処理ロジック
Lambda
非同期・イベント処理
バッチ・Webhook受信
軽量ユーティリティ関数
Async
Event
Batch
バッチ・Webhook受信
軽量ユーティリティ関数
ALB / API GW
ロードバランシング
Fargate / Lambda ルーティング
ヘルスチェック
Routing
LB
Fargate / Lambda ルーティング
ヘルスチェック
SQLAlchemy / Alembic
🔧 ORM / Migration Layer
SQLAlchemy
ORM・コネクションプール管理
非同期対応 (asyncpg)
クエリ構築・セッション管理
ORM
Async
非同期対応 (asyncpg)
クエリ構築・セッション管理
Alembic
DBスキーマバージョン管理
マイグレーション自動生成
ロールバック対応
Migration
Schema
マイグレーション自動生成
ロールバック対応
TCP/5432 (PostgreSQL)
🗄️ Database Layer — AWS
Aurora PostgreSQL
マネージドRDB・高可用性
Writer / Reader エンドポイント
自動フェイルオーバー・バックアップ
Data API 対応
Writer
Reader
Multi-AZ
Writer / Reader エンドポイント
自動フェイルオーバー・バックアップ
Data API 対応
📡 処理フロー
▸ 通常リクエスト (画面表示)
Browser
ユーザーがURLにアクセス。HTTPSリクエストを送信。
CloudFront
エッジロケーションでリクエスト受信。SSL終端・キャッシュHITなら即返却。
S3
キャッシュMISSの場合、S3からHTML/JS/CSSを取得しCloudFrontへ返却。ブラウザにSPAが配信される。
Browser → ALB
SPAがAPI呼び出し。ALB (Application Load Balancer) がリクエストを受け取る。
ECS Fargate
FastAPIコンテナが処理。認証・ビジネスロジック・バリデーション実行。
SQLAlchemy
ORMを通じてAurora PostgreSQLへクエリ発行。Writerエンドポイント(書込) / Readerエンドポイント(読込)を使い分け。
Aurora PG
SQLを実行しレスポンスデータをFastAPIに返却。FastAPI → ALB → Browserへとレスポンスが戻る。
▸ 非同期・バッチ処理 (Lambda)
Trigger
SQS・EventBridge・S3イベント・APIコールなどからLambdaが起動。
Lambda
メール送信・画像処理・外部API連携などの非同期タスクを実行。
Aurora PG
必要に応じてDBアクセス。Data APIまたはVPC内SQLAlchemy経由で接続。
▸ DBマイグレーション (Alembic)
CI/CD Pipeline
デプロイ時または手動で
alembic upgrade head を実行。Alembic
マイグレーションスクリプトを順次適用。バージョン管理でロールバックも可能。
Aurora PG
スキーマ変更(テーブル追加・カラム変更等)をWriterエンドポイントへ適用。
💡 ポイント
Read/Write分離 — Aurora ReaderエンドポイントをSQLAlchemyの読み取りセッションに向け、スループットを最大化。
スケール戦略 — 同期APIはFargate (コンテナスケール)、非同期・イベント処理はLambda (ゼロスケール) で役割分担。
セキュリティ — Fargate・LambdaはVPC内プライベートサブネット配置。Aurora への直接外部アクセス不可。Secrets Managerで認証情報管理。