サーバレスの仕組みを図解で説明 〜従来のサーバとの違いとAWS Lambda〜

「サーバレス」と聞いて、サーバを使わない仕組みだと思っていませんか?

実は、サーバレスでもサーバは動いています。

サーバレスは、利用者がサーバの準備や管理をしなくてよい 仕組みのことです。

サーバレスの仕組みと、従来のサーバとの違いについて、図を使って説明していきます。

従来のサーバとサーバレスの比較図。従来のサーバは利用者がプログラムからサーバの台数まで管理し、サーバレスは利用者がプログラムだけを用意する

サーバレスとは?

従来は、プログラムを動かすために、まずサーバを用意していました。

サーバを借りて、OSやミドルウェアを入れて、プログラムを置き、ずっと動かしておきます。

サーバレスでは、動かしたいプログラムだけをクラウドに預けます。

サーバの準備、OSの更新、台数の調整は、クラウドの事業者が行います。

利用者は、プログラムを書くことに集中できます。

サーバレスの中心になっているのが、プログラムを関数(Function)の単位で動かすサービスです。

これを「FaaS」(Function as a Service)と呼びます。

代表的なサービスには、AWS Lambda、Azure Functions、Google Cloud Run functionsがあります。

「何かが起きたら動く」仕組み

サーバレスの関数は、ずっと動いているわけではありません。

何かが起きた時(イベント)に呼び出されて動き、処理が終わると止まります。

画像の縮小の例の図。利用者が画像をアップロードすると、それをきっかけに関数が動いて小さい画像を保存し、処理が終わると止まる

例えば、次のようなイベントで動かせます。

  • Webサイトからの要求が来た時
  • ストレージにファイルがアップロードされた時
  • 決まった時刻になった時(毎朝8時など)
  • データベースのデータが変わった時

画像がアップロードされたら、自動で小さいサイズの画像を作る、といった使い方がよくあります。

プログラムの例

AWS LambdaでPythonを使う場合、次のような関数を書きます。

def lambda_handler(event, context):
    return {"statusCode": 200, "body": "Hello"}

event には、どんなイベントで呼ばれたかの情報が入っています。

サーバの設定は書かずに、この関数をアップロードするだけで動かせます。

料金の考え方

サーバレスの料金は、関数が動いた回数と時間の分だけ かかります。

料金がかかる時間の比較図。従来のサーバは24時間ずっと料金がかかり、サーバレスは動いた時だけ料金がかかる

AWS Lambdaの場合、時間あたりの料金は、関数に割り当てるメモリの量によって変わります。

従来のサーバは、要求が来ていない夜中も動いているので、その間も料金がかかります。

サーバレスは、動いていない時間には料金がかかりません。

そのため、たまにしか動かない処理や、アクセスの量が大きく変わる処理に向いています。

反対に、一日中たくさんの要求を処理し続ける場合は、従来のサーバの方が安くなることもあります。

自動で台数が増える

要求が一度にたくさん来た時は、クラウドの事業者が自動で関数をたくさん動かして、同時に処理します。

利用者が、サーバの台数を増やす作業をする必要はありません。

サーバレスの注意点

サーバレスには、次のような注意点もあります。

  • 最初の呼び出しが遅いことがある: しばらく使われていない関数は、動かす準備に時間がかかる。これを「コールドスタート」と呼ぶ
  • 長い処理は動かせない: 1回の実行時間に上限がある。AWS Lambdaの通常の関数の場合は最大15分
  • データを関数の中に残せない: 処理が終わると止まるので、残したいデータはデータベースやストレージに保存する
  • ほかのクラウドに移しにくい: 事業者ごとに仕組みが違うので、別のクラウドへ移す時に作り直しが必要になることがある

従来のサーバ、コンテナとの違い

仮想マシン、コンテナ、サーバレスの比較表。用意するもの、動いている時間、料金、台数の調整で比べている

コンテナでも、事業者が台数を自動で調整するサービスがあり、境目ははっきりしなくなってきています。

まとめ

今回はサーバレスの仕組みについて説明しました。

サーバレスは、サーバがない仕組みではなく、サーバの準備と管理をクラウドの事業者に任せる仕組みです。

プログラムは、イベントが起きた時だけ動き、料金も動いた分だけかかります。

一方で、コールドスタートや実行時間の上限などの注意点もあります。

「サーバレスは、サーバを気にしなくてよい仕組み」と覚えておきましょう。

従来のサーバの仕組みについては、仮想マシンの仕組みを図解で説明の記事で説明しています。

コンテナについては、コンテナと仮想マシンの違いを図解で説明の記事で説明しています。

クラウドのサービスの種類については、IaaS・PaaS・SaaSの違いを図解で説明の記事で説明しています。