メインコンテンツへスキップ
Q どろっぷ
Web 技術

サーバーレスとは

概要

サーバーレスは、サーバーのプロビジョニング、スケーリング、パッチ適用、障害対応といったインフラ管理をクラウドプロバイダーに完全に委任するアーキテクチャである。開発者はアプリケーションコードの記述に集中し、そのコードがいつ、どのサーバーで、何台で実行されるかを意識する必要がない。「サーバーがない」のではなく「サーバーを管理しない」という意味である。

従量課金とコスト構造

サーバーレスの最大の特徴は、リクエストが発生した分だけ課金される従量課金モデルである。従来のサーバーは 24 時間稼働し続けるため、トラフィックがゼロの深夜帯でもコストが発生する。サーバーレスでは、リクエストがなければコストもゼロになる。

個人開発や小規模サービスにとって、この特性は決定的な利点である。月間数千リクエスト程度のサービスであれば、AWS Lambda の無料枠 (月 100 万リクエスト) 内に収まり、コンピューティングコストが文字通りゼロになる。サービスが成長してトラフィックが増えた場合も、自動的にスケールアウトするため、事前のキャパシティプランニングが不要である。

コールドスタートとその対策

サーバーレスの主要な課題はコールドスタートである。一定時間リクエストがないと実行環境が破棄され、次のリクエスト時に環境の再構築が必要になる。この初期化処理に数百ミリ秒から数秒かかる場合がある。

コールドスタートの影響を軽減する方法はいくつかある。ランタイムの選択 (Python や Node.js は Java より起動が速い)、デプロイパッケージのサイズ削減、Provisioned Concurrency (事前に実行環境を確保する機能) の利用などである。質問箱サービスのように、ユーザーの操作に対してリアルタイムに応答する必要があるサービスでは、コールドスタートの体感を最小化する設計が重要になる。

質問箱サービスのサーバーレス構成

質問箱サービスは、フロントエンドからバックエンドまで完全にサーバーレスで構成されている。フロントエンドは Next.js を OpenNext で Lambda 上にデプロイし、API は Lambda Function URL で提供する。データベースは DynamoDB、認証トークンの送信は SES、コンテンツフィルタリングは Bedrock を使用する。

この構成により、サーバーの管理コストはゼロ、インフラコストはトラフィックに完全に比例する。個人開発者が運営するサービスとして、固定費を極限まで抑えつつ、数万ユーザーまでスケールできる基盤を実現している。EC2 インスタンスを 1 台でも常時稼働させれば月数千円のコストが発生するが、サーバーレス構成ではトラフィックが少ない間はほぼ無料で運用できる。

サーバーレスの設計パターンを学びたい方は、サーバーレスアーキテクチャの関連書籍も参考になります。

この記事は役に立ちましたか?

関連用語

関連記事

あなたも質問箱を作ってみませんか?

メールアドレスだけで登録でき、パスワード不要で始められます。

無料で始める