サーバーレスは『運用負荷を下げる選択肢』
サーバーレスはサーバー管理を不要にする実行モデルで、AWS Lambda / Cloud Run / Vercel / Cloudflare Workers 等が代表例です。本記事では編集部の視点で、実務での使い分けと注意点を公開情報をもとに整理します。AWS SAA ロードマップ もご参考に。
3タイプを理解する
(1) FaaS:Lambda / Cloud Functions。関数単位の実行。(2) コンテナ型サーバーレス:Cloud Run / Fargate。Dockerイメージをアップ。(3) Edge型:Vercel Edge / Cloudflare Workers。グローバル分散。(4) 選び方:イベント駆動なら FaaS、Webアプリは Cloud Run、低レイテンシは Edge。(5) 料金:従量課金で小規模は無料枠で運用可能。
Lambda の特性
(1) 最大実行時間:15分(公開情報をもとに)。(2) コールドスタート:初回起動の遅延。(3) 同時実行数の上限:account quota 確認必須。(4) Provisioned Concurrency:コールドスタート回避。(5) レイヤー:依存ライブラリを共有可能。
Cloud Run の特性
(1) HTTPサービスを Docker で。(2) 0スケール対応:未使用時は課金なし。(3) 長時間処理に対応:1時間(設定で延長可)。(4) Job 機能:バッチ用途。(5) VPC コネクタ:プライベートDBへ接続。Docker Compose 実践 も合わせて。
Edge 関数の特性
(1) 世界中のリージョンで実行。(2) 低レイテンシ:ユーザー近傍。(3) 制約:Node 標準APIの一部が使えない。(4) 用途:認証・A/Bテスト・パーソナライズ。(5) 冷たいDB:地理的に離れたDBへの接続は要注意。Next.js App Router も合わせて。
サーバーレスの設計指針
(1) ステートレス:関数間で状態を持たない。(2) 冪等性:再実行で副作用が増えない。(3) タイムアウト前提:長時間処理は分割。(4) 外部DB接続のプール問題:RDS Proxy 等で解決。(5) 監視:分散トレーシング + ログ集約。分散トレーシング も合わせて。
失敗しがちなパターン
(1) 長時間処理を1関数で:タイムアウト。(2) 同時実行数上限超過:throttling。(3) VPC内Lambda のコールドスタート:ENI 確保で遅延。(4) 料金が読めない:高頻度実行で爆発。(5) ローカル開発が困難:SAM / Serverless Framework 等で対応。対策は、(1)Step Functions で分割、(2)quota 確認、(3)Lambda Snap/Provisioned、(4)Budgets 設定、(5)ローカルランタイム、です。