Django スタートガイド

Google Cloud 上で実行される Django アプリは、Google サービスにも採用されている同じインフラストラクチャで実行され、一般的にスケーラビリティが改善します。

ホスティング プラットフォーム

Google Cloud で Django をデプロイするオプションには以下のものがあります。

Django のデプロイ オプション 使用に適したケース 使用に適さないケース 開始方法
App Engine スタンダード環境
  • 構成を最小限にしたい。
  • サーバーの保守を不要にしたい。
  • 簡単にスケールしたい。
  • バイナリの実行可能ファイルは、App Engine スタンダードの Python 環境ではご利用いただけません。
App Engine スタンダード環境での Django の実行
App Engine フレキシブル環境
  • App Engine の大部分のメリットを享受したい。
  • カスタムの Docker ランタイムが必要。
  • VM 全体を制御(アプリケーションの Dockerk コンテナ外部)
App Engine フレキシブル環境での Django の実行
Cloud Run(フルマネージド)
  • 自己完結型のコンテナ環境での Django
  • App Engine を使用しないサーバーレス
  • 自己完結型の一連のマイクロサービスをきめ細かく制御
  • カスタム ハードウェア(GPU または Kubernetes クラスタなど)が必要。
Cloud Run(フルマネージド)での Django の実行

Cloud Run での Django の実行(Cloud Code for VS Code を使用)

Cloud Run での Django の実行(Cloud Code for IntelliJ を使用)
Google Kubernetes Engine(GKE)
  • マイクロサービス環境で Django コンテナを使用したい。
  • 独自のコンテナベースのプラットフォームを設計するツールキットが必要。
  • デベロッパーがインターネット経由でアプリやサービスをビルドできる、完全な機能を持つプラットフォームおよび環境。コンテナベースのソリューションの場合は、App Engine フレキシブル環境または Cloud Run を検討してください。
Google Kubernetes Engine での Django の実行
Compute Engine
  • VM を使用するコンピューティング インフラストラクチャが必要。
  • Windows VM が必要。
  • 独自のインフラストラクチャの構成が不要なサーバーレス環境が必要。
Google Cloud Marketplace での Django の実行

データベース

Django オブジェクト リレーショナル マッパー(ORM)は、SQL リレーショナル データベースで最適に動作します。新しいプロジェクトを開始する場合は、Cloud SQL を選択することをおすすめします。数回のクリックで、Google により管理およびスケールされる MySQL または PostgreSQL データベースを作成できます。

Compute Engine または別のサービス上のデータベースをご自身で管理する場合は、他の SQL データベースを使用することもできます。

データモデルに対するスケーラビリティや適合性など、NoSQL データベースを使用せざるをえない場合もあります。Django ORM は NoSQL データベースでも使用できますが、ある程度の制限があります。たとえば、Django で表現できるさまざまなデータベース結合は Datastore や MongoDB などの他の NoSQL データベースでサポートされていません。

この打開策として、SQL と NoSQL を組み合わせて、データタイプに応じて異なるデータベースを使用することなどが考えられます。

極めてスケーラブルなマネージド NoSQL ソリューションについては、SQL ソリューションよりスケーラビリティが高い非リレーショナル データベースである Datastore を検討してください。

MongoDB を使用する場合は、Cloud Marketplace を使ってデプロイして独自の管理を行うか、mLab 提供のマネージド MongoDB ホスティング サービスを使用します。

何年もの間、Django ORM を NoSQL ソリューションで動作させる最も一般的な方法は Django non-rel でしたが、このプロジェクトはメンテナンスされていません。Djangae と呼ばれる他のプロジェクトは、Django をフォークすることなく Datastore 向けの Django ORM バックエンドを提供しますが、App Engine でサポートされていません。

キャッシュ

App Engine には組み込みの Memcache サービスが付属します。Memcache システムを Compute Engine にインストールするには、Cloud Marketplace を使用します。Compute Engine または GKE に Memcache システムをインストールするには、Memcached Docker イメージを使用します。同様に、Cloud Marketplace または Redis Docker イメージを使用して Redis をインストールすることもできます。

タスクのキューイング

App Engine には、長時間実行するバックグラウンド ジョブのために組み込みのタスクキュー機能が付属しています。App Engine の外部では、Pub/Sub を使用して Python 用 Pub/Sub タスクキュー(psq)でタスクをキューイングできます。

Cloud Marketplace で使用できるその他の一般的なタスク キューイング オプションとして、RabbitMQKafka などがあります。RabbitMQ および Kafka 用の Docker イメージもあります。