サーバーレスコンピューティングとサービスとしてのプラットフォーム(PaaS)との違いは?

PaaSとサーバーレスコンピューティングには、開発者によるバックエンド管理は含まれませんが、スケーラビリティ(拡張可能性)、価格、ネットワークエッジでの展開機能などの要素によって、2つのモデルを分けることができます。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • PaaSとサーバーレスの比較対照
  • ネットワークエッジでのコード実行機能が重要な理由

記事のリンクをコピーする

サーバーレスコンピューティングとサービスとしてのプラットフォーム (PaaS) の違いは?

サーバーレスコンピューティングサービスとしてのプラットフォーム (PaaS) は、バックエンドアーキテクチャで、開発者にバックエンド全体が見えなくなるという点において両者はやや似通っています。しかし、この2種類のアーキテクチャはいくつかの大きな違いによって分離され、これらのアーキテクチャのほとんどの導入事例ではどちらか一方だと最適に機能し、両方ではうまくいきません。PaaSとサーバーレスの主な相違点として、スケーラビリティ、価格、起動時間、ツール、ネットワークエッジでの展開能力があります。

サーバーレスとPaaSの比較

PaaSアーキテクチャとサーバーレスアーキテクチャのスケーラビリティのどちらが、より優れているか

サーバーレスアプリケーションは、開発者やベンダーによる追加設定なしで、即座に、自動的に、オンデマンドで拡張できます。サーバレスでは、定義によってスケールアップすることができます。これに対して、PaaSホスト型アプリケーションでは、開発者はユーザーの需要に応じてスケールアップおよびスケールダウンをプログラムできますが、これはPaaSの本質的な機能ではなく、開発者は適切に拡張するために一定の予測を行う必要があります。

サーバーレスコンピューティングは、水道から水を出すことに例えることができ、水はコンピューティングパワーを表します。現代家庭の水道の蛇口はいつでも好きな時に、必要な量の水を出すことができます。PaaSは、ウォーターディスペンサーとウォーターボトル配送サービスを使用するようなものです。配送サービスでも必要な量の飲料水を得ることは可能ですが、水道の蛇口をひねるほど簡単ではありません。消費者は需要が増えればもっと配達してもらうようにベンダーに依頼しなくてはなりません。どちらの場合でも、他の誰かが水を浄化し、建物に持ち込むなど、「バックエンド」の処理が必要ですが、水道水のみが、オンデマンドでリアルタイムに正確にスケーリング(拡張)できます。

サーバーレスアーキテクチャは、要求に応じてアプリケーション機能 の新しいインスタンスを起動することで、迅速にスケールアップできます。また、機能が不要になったり、設定された期間を過ぎたりした時に、機能を閉じることによって、すばやくスケールダウンします。実際、サーバーレスWebアプリケーションは、アクティビティがなければスケールダウンし、どのイベントにも数秒または数ミリ秒以内に反応して再び起動することができます。PaaS上に構築されたアプリケーションは、それほど迅速に、そして柔軟にスケールアップまたはスケールダウンすることができません。

PaaSとサーバーレスの価格設定の違いは?

水の例を続けると、水道水を使用する消費者には、水の使用量そのものが正確に料金として換算され、それを支払います。同様に、サーバーレス課金は非常に正確で、開発者は使用した分に対してのみ支払います。一部のサーバーレスベンダーは、各機能の個々のインスタンスごとに数分の1 秒まで正確な実行時間をカウントして、開発者に課金します。他のプロバイダーは、リクエスト数によって課金します。

ウォーターディスペンサーを使用し、大きなボトルを届けてもらっている消費者も、使用した分だけ支払います。ただし、料金は水量ではなく、届けてもらったボトルの数を計算して支払います。同様に、一部のPaaSベンダーは、使用されたアプリケーションに対してのみ開発者に課金します。ただし、課金はサーバーレスの場合ほど正確ではありません。他のPaaSベンダーは、サービスの月額定額料金を請求します。開発者は通常、どの程度のコンピューティングパワーを支払っているかをカスタマイズできます。しかし、これは事前に決定され、リアルタイムでの使用量の増減には反映されません。

この違いは、必ずしもサーバーレスアーキテクチャが常により手頃な価格であることを意味するわけではありません。水道から水を出しっぱなしにすると料金が非常に高額になるのと同様に、大きくて一定の使用量があり、あまり変動しないWebアプリケーションは、サーバーレスコンピューティングを使用して実行するとコストが高くなる可能性があります。

PaaSアプリケーションとサーバーレスアプリケーションの起動時間の違いは?

上記のように、サーバーレスアプリケーションは、イベントをきっかけにアプリケーション機能が反応し、ほぼ瞬時に起動することができます。PaaSで設計されたアプリケーションもすばやく起動して実行できますが、サーバーレスアプリケーションほど軽量ではなく、起動して実行するのに時間がかかります。ユーザー側から見たレイテンシーを避けるために、PaaSアプリケーションの少なくともいくつかの機能は、ほとんどの時間、または常に実行されている必要があります。

PaaSおよびサーバーレスベンダーが提供するツールは?

一般に、PaaSベンダーは、テストやデバッグ用のツールなどアプリケーションを構築および管理するためのツールを開発者に提供します。サーバーレスアプリケーションは、仮想またはそれ以外の特定のマシン上では実行されず、サーバーレス機能は、サーバーレスベンダーからどのようなツールを提供されようとも、同じように実行する必要がありますが、ベンダーは、アプリケーションの構築とテストのための完璧な環境を提供していません。

ネットワークエッジでサーバーレスアプリケーションを展開できるか?

サーバーレスコードは特定のサーバーでは実行されず、インターネットのどの部分でも実行できます。これにより、サーバレスアプリケーションを、ネットワークエッジのエンドユーザーの非常に近くでリリースすることが可能になり、レイテンシーが大幅に削減されます。サービスワーカーと Cloudflare Workers は、ユーザーの近くで実行されるサーバーレス機能の例です(「サーバーレスJavaScriptの仕組み」を参照してください」)。

PaaSを使用して構築されたアプリケーションをネットワークエッジにリリースできるか?

開発者の観点からみると、PaaSにはサーバーは存在しません。しかし、PaaSはコードがホストされている場所という点でも、サーバーレスコンピューティングとは異なります。PaaSベンダーは、別のベンダーのIaaS(サービスとしてのインフラストラクチャ)サービスを活用するか、独自の物理的なデータセンターを保有できます。その結果、クラウドプラットフォーム上に構築されたアプリケーションは、特定の指定されたマシンでのみ実行可能となり、開発者はエッジでコードを実行してアプリケーションのパフォーマンスを最適化できなくなります。