bookmark_border結局サーバーレスとは一言で說明すると何なのか

多くのサイトでサーバーレスについてさまざまな説明や定義がありますが、自社製品の宣伝がベースだったり実例紹介が長いものだったりとわかりにくいものも多いので簡潔に説明する試みです。


※筆者はAWS Lambdaユーザーですが、簡潔な說明に振れたため個人的解釈が含まれているかもしれない旨ご了承ください。


結論

アプリ開発者がサーバの運用・管理を意識せずにアプリケーションを実行・拡張できるクラウドコンピューティングの仕組み・考え方のこと。サーバーが存在しない仕組みのことではない。

よく聞く AWS Lambda、Azure Functions、Google Cloud Functions とは何なのか

サーバーレスの仕組み・考え方を実際に実現したクラウドサービスの名称です。

これらのサービスを使うと例えば「このURLにアクセスがあったらこのPythonの関数を実行して」という設定をブラウザ上で行なえます。アプリ開発者はその「URL」と「Pythonのコード」の設定をブラウザ上でぽちぽちするだけで良いのです。

アプリ開発者はOSやWebサーバー、Pythonなどのインストールや設定をスキップしていきなりPythonなどのコードをサーバーに実行可能状態で配置できます。

コードは結局LinuxなどのOSの上で動くわけですが、アプリ開発者側が「サーバーの存在を意識しなくてもすぐサービスを開始できる」のがサーバーレスの趣旨です。(つまり「サーバー」が意味するのは、本来保守が必要なOS, その他基本的なアプリケーションなどのことです。Python以外の言語ももちろん実行できます。)

飛び交っている様々な說明の意味

サーバーレスについて説明するサイトでは概ね以下のような要点が説明されています。

インフラ管理の手間が省ける

意味:本来であれば自前のサービスを世界に公開したい場合、Linuxがインストール済みのマシンを借りて(AWSではEC2など)、自分でOSやWebサーバの設定をして… という作業が必要です。でもサーバーレスの概念を踏襲したAWS Lambdaなどのサービスを使うことでそれをスキップできます。

イベント駆動型

意味:例えばAWS Lambdaでは、AWS Lambda上で自分が書いたPythonのコードのどの関数をどんなタイミングで実行するかを設定できます。例えば「特定のURLにアクセスがあったとき」「特定のデータベースに変更があったとき」などです。「〇〇のとき」のことを「イベント」や「トリガー」と言います。

拡張性が高い

意味:AWS Lambdaをはじめさまざまなサーバーレスのサービスでは、利用者の数が増えてもコードがスムーズに動作するよう、実行するマシンの性能をアップする機能を使えます。まさに、アプリ開発者にサーバーを意識させない「サーバーレス」の概念の恩恵です。

コスト効率が良い

意味:コンピュータを間借りするサービスは契約期間中ずっと、またはコンピュータが起動している時間に対して課金されるのが普通です。しかしサーバーレスのサービスは原則、実際に使用されたリソースに対してのみ課金されます。あまり利用者がいないけど維持費だけがじわじわかかり続けるという事態への対策として有効です。

これらの説明は、サーバーレスが提供する利点や特性を示しています。しかし、これらの情報だけでは「サーバーレスとは何か」という本質的な意味を完全に理解するのは難しいこともあるため、各点を深く理解することが重要です。

サーバーレスの思想

もちろんデータベースと接続したり、他のAPIを叩いたりとし始めるとできることは無限に広がります。

「サーバーレスを使ってこんなサービスを開始しました!」という話でシステムの構成図などを見ると複雑に見えることもありますが、サーバーレスのベースにある考え方はシンプルです。

それは「アプリ開発者をOSやWebサーバーなどの面倒な設定から開放し、『このタイミングでこのコードを実行する』という設定だけでサービスを公開できる世界を提供する」ことです。