← 戻る

インフラ選定の原則 — 複雑さは必要性から逆算する


背景

フルスタック Web 開発では「どのバックエンド使うか」という選択肢が多い。

  • Firebase Cloud Functions
  • AWS Lambda
  • Google Cloud Functions
  • Cloudflare Workers
  • Vercel Functions
  • 自社 VM / Kubernetes

アンチパターン

単なる Slack webhook POST → Firebase Cloud Functions + GCP VM

課題

  1. 過剰エンジニアリング: インフラの複雑さが実装の 10 倍
  2. 学習曲線: Firebase SDK の理解 / GCP コンソール操作
  3. 運用コスト: 監視、ログ、スケーリング設定
  4. 冗長性: 単純な処理に高可用性インフラは不要

原則:逆算発想

1. 必要な処理は何か?
   → Slack Webhook 1 行の POST

2. どのくらいのスケールか?
   → コーポレートサイト、月 100 件程度の問い合わせ

3. どのインフラがそれに適切か?
   → API Gateway / Edge Function で十分
   ❌ Firebase(学習コスト高い)
   ❌ Cloud Run(常時起動 VM)
   ✓ CF Pages Functions(エッジで即実行、無制限)

判断表

必要な処理推奨インフラ理由
Webhook POST / メール送信CF Functions / Vercel API単発実行、低レイテンシ
CRUD API + DBSupabase / Firebase Realtimeリアルタイム必須
バッチ処理 / 長時間実行Cloud Tasks / Temporalスケジュール・リトライ
リアルタイム双方向通信WebSocket (Vercel KV / Durable Objects)ステートフル
機械学習推論Lambda / Cloud Functions計算量多い

移行ケース

Before(過剰)

Next.js (GCP App Engine)

Firebase Cloud Functions

Slack Webhook
  • 起動: gcloud app deploy(数分待ち)
  • 監視: GCP コンソール + Firebase console
  • コスト: 月 $10-50(Free tier外)

After(最小化)

Astro static (CF Pages)

CF Pages Functions(同一プロジェクト)

Slack Webhook
  • デプロイ: wrangler deploy(秒単位)
  • 監視: CF dashboard 一箇所
  • コスト: 月 $0(Free 10万req/日)

チェックリスト:この技術は必要か?

  • 実装なしに同じ結果を得られないか?(No = 必要)
  • 学習コストは実装メリットに見合うか?
  • 運用オーバーヘッド(監視、スケーリング、ログ)は将来的に必要か?
  • チーム全体が使いこなせるスキルセットがあるか?
  • 本番環境での障害時の対応ができるか?

1 つでも No なら、もっと単純な選択肢を検討する。

学び

「機能しているから」という理由で複雑性を受け入れない。 移行時が技術選定を見直すベストタイミング。