以前のバンドル サービス用の Namespaces API

Google App Engine の Namespaces API を使用すると、Google App Engine のデータを簡単に区分けできます。この API は名前空間マネージャーという新しいパッケージを経由して実装され、名前空間に対応した特定の API に組み込まれます。

名前空間マネージャーで名前空間を設定すると、これらの API は現在の名前空間を取得し、それをグローバルに使用します。名前空間はローカルで明示的に宣言することもできますが、データ漏洩やその他のバグの原因になることがあるため、明示的に名前空間を宣言するときは注意が必要です。App Engine リクエストはいずれも任意の名前空間にアクセスでき、当該アプリケーションは引き続き、アクセス制御ポリシーをすべての名前空間にわたって適用します。

Namespaces API は、幅広いアプリケーションの構築に使用できます。ここでは、この API が最もよく利用されるアプリケーションの 1 つであるマルチテナント アプリケーションについて説明します。

マルチテナンシーについて

マルチテナンシーとは、リモート サーバーで実行される 1 つのアプリケーション インスタンスで複数のクライアント組織(テナント)にサービスを提供するソフトウェア アーキテクチャのことを指します。

マルチテナント アーキテクチャを使用すると、テナントの管理やプロビジョニングがシンプルになります。ユーザー エクスペリエンスをより合理的にカスタマイズできるほか、各種のデータのサイロを単一のデータベース スキーマに集約することもできます。これにより、アプリケーションの拡張性が向上し、拡張時のコスト効果も高まります。すべてのテナントで同じデータベース スキーマを共有するため、テナント間でのデータの分離や分析も簡単です。それぞれのユーザー グループに対して、1 つの効率的なアプリケーションにラップされたカスタムのコンテンツが表示されます。

Namespaces API を使用したマルチテナント アプリケーションの構築

Namespaces API を使用すると、各テナントに固有の名前空間文字列を指定するだけで、データをテナント間で簡単に分割できます。必要な作業は、名前空間マネージャーを使用して各テナントの名前空間を設定することだけです(個々のリクエストに対して明示的に設定する必要はありません)。これにより、名前空間に対応した API で常に現在の名前空間がデフォルトで使用されるようになります。

Namespaces API は Google Workspace と統合されており、Google Workspace ドメインを現在の名前空間として使用できます。Google Workspace では所有している任意のドメインにアプリをデプロイできるため、Google Workspace アカウントにリンクされているすべてのドメインに簡単に固有の名前空間を設定できます。

マルチテナント アプリケーションを設計する際は、名前空間でデータ漏洩が発生しないように注意が必要です。詳しくは、データ漏洩の防止をご覧ください。

名前空間を使用する App Engine API

現在、App Engine では次の API で名前空間がサポートされています。

名前空間を使用したサンプル プロジェクト

名前空間を使用したサンプルのゲストブック アプリケーションが 2 つ用意されています。

Namespace API のその他の用途

Namespaces API には、App Engine でマルチテナンシーを有効にする以外にも次のような用途があります。

  • ユーザー情報を区分けする
  • 管理データをアプリケーション データから切り離す
  • テスト用と本番用に個別のデータストア インスタンスを作成する
  • 単一の App Engine インスタンスで複数のアプリを実行する