デベロッパー

サーバーレスとフルマネージド: その違いとは?

Trimmed Banner

※この投稿は米国時間 2022 年 1 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウドでアプリケーションを構築する場合、最初に決めなければならないことの一つは、サーバーレスとフルマネージドのどちらのタイプのサービスを使用するかです。これらの用語の定義はあまり明確ではなく、似ているが違うものとして使われることもあれば、同じものとして使われることもあります。この記事では、サーバーレスとフルマネージドの違いに関する私の見解をお伝えします。

Serverless vs Fully Managed Pandas
クリックして拡大

サーバーレス 

一般に、サーバーレスの考え方は次のとおりです。

「作ったアプリケーションやサービスがどこで実行されるかは特に気にしません。ユーザーが使いたいときに確実にアクセスできることが重要です。」

  • マシンが見えない - アプリケーションがどのマシンで実行されているかは、開発者からは見えません。開発者がマシンを構成することもできません。ほとんどの場合、マシンはリクエストを実行する際に作成され、実行後にはなくなります。たとえば、BigQuery でクエリを実行する場合、そのクエリの計算と応答の提供に使用されたマシンの数を知ることはできません。

  • サーバー管理が不要 - サーバーの管理もスケーリングも一切不要です。たとえば、サーバーレスのデータベースである Firestore の場合、開発者はデータを保存するだけでよく、サーバーも、ロケーションも、データ レプリケーションも、すべて自動的に管理されます。  

  • アプリケーションの使用状況に応じた支払い - 通常は、変換、リクエスト、または使用量に応じた支払いになります。この点はサービスごとに多少異なります。たとえば、Cloud Functions の料金は関数の実行時間、関数の呼び出し回数、関数に対してプロビジョニングするリソースの数によって決まり、Vision API の料金は画像単位、またその画像に適用する機能単位で決まります。

フルマネージド

一般に、フルマネージドの考え方は次のとおりです。

「提供するサービスでは基盤となるリソースの細かい制御が必要なので、サービスがどこでどのように実行されるかは重要です。また、追加の制御機能はアプリケーションやチームにとってメリットとなります。」

  • マシンが見え、制御できる - アプリケーションの実行に使用されるマシンの数を選択できます。たとえば、Google Kubernetes Engine を構成する場合、ノードの種類と数や Pod の数などを指定してクラスタを作成できます。

  • 管理と自動化はおまかせ  - フルマネージドとは、マシンをセットアップする必要がなく、管理、パッチ適用、バックアップのほとんどが自動的に処理されることを意味します。追加の制御機能により、簡単な設定を行うことで、どのようにスケーリングするか、高可用性(HA)および障害復旧(DR)の状況をどのように処理するかを開発者が決定できます。

  • マシンの実行時間に対する支払い - 支払いは、マシンを実行した時間の長さと、アプリケーションが使用したその他のリソースに応じて決まります。つまり、アプリケーションがトラフィックをまったく受信していなくても、マシンが実行されていれば料金が発生します。たとえば、Compute Engine の料金は、使用するマシンのタイプ、vCPU、メモリと、マシンの実行が継続される時間の長さによって決まります。

今回の記事が、今後クラウドでサービスを選択する際の判断材料になれば幸いです。ご質問やご意見、あるいは議論のお誘いは Twitter @pvergadia または LinkedIn までご連絡ください。


- Google デベロッパー アドボケイト Priyanka Vergadia