アーキテクチャ例
実際に構築したシステムの構成パターンを解説します。 設計の意図・技術選定の理由まで含めて説明します。
SaaS構成例
Excel/CSV自動処理 SaaSの全体構成
ユーザー(ブラウザ)
Next.js Frontend(Vercel)
Laravel API(AWS ECS)
Redis Queue
Python Worker(ECS Task)
OpenAI API(処理計画生成)
pandas / openpyxl(実処理)
PostgreSQL(RDS)/ S3(ファイル)
差分プレビュー / ダウンロード
設計のポイント
自然言語 → 安全な処理計画
OpenAI APIは処理計画の生成のみに使用。実際のファイル処理はPythonが担当。ユーザーが計画を確認してから実行するため、意図しない処理を防ぎます。
非同期・スケーラブルな処理
Redisキューで処理を非同期化。重いExcel処理でもフロントエンドはブロックされません。Python WorkerはECSタスクとして独立しており、スケールアウトも容易です。
セキュアなファイル管理
アップロードファイルはS3に保存し、署名付きURLでのみアクセス可能。処理完了後24時間で自動削除するため、データが残り続けるリスクを最小化します。
差分プレビューによる確認
処理前後のデータを並べて表示するプレビュー機能。誤った処理をダウンロード前に検出できます。ユーザーが意図通りの結果か確認してからダウンロードします。
非同期処理構成
Redis Queue × Python Worker
# 非同期処理フロー
1. POST /api/jobs — フロントがジョブを投入
2. Redis Queue — ジョブをキューに追加 → 即座に202を返却
3. Python Worker — キューからジョブを取得
4. OpenAI API — 処理計画の確認(必要な場合)
5. pandas処理 — 実際のファイル処理を実行
6. S3に保存 — 結果ファイルをアップロード
7. WebSocket通知 — フロントに完了を通知 → プレビュー表示
セキュリティ設計
多層防御の考え方
通信層
- ✓HTTPS / TLS 1.3
- ✓HSTS ヘッダー
- ✓CSP ポリシー
- ✓Rate Limiting
アプリ層
- ✓CSRF トークン
- ✓XSS サニタイズ
- ✓入力バリデーション
- ✓権限チェック(RBAC)
データ層
- ✓署名付きURL
- ✓処理後の自動削除
- ✓暗号化ストレージ
- ✓アクセスログ