BaaSとは?|サービスとしてのバックエンド対サーバーレス

サービスとしてのバックエンド(BaaS)により、開発者はアプリケーションのフロントエンドに集中し、バックエンドサービスを構築またはメンテナンスせずに活用できます。BaaSとサーバーレスコンピューティングにはいくつかの類似点があり、多くのプロバイダーが両方を提供していますが、2つのモデルにはいくつかの違いがあります。

Share facebook icon linkedin icon twitter icon email icon

サービスとしてのバックエンド

学習目的

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

  • BaaSの定義
  • MBaaSの定義
  • サーバーレスコンピューティングとBaaSの違いを理解
  • BaaSとPaaSの違いを理解

BaaSとは?

サービスとしてのバックエンド(BaaS)は、開発者がWebまたはモバイルアプリケーションの舞台裏の側面をすべて外部委託することで、フロントエンドの記述とメンテナンスのみを行う必要があるクラウドサービスモデルです。 BaaSベンダーは、ユーザー認証、データベース管理、リモート更新、プッシュ通知(モバイルアプリの場合)、クラウドストレージやホストなど、サーバー上で行われるアクティビティ用に事前に作成されたソフトウェアを提供します。

Backend as a Service (BaaS)

BaaSプロバイダーを使用せずにアプリケーションを開発することは、映画を監督することのように考えてください。映画監督は、実際に映画に登場するシーンを撮影し監督することに加えて、カメラクルー、照明、セット建設、衣装、俳優キャスティング、制作スケジュールの監督または管理を担当します。ここで、すべての舞台裏の活動を担当するサービスがあり、監督がしなければならないことは、直接現場を撮影することだけだったと想像してください。それがBaaSの考え方です。ベンダーは「照明」と「カメラ」(またはサーバー側*機能)を管理するため、監督(開発者)がエンドユーザーが見たり体験したりする「アクション」にのみ集中できるようにします。

BaaSにより、開発者はフロントエンドアプリケーションコードの記述に集中できます。 BaaSベンダーが提供するAPI(プログラムが別のプログラムのリクエストを作成する方法)およびSDK(ソフトウェアを構築するためのキット)を介して、バックエンド自体を構築せずに、必要なすべてのバックエンド機能を統合できます。また、アプリケーションを実行し続けるために、サーバー、仮想マシン、またはコンテナを管理する必要もありません。その結果、モバイルアプリケーションとWebアプリケーション(単一ページアプリケーションを含む)をより迅速に構築および起動できます。

*サーバー側とは、インターネットクライアントサーバーモデルのクライアントではなく、サーバー上でホストされている、またはサーバー上で実行されるすべてのことを指します。

サービスとしてのモバイルバックエンド(MBaaS)とは?

サービスとしてのモバイルバックエンド(MBaaS)は、モバイル向けアプリの構築専用のBaaSです。 BaaSとMBaaSは基本的に置き換えることが可能な用語であると考えるソースもありますが、モバイルアプリケーションの構築に必ずしもBaaSサービスを使用する必要はありません。

BaaSには何が含まれていますか?

BaaSプロバイダーは、多くのサーバー側機能を提供します。例:

  • データベース管理
  • クラウドストレージ(ユーザー生成コンテンツ用)
  • ユーザー認証
  • プッシュ通知
  • リモート更新
  • ホスティング
  • その他のプラットフォームまたはベンダー固有の機能。たとえば、FirebaseはGoogle検索のインデックス作成を提供します

BaaSおよびMBaaSプロバイダーには、Google FirebaseおよびMicrosoft Azureが含まれます。

BaaSとサーバーレスコンピューティングの違いとは?

開発者はアプリケーションコードを記述するだけで、バックエンドについては考えないため、BaaSとサーバーレスコンピューティング間にいくつかのオーバーラップがあります。さらに、多くのBaaSプロバイダーはサーバーレスコンピューティングサービスも提供しています。ただし、BaaSと真のサーバーレスアーキテクチャを使用して構築されたアプリケーションには、運用上の大きな違いがあります。

アプリケーションの構築の仕組み

サーバーレスアプリケーションのバックエンドは機能に分割され、それぞれがイベントに応答し、1つのアクションのみを実行します( FaaSとは? を参照してください)。一方、BaaSサーバー側の機能は、プロバイダーが望むように構築されており、開発者は、アプリケーションのフロントエンド以外のコーディングについて心配する必要はありません。

コード実行時

サーバーレスアーキテクチャはイベント駆動型であり、イベントに応じて実行されます。各関数は、特定のイベントによってトリガされた場合にのみ実行され、それ以外の場合は実行されません。 BaaSで構築されたアプリケーションは通常、イベント駆動型ではありません。つまり、より多くのサーバーリソースが必要です。

コードの実行場所

サーバーレス機能は、他のアプリケーションと通信している限り、どの機械のどの場所からでも実行できます。これにより、ネットワークエッジでコードを実行することにより、アプリケーションのアーキテクチャにエッジコンピューティングを組み込むことができます。 BaaSは、どこからでも、いつでもコードを実行するように必ずしも設定されているわけではありません(ただし、プロバイダーによって異なります)。

アプリケーションのスケーリング方法

スケーラビリティは、サーバーレスアーキテクチャと他のタイプのアーキテクチャを区別する最大の差別化要因の1つです。サーバーレスコンピューティングでは、使用量の増加に応じてアプリケーションが自動的に拡大します。クラウドベンダーのインフラストラクチャは、必要に応じて各機能の一時的なインスタンスを起動します。 BaaSプロバイダーがサーバーレスコンピューティングも提供し、開発者がこれをアプリケーションに組み込む場合を除き、BaaSアプリケーションはこのように拡張するように設定されていません。

BaaSとサービスとしてのプラットフォーム(PaaS)の違いとは?

PaaSは、開発者がアプリケーションを構築するためのクラウド経由のプラットフォームを提供します。サーバーレスコンピューティングやBaaSと同様に、サービスとしてのプラットフォーム(PaaS)により、開発者がアプリケーションバックエンドを構築および管理する必要がなくなります。ただし、PaaSには、プッシュ通知やユーザー認証などのビルド済みのサーバー側アプリケーションロジックは含まれていません。 PaaSは開発者により多くの柔軟性を提供し、BaaSはより多くの機能を提供します。