サーバレスとは何か?――3大サービスを一挙比較!:3大サーバレスを試してみよう(1)
商用サーバレスサービスとしてAWS Lambdaがリリースされてから8年以上が経過しました。その間、MicrosoftからはAzure Functions、GoogleからはGoogle Cloud Functionsがリリースされ、3大クラウドベンダーそれぞれがサーバレスをサービスとして展開しています。本連載では、4回にわたって、この3大クラウドベンダーのサーバレスサービスを比較していきます。連載1回目は、そもそもサーバレスサービスとはどのようなものなのか、3大クラウドベンダーのサーバレスのそれぞれの特徴を概観するとともに、本連載で実行させる関数を、ローカルで実行させるところまで紹介します。
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。
サーバレスの概要とその仕組み
3大クラウドベンダーのサーバレスサービスを比べていく本連載。第1回は「そもそもサーバレスとはどういうものなのか?」から話を始めます。
サーバレスは“サーバ管理レス”
商用サーバレスサービスであるAWS Lambdaがリリースされてから8年以上が経過していますので、この「サーバレス」という単語にそろそろ慣れてきた開発者も多いと思います。しかし、サーバレスという単語そのものは、いまだに誤解を招く用語です。この単語を文字通り解釈すると、サーバが存在しないようなイメージを抱いてしまいます。しかし、サーバレスサービスでは、当然ながらサーバが存在しています。この「レス」が指すものは、サーバの存在そのものではなく、サーバの管理に対してです。
物理的に存在するものであれ、仮想化されたものであれ、Webアプリケーションを実行するためには、サーバが必要です。そのサーバ内には、当然OSは必要ですし、ランタイムなどのアプリケーションの実行環境も必要です。そして本来であれば、サーバマシンに加えて、これらOSなどのWebアプリケーション環境を手動で構築し、管理する必要があります(図1の左側)。
これらの環境構築、管理をなくし、単にソースコードをデプロイするだけでアプリケーションが実行できてしまうサービスが、サーバレスサービスです。つまり、サーバレスというのは、サーバ「管理」レスのことだといえます(図1の右側)。
PaaSとの違い
このサーバレスサービスと似たサービスとして、いわゆるPaaS(Platform as a Service)というものがあります。有名なものに、HerokuやNetlifyなどがあります。PaaSも、サーバレス同様に、Webアプリケーションの実行環境を自動で用意してくれており、管理が自動化されています。開発者は、アプリケーションコードをデプロイするだけで、実行できるようになっています。
これら、PaaSとサーバレスサービスとの決定的な違いは、アプリケーションを常時起動しておくかどうかです。PaaSが従来のWebアプリケーション実行環境に近く、デプロイしたアプリケーションは常時起動された状態であり、そこにユーザーはアクセスして利用していくことになります。
一方、サーバレスサービスの場合は、ユーザーがアクセスしてきた時点でアプリケーションが起動し、処理が終了すると、アプリケーションも終了します。イメージ的には、アクセスの一瞬だけコードが実行されるようなものです。そのため、アプリケーション内では、状態を保持することはしません。状態を保持しないため、アクセス数に応じていくらでもアプリケーションを起動することができ、自動でスケールしていくという特徴があります。
また、サービス料金についても、コードが実行されている一瞬について課金されるという従量課金制度が採用されているのも特徴です。そのため、常時サーバを稼働させる必要があるPaaSに比べて、場合によっては費用が抑えられます。
関数実行のイメージのサーバレス
Copyright © ITmedia, Inc. All Rights Reserved.