開始使用 Django

在 Google Cloud 上執行的 Django 應用程式採用與所有 Google 產品相同的基礎架構,因此通常可提升擴充性。

託管平台

如要在 Google Cloud 中部署 Django,您可以選用以下幾種方式:

Django 部署選項 適用情況 不適用情況 開始使用
App Engine 標準環境
  • 希望將設定需求減至最低
  • 不想維護伺服器
  • 想要輕鬆擴充
  • 您需要 App Engine 標準 Python 環境中無法使用的二進位執行檔
App Engine 標準環境中的 Django
App Engine 彈性環境
  • 想要 App Engine 大部分優點
  • 可以自訂 Docker 執行階段
  • 控制整個 VM (應用程式 Docker 容器以外範圍)
App Engine 彈性環境中的 Django
Cloud Run (全代管)
  • 在獨立容器環境中的 Django
  • 沒有 App Engine 的無伺服器
  • 對一系列獨立的微服務進行精細控管
  • GPU 或 Kubernetes 叢集等自訂硬體
在 Cloud Run 中執行 Django (全代管)

透過 Cloud Code for VS Code 在 Cloud Run 中使用 Django

透過 Cloud Code for IntelliJ 在 Cloud Run 中使用 Django
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 解決方案,建議您使用 Datastore,這個非關聯資料庫在擴充方面的表現比 SQL 解決方案好。

如果您選擇使用 MongoDB,可以透過 Cloud Marketplace 部署並自行管理,也可以使用 mLab 提供的代管 MongoDB 託管服務。

就搭配使用 Django ORM 與 NoSQL 解決方案的方式而言,多年來,最熱門的做法是使用 Django non-rel,但是此專案並未獲得維護。另一個名為 Djangae 的專案則提供適用於 Datastore 的 Django ORM 後端,您不必建立 Django 分支,但是 App Engine 不支援此專案。

快取

App Engine 內建 Memcache 系統。如要在 Compute Engine 上安裝 Memcache 系統,您可以使用 Cloud Marketplace。如要在 Compute Engine 或 GKE 上安裝 Memcache 系統,您可以使用 Memcached Docker 映像檔。同樣地,您可以使用 Cloud MarketplaceRedis Docker 映像檔安裝 Redis。

工作佇列

App Engine 內建工作佇列功能,可長時間執行背景工作。除了 App Engine 之外,您可以使用 Pub/Sub,透過適用於 Python 的 Pub/Sub 工作佇列 (psq) 將工作排入佇列。

Cloud Marketplace 提供的其他熱門工作佇列選項包括 RabbitMQKafka,其中也有 RabbitMQ 和 Kafka 適用的 Docker 映像檔