アーキテクチャ例

実際に構築したシステムの構成パターンを解説します。 設計の意図・技術選定の理由まで含めて説明します。

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
  • 処理後の自動削除
  • 暗号化ストレージ
  • アクセスログ

このアーキテクチャを実際に動かしているプロダクトと開発実績を確認できます。