結論: サーバーレスとは、サーバーを自分で用意・管理しなくても、プログラムを動かせる仕組みです。サーバーが存在しないわけではなく、管理を事業者に任せられる、という意味です。必要な時に動き、動いた分だけ料金がかかる形が一般的です。
水道に例えると
自分で井戸を掘って、水をくみ上げる(サーバーを自分で管理する)のが、従来の方式です。サーバーレスは、蛇口をひねれば、水が出て、使った分だけ料金を払う水道のようなものです。水道管や、浄水場の管理は、気にしなくて済みます。
従来の方式との違い
| 項目 | 従来のサーバー | サーバーレス |
|---|---|---|
| サーバーの管理 | 自分で行う | 事業者が行う |
| 動いている時間 | 常時 | 必要な時だけ |
| 料金 | 動かしている時間に応じて | 実行した回数や時間に応じて |
| 増減への対応 | 自分で台数を調整する | 自動で、対応される |
クラウドの提供形態の違いは、IaaS・PaaS・SaaSの違いで解説しています。
サーバーレスの仕組み:FaaS
サーバーレスの代表的な形が、**FaaS(Function as a Service)**です。
- 小さなプログラム(関数)を、あらかじめ登録しておく
- 「アクセスが来た」「ファイルが追加された」などのきっかけ(イベント)で、関数が、自動で実行される
- 実行が終わると、関数は、止まる
つまり、**「呼ばれた時だけ動く」**ため、使っていない間は、料金がほとんどかからない形が、一般的です。
メリット
- サーバー管理が不要:OSの更新や、セキュリティ対策を、事業者に任せられる
- 自動で、増減に対応:アクセスが急に増えても、自動的に対応できる
- 使った分だけの課金:アクセスが少ないサービスでは、費用を抑えやすい
- 開発に集中できる:プログラムを書くことに、時間を使える
注意点・向かない場面
- 起動に、時間がかかることがある:しばらく使われていなかった関数は、最初の実行に、遅れが出る場合がある(「コールドスタート」と呼ばれる)
- 実行時間などに、制限がある:長時間の処理には、向かないことが多い
- 事業者に依存しやすい:特定のサービスの仕組みに合わせて作ると、他へ移しにくい
- 動作の確認が、難しい:ローカルで、同じ環境を再現するのに、工夫が必要
- 常時、大量の処理がある場合:常時動くサーバーのほうが、割安なこともある
向いている用途
| 向いている | 例 |
|---|---|
| 呼ばれた時だけ動く処理 | 画像のリサイズ、通知の送信 |
| 外部サービスからの呼び出しの受付 | Webhookの処理 |
| 定期的な処理 | 毎日1回の集計やバックアップ |
| 小さなAPI | フォームの受付、簡単なデータ取得 |
APIの基本は、APIとはで解説しています。呼び出しが多すぎる時の制限については、APIのレート制限とはも参考になります。
コンテナやKubernetesとの関係
サーバーレスは、サーバーの管理を、さらに事業者へ任せる方向の仕組みです。コンテナで、自分で管理する方向の仕組みは、Kubernetesとはや、コンテナと仮想マシンの違いで解説しています。どちらが良いかは、用途と、運用できる体制で決まります。
振り返ると
サーバーレスは、サーバーの管理を意識せずに、プログラムを動かせる仕組みです。必要な時だけ動き、動いた分だけ料金がかかるため、小さな処理や、アクセスの波が大きいサービスに向いています。起動の遅れや、実行時間の制限など、向かない場面も、あらかじめ知っておきましょう。
関連記事:DevOpsとは