App Engine にデータやファイルを保存するには、Google Cloud サービスを使用できます。また、ご使用の言語でサポートされていて、App Engine インスタンスからアクセスできるストレージ サービスであれば、他のどのサービスでも使用できます。サードパーティ データベースは、Compute Engine でホストされているものでも、別のクラウド プロバイダでホストされているものでもかまいません。またオンプレミスでホストされているものや、サードパーティのベンダーが管理しているデータベースも使用できます。
Google Cloud のストレージ サービス
フレキシブル環境で実行される App Engine アプリには、次のいずれかの Google Cloud ストレージ サービスをおすすめします。
- Datastore モードの Firestore。データを NoSQL データベースに保存します。Datastore モードの Firestore は、.NET ランタイムを除くすべてのランタイムで使用できます。
- Cloud SQL for MySQL。データを MySQL データベースに保存します。
- Cloud SQL for PostgreSQL。データを PostgreSQL データベースに保存します。
- Cloud Storage。ランタイム環境内でファイルの読み取りと書き込みを行います。さらに、動画や、画像をはじめとする静的コンテンツなどの静的ファイルを保存して提供できます。
Google Cloud ストレージ サービスの完全なリストについては、Cloud Storage プロダクトのページをご覧ください。
Compute Engine でのホスティング
App Engine インスタンスは、Compute Engine インスタンスと同じプライベート内部ネットワークの一部です。App Engine アプリは、同じプロジェクト内の Compute Engine でホストされているサービスと通信するときには、公共のインターネットを経由せずに通信できます。多くの場合、アプリはインスタンスの内部 IP アドレスを使用してサービスに接続するので、外部のパブリック IP アドレスをデータベースに割り当てる必要はありません。必要な場合は、パブリック IP アドレスを割り当てると、Google Cloud の外部からデータベースにアクセスできるようになります。
多くの一般的なサードパーティ データベース(Redis、MongoDB、PostgreSQL、Cassandra、Hadoop、Microsoft SQL Server など)は、Google Cloud Marketplace を使用することで、短時間で Compute Engine にデプロイできます。MySQL や PostgreSQL のデプロイの詳細については、以下のガイドをご覧ください。
他のクラウド プロバイダ
App Engine アプリは、外部のデータベース サーバーと内部のファイアウォールが接続を受け入れるように適切に構成されていれば、他のパブリック クラウドでホストされる外部データベースに接続できます。App Engine アプリがインターネット経由で接続する際は、その外部サービスのパブリック IP アドレスを使用します。
サードパーティ ベンダーが管理するデータベース
MongoDB 用の mLab、Redis Labs のホスト型 Redis キャッシュ機能など、多くのベンダーがマネージド データベース サービスを提供しています。これらのベンダーは、データベースのホスティング、構成、メンテナンスを受け持ちます。App Engine はそれらの外部サービスにインターネット経由で接続できますが、その際は他のパブリック クラウドがそれらのサービスにパブリック IP アドレスを使用して接続するのと同じ方法を使用します。
オンプレミス
既存のオンプレミス データベースを App Engine アプリからアクセスできるようにするには、内部ネットワークとファイアウォールを構成してデータベースにパブリック IP アドレスを提供するか、または VPN を使用して接続します。
Cloud VPN を設定すると、App Engine アプリからオンプレミスのネットワークにアクセスでき、データベース サーバーを公共のインターネットに直接公開せずに済みます。App Engine と Compute Engine は同じネットワーク インフラストラクチャを使用しているので、VPN 接続を利用すれば、データベース サーバーの内部 IP アドレスを使用して App Engine アプリとオンプレミスのデータベースとの接続を確立できます。
本番環境に関する考慮事項
App Engine は、さまざまな指標に基づいて、自動的にアプリケーションを水平スケールするよう構成できます。ウェブ アプリケーションとは異なり、データベースはスケールに対応するために、大規模な変更を必要とすることがよくあります。本番環境のアプリケーションでは、トラフィックが急増すると、App Engine からのデータ量がデータベースの容量を急激に上回る場合があります。データベースを構成してデプロイする際は、予想される平均トラフィックの負荷とトラフィック急増時の負荷を考慮に入れる必要があります。