サーバーレスコンピューティングは、使用ベースでバックエンドサービスを提供する方法です。サーバーは引き続き使用されますが、サーバーレスベンダーからバックエンドサービスを取得する会社は、固定量の帯域幅やサーバーの数ではなく、使用量に基づいて課金されます。
この記事を読み終えると、以下のことができるようになります。
記事のリンクをコピーする
サーバーレスコンピューティングは、従量制のバックエンドサービスを提供する方法です。サーバーレスプロバイダーを使用すると、ユーザーは基盤となるインフラストラクチャを気にすることなく、コードを記述してデプロイできます。サーバーレスベンダーからバックエンドサービスを受ける会社は、計算に基づいて課金されます。自動スケーリングを使用したサービスであるため、一定量の帯域幅やサーバーを予約して支払う必要がありません。「サーバーレス」と名付けられてはいますが、物理的サーバーはやはり用いています。開発者が意識しなくてよいというだけです。
Webの黎明期には、Webアプリケーションを構築したい人は誰でも、サーバーの実行に必要な物理ハードウェアを所有する必要がありましたが、これは面倒で費用のかかる作業です。
そして、クラウドコンピューティングの時代が来て、一定数のサーバーや一定量のサーバースペースをリモートでレンタルすることができるようになりました。通常、このように一定単位のサーバースペースをレンタルする開発者や企業は、トラフィックやアクティビティの急増が毎月の上限値を超えてアプリケーションを壊さないように、余裕を持って購入します。つまり、支払った分のサーバースペースの多くが無駄になっているのです。この問題に対処するために、クラウドベンダーは自動スケーリングモデルを導入しましたが、それでも、DDoS攻撃などのありがたくないアクティビティの急増でコストが非常に高くつく可能性があります。
サーバーレスコンピューティングにより、開発者はバックエンドサービスを柔軟な「従量課金」ベースで購入できます。つまり、開発者は使用したサービスに対してのみ料金を支払う必要があります。これは、毎月固定の制限がある携帯電話のデータプランから、実際に使用されるデータの各バイトに対してのみ課金するプランに切り替えるようなものです。
これらのバックエンドサービスを提供するサーバーがまだ存在するため、「サーバーレス」という用語はやや誤解を招く可能性がありますが、サーバースペースとインフラストラクチャの懸念はすべてベンダーが対応します。サーバーレスとは、開発者がサーバーについてまったく心配することなく作業を行えることを意味します。
通常、アプリケーション開発はフロントエンドとバックエンドの2つの領域に分割されます。フロントエンドは、視覚的なレイアウトなど、ユーザーが表示および操作するアプリケーションの一部です。バックエンドは、ユーザーには見えない部分です。これには、アプリケーションのファイルが存在するサーバーと、ユーザーデータとビジネスロジックが保持されるデータベースが含まれます。
たとえば、コンサートのチケットを販売するWebサイトがあるとします。ユーザーがWebサイトのアドレスをブラウザーのウィンドウに入力すると、ブラウザーはバックエンドサーバーへリクエストを送信し、サーバーはそれに応答してWebサイトのデータを返してきます。すると、ユーザーのデバイスに、テキストや画像、ユーザーが入力するためのフォームフィールドなどのコンテンツを掲載したWebサイトのフロントエンドが表示されます。ユーザーはフロントエンドのフォームフィールドの1つとやりとりし、お気に入りのミュージシャンを検索することができます。ユーザーが「送信(submit)」をクリックすると、バックエンドへの次のリクエストがトリガーされます。バックエンドのコードがデータベースをチェックして、この名前の演者が存在するか、存在する場合は次の公演の日時とチケット残数を確認します。次に、そのデータがバックエンドからフロントエンドに送られ、フロントエンドはユーザーにわかる形で結果を表示します。同様に、ユーザーがアカウントを作成してチケット購入代金の支払い情報を入力すると、フロントエンドとバックエンドの間でさらなる往復通信が行われます。
たいていのサーバーレスプロバイダーは、顧客にデータベースとストレージサービスを提供し、その多くはCloudflare WorkersのようなFunction-as-a-Service(FaaS)プラットフォームも持っています。開発者はFaaSを使って、ネットワークエッジで小さなコード断片を実行することができます。さらに、モジュラー型のアーキテクチャを構築して、対応するバックエンドの保守にリソースを費やすことなく、拡張性に優れたコードベースを作成することができます。FaaSの詳細はこちら >>
サーバーレスコンピューティングのメリットについての詳細はこちら
サーバーレスコンピューティングとよく混同される2つのテクノロジーがあります。Backend-as-a-Service(BaaS:サービスとしてのバックエンド)とPlatform-as-a-Service(PaaS:サービスとしてのプラットフォーム)です。これらのモデルはサーバーレスと類似点はあるものの、サーバーレスの要件に必ずしも該当しません。
Backend-as-a-Service(BaaS)は、クラウドプロバイダーがデータストレージなどのバックエンドサービスを提供し、開発者がフロントエンドコードの記述に専念できるようにするサービスモデルです。ただ、サーバーレスアプリケーションはイベント駆動型でエッジで実行されますが、BaaSアプリケーションはそれらの要件のいずれかを満たさない場合があります。BaaSの詳細はこちら >>
Platform-as-a-Service(PaaS)は基本的に、開発者がアプリケーションの開発とデプロイメントに必要なツールすべて(オペレーティングシステムやミドルウェアを含めて)をクラウドプロバイダーからレンタルするというモデルです。しかし、PaaSアプリケーションはサーバーレスアプリケーションほど容易に拡張できません。また、PaaSは必ずしもエッジで実行されず、サーバーレスアプリケーションにはない感知可能な起動遅延がよくあります。PaaSの詳細はこちら >>
Infrastructure-as-a-service(IaaS:サービスとしてのインフラストラクチャ)は、顧客に代わってインフラをホストするクラウドベンダーをさす総称です。IaaSのプロバイダーは、サーバーレス機能を提供する場合もありますが、この2つの用語は同義ではありません。IaaSの詳細はこちら >>
サーバーレスコンピューティングは、その弱点の克服策をサーバーレスプロバイダーが考案するにつれて、今後も進化を遂げていきます。そうした弱点の1つがコールドスタートです。
通常、あるサーバーレス機能がしばらく使われないと、プロバイダーが過剰プロビジョニングを避けてエネルギーを節約するためにその機能をシャットダウンしてしまいます。ユーザーが次にその機能を呼び出すアプリケーションを実行した時、サーバーレスプロバイダーはその機能を新たに起動してホスティングを開始します。この起動時間がかなりの追加遅延となるのが、「コールドスタート」と呼ばれる現象です。
機能がいったん起動して実行されれば速くなり、その後のリクエストはすばやく処理されます(「ウォームスタート」)。ただ、その機能をまたしばらく使わないでいると、再び休眠してしまいます。つまり、その機能を次にリクエストする人がコールドスタートを経験するということです。つい最近まで、コールドスタートはサーバーレス機能を使うために必要な妥協だと考えられていました。
Cloudflare Workersは、サーバーレス機能を事前に(TLSハンドシェイク中に)起動することで、この問題を解決しました。Workersの機能はエッジですばやく起動します。ハンドシェイクの完了に必要な時間より短い時間で立ち上がるため、コールドスタートの全くないFaaSプラットフォームを提供できるのです。Cloudflare Workersの導入に関しては、開発者向けドキュメントをご覧ください。
サーバーレスの弱点が一つひとつ解決されていき、エッジコンピューティングの人気が高まるにつれて、サーバーレスアーキテクチャがさらに普及していくと、当社では予想しています。
セールス
サーバーレスについて