App Engine にデータやファイルを保存するには、Google Cloud サービスを使用できます。また、ご使用の言語でサポートされていて、App Engine インスタンスからアクセスできるストレージ サービスであれば、他のどのサービスでも使用できます。これらのサードパーティ データベースは、別のクラウド プロバイダでホストすることも、オンプレミスでホストすることも、サードパーティのベンダーが管理することも可能です。
Google Cloud のストレージ サービス
Python 2 スタンダード環境で実行される App Engine アプリには、次のいずれかの Google Cloud ストレージ サービスをおすすめします。
名前 | 構造 | 整合性 | 費用 |
---|---|---|---|
Datastore モードの Firestore | スキーマレス(NoSQL) | グローバル クエリの実行時以外は強整合性 | Datastore モードでは、一定の割り当て量を無料で使用できます(1 日の使用量に上限があります)。有料アカウントの場合には、保存、読み取り、書き込みオペレーションを無制限で行うことができます。詳細については、データストアの割り当てをご覧ください。 |
Cloud SQL for MySQL または Cloud SQL for PostgreSQL |
リレーショナル | 強整合性 | Google Cloud SQL には、パッケージと従量制の 2 つの料金プランがあります。詳細については、Cloud SQL の価格表をご覧ください。 |
Cloud Storage | ファイルと関連のメタデータ(クラウド上のファイル ストレージ) | バケットやオブジェクトのリストを取得するリスト オペレーションの実行時を除いて強整合性 | Google Cloud Storage の呼び出しは課金されません。ただし、Google Cloud Storage にデータを保存した場合は、通常の Google Cloud Storage データ保存料金がかかります。 Cloud Storage の料金については、Cloud Storage の料金表をご覧ください。 |
これらの方法は組み合わせて使用できます。たとえば、同じアプリケーションで Cloud SQL データベースに情報を保存し、Cloud Storage バケットにファイルを保存できます。
Google Cloud ストレージ サービスの完全なリストについては、Cloud Storage プロダクトのページをご覧ください。
他のクラウド プロバイダ
App Engine アプリは、外部のデータベース サーバーと内部のファイアウォールが接続を受け入れるように適切に構成されていれば、他のパブリック クラウドでホストされる外部データベースに接続できます。App Engine アプリがインターネット経由で接続する際は、その外部サービスのパブリック IP アドレスを使用します。
サードパーティ ベンダーが管理するデータベース
MongoDB 用の mLab、Redis Labs のホスト型 Redis キャッシュ機能など、多くのベンダーがマネージド データベース サービスを提供しています。これらのベンダーは、データベースのホスティング、構成、メンテナンスを受け持ちます。App Engine はそれらの外部サービスにインターネット経由で接続できますが、その際は他のパブリック クラウドがそれらのサービスにパブリック IP アドレスを使用して接続するのと同じ方法を使用します。
オンプレミス
既存のオンプレミス データベースを App Engine アプリからアクセスできるようにするには、内部ネットワークとファイアウォールを構成してデータベースにパブリック IP アドレスを提供するか、または VPN を使用して接続します。
本番環境に関する考慮事項
App Engine は、さまざまな指標に基づいて、自動的にアプリケーションを水平スケールするよう構成できます。ウェブ アプリケーションとは異なり、データベースはスケールに対応するために、大規模な変更を必要とすることがよくあります。本番環境のアプリケーションでは、トラフィックが急増すると、App Engine からのデータ量がデータベースの容量を急激に上回る場合があります。データベースを構成してデプロイする際は、予想される平均トラフィックの負荷とトラフィック急増時の負荷を考慮に入れる必要があります。