サーバーレス

サーバーの管理をクラウドプロバイダーに委ね、コードの実行に対してのみ課金されるコンピューティングモデル

クラウドインフラ

サーバーレスとは

サーバーレス (Serverless) は、サーバーのプロビジョニング、スケーリング、パッチ適用、可用性管理をクラウドプロバイダーに完全に委ね、開発者はビジネスロジックの実装に集中できるコンピューティングモデルである。「サーバーがない」のではなく「サーバーを意識しない」という意味だ。

AWS Lambda が代表的なサーバーレスコンピューティングサービスであり、2014 年のリリース以降、サーバーレスアーキテクチャの普及を牽引してきた。

サーバーレスの特性

  • 自動スケーリング: リクエスト数に応じて自動的にスケールアップ/ダウンする。設定不要
  • 従量課金: 実行時間とリクエスト数に対してのみ課金される。アイドル時のコストはゼロ
  • 運用負荷の軽減: OS のパッチ適用、サーバーの監視、キャパシティプランニングが不要
  • イベント駆動: HTTP リクエスト、キューメッセージ、スケジュール、ファイルアップロードなど、様々なイベントをトリガーに実行される

サーバーレスの構成要素

サーバーレスは Lambda だけではない。以下のサービスを組み合わせてアーキテクチャを構成する。

  • コンピュート: Lambda, Fargate
  • API: API Gateway (REST / HTTP API)
  • データベース: DynamoDB (オンデマンド), Aurora Serverless
  • ストレージ: S3
  • メッセージング: SQS, SNS, EventBridge
  • オーケストレーション: Step Functions
  • 認証: Cognito

EC2 との比較

観点 サーバーレス (Lambda) EC2
課金 実行時間 × メモリ 起動時間 (アイドル含む)
スケーリング 自動 (ミリ秒単位) Auto Scaling (分単位)
最大実行時間 15 分 無制限
コールドスタート あり (数百ミリ秒〜数秒) なし (常時起動)
運用負荷 低い 高い (OS 管理が必要)

実務での適用判断

サーバーレスが適するケース:

  • リクエスト数の変動が大きいワークロード (夜間はほぼゼロ、日中にスパイク)
  • イベント駆動の処理 (ファイルアップロード時の変換、キューメッセージの処理)
  • 小規模チームで運用負荷を最小化したい場合

サーバーレスが不向きなケース:

  • 15 分を超える長時間処理
  • 常時高負荷で、アイドル時間がほとんどないワークロード (EC2 の方がコスト効率が良い)
  • コールドスタートが許容できない低レイテンシ要件

コールドスタート対策

Lambda のコールドスタート (初回起動時の遅延) は、Provisioned Concurrency で軽減できる。ただし、Provisioned Concurrency は常時課金されるため、サーバーレスの「アイドル時コストゼロ」のメリットが薄れる。SnapStart (Java) や Lambda Web Adapter など、コールドスタートを軽減する技術も進化している。

「AWS Lambda 実践ガイド」やサーバーレスアーキテクチャの技術書で、設計パターンと実装が解説されている。

SAM でのサーバーレス API

MyFunction:
  Type: AWS::Serverless::Function
  Properties:
    Runtime: nodejs22.x
    Handler: index.handler
    Events:
      Api:
        Type: HttpApi
        Properties:
          Path: /hello
          Method: GET
    Policies:
      - DynamoDBCrudPolicy:
          TableName: !Ref Table
export const handler = async (event: APIGatewayProxyEventV2) => {
  return { statusCode: 200, body: JSON.stringify({ message: 'Hello' }) };
};

サーバーレスを扱う関連書籍も多い。

関連用語