サーバーレス・Lambda
サーバーレスとは
サーバーレスは、サーバーの用意・管理をクラウドに任せて、コードだけを書いて動かす実行形態です。「サーバーが無い」わけではなく、開発者から見えない場所でクラウドが面倒を見てくれます。代表格が AWS Lambda で、Google Cloud Functions、Azure Functions、Cloudflare Workers も同じ仲間です。
この「関数単位でコードを預けて実行してもらう」形は FaaS(Function as a Service)と呼ばれます。[[クラウドコンピューティング]] のサービスモデル(IaaS / PaaS / SaaS)の中では、PaaS をさらに細かくしたものと考えると分かりやすいです。
初学者向けポイント
- イベント駆動: Lambda の関数は「HTTPリクエストが来た」「ファイルがアップロードされた」「キューにメッセージが入った」などのイベントをきっかけに起動する
- 従量課金: 実行された時間とリクエスト数だけ課金。何も起きなければ費用はほぼゼロ
- 自動スケール: アクセスが増えれば実行環境が自動で増える。夜中の急なバズにも人手なしで耐える
- 状態を持たない: 関数の実行環境は使い捨て。データは外のデータベースやストレージに保存する
得意なこと・苦手なこと
| 内容 | |
|---|---|
| 得意 | 画像リサイズなどの単発処理、[[REST API]] のバックエンド、定期実行ジョブ、[[メッセージキュー]] と組み合わせた非同期処理 |
| 苦手 | 長時間かかる処理(実行時間に上限がある)、常時接続が必要な処理、ミリ秒単位の応答が常に必要な処理 |
苦手の代表例が コールドスタート です。しばらく呼ばれていない関数は、最初の1回だけ実行環境の準備に時間がかかります。
コンテナとの使い分け
[[Docker]] などのコンテナは「アプリを丸ごと動かし続ける」のに向き、サーバーレスは「必要な瞬間だけ関数を動かす」のに向きます。常時稼働のWebサービスはコンテナ、イベントに反応する細かい処理は Lambda、という組み合わせが定番です。
イベント発生(HTTP / ファイル / キュー)
↓
Lambda 関数が起動(必要な数だけ自動で並列化)
↓
処理してDBやストレージに保存 → 実行環境は破棄
関連技術とのつながり
- [[クラウドコンピューティング]] — サーバーレスはクラウドの進化形。管理範囲が最も小さいモデル
- [[REST API]] — API Gateway と Lambda の組み合わせはサーバーレスAPIの定番構成
- [[メッセージキュー]] — キューをトリガーに Lambda を起動する非同期処理が典型パターン
- [[Docker]] — 常時稼働ならコンテナ、イベント駆動ならサーバーレス、と使い分ける
- [[CI/CD]] — 関数のデプロイも自動化して小さく頻繁にリリースする
Q: サーバーレス(FaaS)の説明として正しいのはどれ?
- [ ] サーバーを一切使わずにブラウザだけで処理する仕組み
- [x] サーバーの管理をクラウドに任せ、関数単位のコードだけを実行してもらう仕組み
- [ ] 自前のサーバーを仮想化して複数のOSを動かす仕組み
解説: サーバーが無いのではなく、開発者から見えない場所でクラウドが管理してくれます。コードは関数単位で預けます。
Q: Lambda 関数が起動するきっかけとして記事で挙げられているのはどれ?
- [ ] OSの起動
- [x] HTTPリクエストやファイルアップロードなどのイベント
- [ ] 開発者が毎回手動で実行ボタンを押す
解説: サーバーレスはイベント駆動が基本で、HTTP・ファイル・キューなどのイベントをきっかけに関数が起動します。
Q: コールドスタートとは何のこと?
- [ ] 実行時間の上限を超えて関数が強制終了すること
- [ ] アクセス増加で自動的に実行環境が増えること
- [x] しばらく呼ばれていない関数の初回実行で、環境準備に時間がかかること
解説: 使い捨ての実行環境を新しく用意するため、久しぶりの呼び出しは最初の1回だけ遅くなります。