網站託管

Last reviewed 2024-06-11 UTC

本文將說明如何在 Google Cloud上託管網站。Google Cloud 提供健全、彈性、可靠且可擴充的平台,可用於提供網站服務。Google 打造 Google Cloud 所用的基礎架構,與 Google 用於 Google.com、YouTube 和 Gmail 等網站內容的基礎架構相同。您可以根據個人需求,選擇最適合的基礎架構類型與設計,供應自身網站內容。

如果您符合以下情況,這篇文章可能對您相當實用:

  • 您已充分瞭解如何建立網站,且過去曾部署並執行提供網路服務的基礎架構。
  • 您正在評估是否要將網站遷移至 Google Cloud,還有遷移的方式。

如果您要建構簡單的網站,請考慮使用 Google 協作平台,這是結構化 Wiki 和網頁建立工具。詳情請參閱協作平台說明

做出選擇

如果您是初次使用 Google Cloud,建議先從您熟悉的技術著手。舉例來說,如果您目前使用硬體伺服器或虛擬機器 (VM) 來託管網站,無論是透過其他雲端供應商或是使用自己的硬體來進行,Compute Engine 都可以提供您熟悉的模式。如果您偏好無伺服器運算Cloud Run 可能是您的好選擇。如果您使用 Heroku 或 Engine Yard 等平台式服務 (PaaS) 產品,App Engine 可能就是最好的起點。

在您熟悉 Google Cloud之後,便可以探索 Google Cloud 提供的豐富產品和服務。舉例來說,如果您一開始就使用 Compute Engine,可以選擇使用 Google Kubernetes Engine (GKE) 來強化網站的功能,或將部分或所有功能遷移至 App Engine 和 Cloud Run。

下表統整列出 Google Cloud提供的託管選項:

選項 產品 資料儲存 負載平衡 擴充性 記錄和監控
靜態網站

Cloud Storage

Firebase 代管

Cloud Storage 值區

HTTP(S) (選用)

自動

Cloud Logging

Cloud Monitoring

虛擬機器 Compute Engine

Cloud SQL、Cloud Storage、Firestore 和 Bigtable,或是使用其他外部儲存空間供應商。

硬碟式永久磁碟 (又稱為「標準永久磁碟」) 及固態永久磁碟 (SSD)。

HTTP(S)

TCP Proxy

SSL Proxy

IPv6 終止功能

網路

跨地區

內部

透過代管執行個體群組自動執行

Cloud Logging

Cloud Monitoring

監控主控台

容器 GKE 類似 Compute Engine,但與永久磁碟互動的方式不同

網路

HTTP(S)

叢集自動配置器

Cloud Logging

Cloud Monitoring

監控主控台

無伺服器

Cloud Run

Google Cloud Cloud SQL、Firestore、Cloud Storage 和可存取的第三方資料庫等服務

HTTP(S)

由 Google 管理

由 Google 管理

Cloud Logging

Cloud Monitoring

監控主控台

代管平台

App Engine

Google Cloud 服務,例如 Cloud SQL、Firestore、Cloud Storage 和可存取的第三方資料庫

HTTP(S)

由 Google 管理

由 Google 管理

Cloud Logging

Cloud Monitoring

監控主控台

本文可以協助您瞭解在 Google Cloud 上可使用哪些主要技術來提供網路代管服務,並簡單介紹這些技術的運作原理。本文提供完整說明文件、教學課程和解決方案文章的連結,這些文章可協助您準備好繼續進行時,獲得更深入的瞭解。

瞭解費用的計算方式

由於各種選擇方案存在許多變數,個別實作情形也不同,因此本文不提供有關費用的具體建議。如要瞭解 Google 對於 Google Cloud的計價方式原則,請參閱定價頁面。如要瞭解個別產品的計價方式,請參閱「產品價格」一節。您也可以使用Pricing Calculator 估算自己的 Google Cloud 使用量。您可以針對想要使用的服務提供詳細資料,然後查看價格的估算結果。

設定網域名稱服務

通常,您會想為自己的網站註冊網域名稱。您可以使用公開網域名稱註冊商,為您的網站註冊專屬的名稱。如果您想完全掌握自己的網域名稱系統 (DNS),則可以使用 Cloud DNS 做為您的 DNS 供應商。Cloud DNS 說明文件提供快速入門導覽課程,可協助您迅速上手。

如果您要使用現有的 DNS 供應商,通常需要建立幾筆記錄給該供應商。針對如 example.com 的網域名稱,您必須建立 A 記錄提供給 DNS 供應商。針對 www.example.com 子網域,您可以為 www 建立 CNAME 記錄,將其指向 example.com 網域。A 記錄會將主機名稱對應至 IP 位址。CNAME 記錄會為 A 記錄建立別名。

如果您的網域名稱註冊商也是您的 DNS 供應商,通常您只須完成這些步驟即可。如果註冊商和 DNS 供應商不同,請確認網域名稱註冊商確實將正確的名稱伺服器連結至您的網域。

變更 DNS 之後,記錄更新可能需要一些時間才能傳播完畢,實際的時間長度取決於區域中的存留時間 (TTL) 值。如果這是新的主機名稱,變更很快會生效,因為 DNS 解析器並沒有快取之前的值,並且會聯繫 DNS 供應商以取得轉送要求的必要資訊。

託管靜態網站

透過 HTTP(S) 提供網站內容的最簡單方式,就是託管「靜態網頁」。靜態網頁通常是使用 HTML 撰寫而成,所以提供的內容固定不變。如果您的網站網頁類似於網誌文章或小型企業網站的網頁,在發布之後鮮少變更,則適合使用靜態網站。您可以使用靜態網頁進行廣泛的應用,但是如果您的網站必須透過伺服器端程式碼與使用者進行全面的互動時,則您應考慮採取本文所討論的其他選項。

透過 Cloud Storage 託管靜態網站

如果要在 Cloud Storage 託管靜態網站,您需要建立 Cloud Storage 值區,接著上傳內容,然後測試您的新網站。您可以直接從 storage.googleapis.com 提供資料,也可以驗證自己的網域擁有權,然後使用該網域名稱。

您可以使用自選的方式建立靜態網頁。例如,您可以使用 HTML 和 CSS 親自撰寫網頁,您可以使用「靜態網站產生器」(例如 JekyllGhostHugo) 建立內容。靜態網站產生器不但可讓您使用 Markdown 撰寫內容,同時還提供範本和工具,讓您可以建立靜態網站。網站產生器一般會提供本機網路伺服器,方便您用來預覽內容。

在您的靜態網站運作之後,您可以視需要使用任何程序來更新靜態網頁。這類程序可以相當簡單明瞭,就如同將更新頁面手動複製到值區一般。或者,您也可以選擇採用更自動化的方法,例如將內容儲存在 GitHub,然後使用 Webhook 執行更新值區的指令碼。而更為先進的系統可能會使用持續整合/持續推送軟體更新 (CI/CD) 工具 (如 Jenkins),來更新值區中的內容。Jenkins 有個 Cloud Storage 外掛程式,可提供 Google Cloud Storage Uploader 建構後步驟,以便將建構成果發布到 Cloud Storage。

如果您的網頁應用程式必須提供靜態內容或使用者上傳的靜態媒體,使用 Cloud Storage 來託管和提供內容的方式,不僅兼具成本效益與效率,同時也可減少傳送至您網頁應用程式的動態要求數量。

此外,Cloud Storage 可以直接接受使用者提交的內容。這項功能可讓使用者不需要使用 Proxy 連線到您的伺服器,就能以安全的方式直接上傳大型媒體檔案。

如果要讓您的靜態網站發揮最佳效能,請參閱 Cloud Storage 的最佳做法

如需詳細資訊,請參閱以下頁面:

透過 Firebase 代管功能託管靜態網站

Firebase 代管功能可為您的網路應用程式提供快速又安全的靜態託管服務。透過 Firebase 代管,只要一個指令,即可部署網路應用程式和靜態內容到全球內容傳遞聯播網 (CDN)。

下列為使用 Firebase 代管的好處:

  • Firebase 代管內建零設定 SSL,而且您可以免費在自訂網域上佈建 SSL 憑證。
  • 您的所有內容都會透過 HTTPS 提供。
  • 您的內容會從世界各地的 CDN 邊緣伺服器傳送給使用者。
  • 只要使用 Firebase CLI,就能在幾秒鐘內啟動並執行您的應用程式。請使用指令列工具將部署目標新增到建構程序中。
  • 您可以取得發布管理功能,例如新資產的整體部署作業、完整的版本管理功能,以及單鍵執行復原程序。
  • Firebase 代管提供對單頁應用程式很有用的設定,而該設定對其他較類似應用程式的網站也很實用。
  • Firebase 代管可與其他的 Firebase 功能完美搭配運作。

如需詳細資訊,請參閱以下頁面:

搭配 Compute Engine 使用虛擬機器

針對基礎架構式服務 (IaaS) 用途, Google Cloud 提供 Compute Engine。Compute Engine 提供穩健的運算基礎架構,但您必須選擇及設定所要使用的平台元件。有了 Compute Engine,就必須由您負責設定、管理及監控系統。Google 會確保資源可用、可靠且隨時就緒供您使用,但資料的佈建及管理仍由您決定。此處的優點是,您能夠完全掌控系統,並擁有無限的彈性。

無論您想要哪一種網站代管系統,幾乎都可以使用 Compute Engine 來設計及部署。您可以使用稱為執行個體的 VM 來建構應用程式,就像您有自己的硬體基礎架構一樣。Compute Engine 提供各種機器類型,讓您可以根據需求和預算來自訂設定。您可以選擇自己偏好的作業系統、開發堆疊、程式語言、架構、服務及其他軟體技術。

使用 Google Cloud Marketplace 自動設定

部署完整的網路代管堆疊最簡單的方式,就是使用 Google Cloud Marketplace。只要點選幾下,就可以透過 Google 點擊部署或 Bitnami,針對 100 多個已完全實作的解決方案中的任一項進行部署。

Cloud Marketplace

例如,您可以透過 Cloud Marketplace 設定 LAMP 堆疊WordPress。這套系統只需要幾分鐘的時間,便可在單一執行個體上部署完整的工作軟體堆疊。在部署前,Cloud Marketplace 會顯示網站執行作業的預估費用,並清楚說明會為您安裝哪些軟體元件版本,讓您可以透過變更元件執行個體名稱、選擇機器類型和磁碟大小等方式自訂設定。完成部署之後,您可以完全控管 Compute Engine 執行個體、其設定以及軟體。

手動設定

您也可以手動在 Compute Engine 建立基礎架構,無論是從頭開始建構設定,還是在 Google Cloud Marketplace 部署上進行建構皆可。舉例來說,您可能想使用 Cloud Marketplace 未提供的軟體元件版本,或者您想要自行安裝及設定所有項目。

提供設定網站的完整架構和最佳做法不在本文討論範圍內。但從高階觀點來看,在 Compute Engine 設定網站代管基礎架構時,有以下的技術面規範:

  • 瞭解要求。如果您要建置新網站,請務必瞭解所需的元件,如執行個體、儲存空間需求,以及網路基礎架構等。如果您要遷移現有解決方案的應用程式,您可能已經瞭解這些需求,但您仍須思考如何將現有設定對應至 Google Cloud 服務
  • 規劃設計。請仔細思考網站的架構,然後寫下您的設計,越明確越好。
  • 建立元件。您通常會認為是實體資產的元件 (例如電腦或網路交換器),會透過 Compute Engine 中的服務提供。舉例來說,如果您要一台電腦,就必須建立 Compute Engine 執行個體。如果您想要永久擁有硬碟,也可以建立對應的執行個體。基礎架構即程式碼工具 (例如 Terraform) 可讓這個程序變得簡單且可重複進行。
  • 設定及自訂。當您擁有所需的元件之後,就需要設定這些元件、安裝並設定軟體,然後寫入並部署您要求的任何自訂程式碼。您可以執行殼層指令碼來複製設定,這有助於加快您未來的部署作業。Terraform 也會提供陳述式的彈性設定範本,讓您可用來執行自動的資源部署作業,對部署作業也有幫助。您也可以利用 PuppetChef 等 IT 自動化工具。
  • 部署資產。根據推測,您大概已經有網頁和圖片。
  • 測試。確認所有作業是否如預期執行。
  • 部署到實際工作環境。發布您的網站,讓全世界都可以看到並使用。

使用 Compute Engine 儲存資料

大多數的網站都需要儲存空間。您可能基於多種因素而需要使用儲存空間,例如儲存使用者上傳的檔案,當然還有儲存您網站使用的資產。

Google Cloud 提供多種代管儲存空間服務,包括:

  • Cloud SQL 中的 SQL 資料庫,這是適用於 MySQL、PostgreSQL 和 SQL Server 的全代管關聯資料庫服務。
  • NoSQL 資料儲存空間有兩個選項:FirestoreBigtable
  • Memorystore,這是一項全代管的記憶體內資料儲存服務,適用於 RedisMemcached
  • Cloud Storage 中具備一致性、擴充性與大容量的物件儲存空間。Cloud Storage 有數種類別:
    • Standard 可提供最高可用性。
    • Nearline:提供低成本的選擇,適合存取頻率不到每月一次的資料。
    • Coldline:提供低成本的選擇,適合存取頻率不到每季一次的資料。
    • Archive 提供成本最低的封存、備份和災難復原選項。
  • Compute Engine 上的永久磁碟,可做為執行個體的主要儲存空間。Compute Engine 提供硬碟式永久磁碟 (又稱為「標準永久磁碟」),以及固態永久磁碟 (SSD)。您也可以選擇使用永久磁碟,在 Compute Engine 上設定您偏好的儲存空間技術。舉例來說,您可以將 PostgreSQL 設成 SQL 資料庫,或是將 MongoDB 設成 NoSQL 儲存空間。如要瞭解 Google Cloud上的儲存空間服務完整範圍與優點,請參閱「選擇儲存空間選項」。

使用 Compute Engine 進行負載平衡

針對任何大規模運作的網站,通常需要運用負載平衡技術,將工作負載分散到伺服器當中。您可以透過多種選項在 Compute Engine 上建構達到負載平衡的網路伺服器,包括:

負載平衡部署作業是有彈性的,您可以搭配現有的解決方案來使用 Compute Engine。舉例來說,使用 Nginx 進行 HTTP(S) 負載平衡是可用於取代 Compute Engine 負載平衡器的解決方案。

使用 Compute Engine 發布內容

由於回應時間是任何網站的基本指標,因此使用 CDN 來縮短延遲時間和提高效能的需求是很常見的,對於網路流量來自全球各地的網站而言,更是如此。

Cloud CDN 會使用 Google 遍佈全球的網路邊緣網路連接點,從最接近使用者的快取位置來提供內容。Cloud CDN 與 HTTP(S) 負載平衡搭配運作。如要從單一 IP 位址提供 Compute Engine、Cloud Storage,或是這兩者的內容,請針對 HTTP(S) 負載平衡器啟用 Cloud CDN 即可。

使用 Compute Engine 自動調度資源

您可以設定架構,使該架構能隨著需求變化而新增和移除伺服器。這個方法有助確保您的網站在尖峰負載下執行效能良好,同時可在更典型的需求期間有效控管成本。您可以使用 Compute Engine 所提供的自動配置器來達到這個目的。

自動調度資源是代管執行個體群組提供的功能。代管執行個體群組是透過常用執行個體範本建立的一組性質相同的虛擬機器執行個體。自動配置器會在代管執行個體群組中新增或移除執行個體。雖然 Compute Engine 同時具有代管和非代管執行個體群組,但您只能將代管執行個體群組與自動配置器搭配使用。詳情請參閱「在 Compute Engine 上自動調度資源」。

如要深入瞭解如何建構可擴充且具彈性的網路應用程式,請參閱建構可擴充且具彈性的網路應用程式一文。

使用 Compute Engine 進行記錄和監控

Google Cloud 提供讓您密切掌握網站現況的功能。

Cloud Logging 會收集 Google Cloud上的應用程式和服務記錄,並加以儲存。您可以使用記錄代理程式查看或匯出記錄檔,以及整合第三方記錄檔。

記錄

Cloud Monitoring 會為您的網站提供資訊主頁和快訊。您可以使用 Google Cloud 主控台設定 Monitoring。而且也能檢閱雲端服務、虛擬機器和常見開放原始碼伺服器 (例如 MongoDB、Apache、Nginx 和 Elasticsearch) 的效能指標。您可以使用 Cloud Monitoring API 擷取監控資料及建立自訂指標。

Cloud Monitoring 也提供運作時間檢查功能,可傳送要求至您的網站,確認網站是否有回應。您可以部署快訊政策,在運作時間檢查失敗時建立事件,以便監控網站的可用性。

使用 Compute Engine 管理 DevOps

如要瞭解如何使用 Compute Engine 管理開發運作,請參閱「使用 Kubernetes 進行分散式負載測試」。

搭配 GKE 使用容器

您可能已經在使用容器,例如 Docker 容器。對於網路代管服務,容器可提供的幾個優點包括:

  • 元件化。您可以使用容器來分隔網頁應用程式的各種不同元件。舉例來說,假設您的網站會執行網路伺服器和資料庫,您可以在不同的容器中執行這些元件,以便在修改及更新某個元件時,不會影響到其他的元件。當您應用程式的設計變得較為複雜時,容器很適合用於服務導向架構,包括微服務。這類的設計支援擴充性,以及其他目標。
  • 可攜性。容器本身具有執行所需的一切資源,也就是說,您的應用程式會與其依附元件組合在一起。您可以在各種平台上執行容器,不必擔心基本的系統細節問題。
  • 快速部署。當您準備要部署容器時,由於系統是根據一組定義和映像檔進行建構,因此您能夠以快速、可靠的自動化方式來部署組件。容器通常不大,且部署速度比虛擬機器等項目快上許多。

Google Cloud 的容器運算功能甚至能為網路代管服務提供更多的好處,包括:

  • 自動化調度管理GKE 是根據 Kubernetes 建構的代管服務;Kubernetes 是 Google 推出的開放原始碼容器自動化調度管理系統。只要使用 GKE,您的程式碼就會在容器中執行,而容器所屬的叢集是由 Compute Engine 執行個體組成。您也不必管理個別的容器,或手動建立及關閉每個容器,您可以利用 GKE 和自己定義的設定來自動管理叢集。
  • 映像檔登錄Artifact Registry 可為 Google Cloud上的 Docker 映像檔提供私人儲存空間。您可以透過 HTTPS 端點存取登錄檔,以便從任何機器提取映像檔,無論該機器是 Compute Engine 執行個體,還是您自有的硬體,都沒問題。這項登錄服務會將自訂映像檔託管在您Google Cloud 專案的 Cloud Storage 中。這樣能確保在預設情況下,只有具備專案存取權的主體才能存取自訂映像檔。
  • 機動性。這代表您靈活地搭配其他雲端供應商來移動及合併工作負載,或是混合雲端運算工作負載與內部部署實作來建立混合型解決方案。

使用 GKE 來儲存資料

由於 GKE 在 Google Cloud 上執行,且把 Compute Engine 執行個體當做節點使用,因此您的儲存空間選項與 Compute Engine 上的儲存空間有許多共通之處。您可以透過 Cloud SQL、Cloud Storage、Firestore 和 Bigtable 個別的 API 來存取該 API 所屬的服務,或是使用您所選擇的其他外部儲存供應商。不過,GKE 與 Compute Engine 永久磁碟的互動方式,的確與一般的 Compute Engine 執行個體不同。

Compute Engine 執行個體包括已連接的磁碟。使用 Compute Engine 時,只要執行個體存在,磁碟磁區就會保留在該執行個體中。您甚至可以卸離磁碟並用於不同的執行個體。不過在容器中,磁碟上的檔案是臨時檔案。當容器重新啟動時,例如在當機之後重新啟動,磁碟上的檔案就會遺失。Kubernetes 透過使用磁碟區儲存空間類別抽象層來解決這個問題。其中一種儲存空間類型是 GCE PD。也就是說,您可以使用 Compute Engine 永久磁碟搭配容器,來確保在您在使用 GKE 的期間,資料檔案不會遭到刪除。

如果您想瞭解磁碟區有哪些功能和優點,建議您先對 Pod 的運作方式有初步的認識。您可以將 Pod 想像成一或多個容器的應用程式專屬邏輯主機。Pod 會在節點執行個體上運作。當容器是 Pod 的成員時,便可以共用多項資源,包括一組共用儲存磁碟區。即使容器重新啟動,這些磁碟區可確保資料仍會保留,並且可以在 Pod 的容器之間共用。當然,您也可以在 Pod 中使用單一容器和磁碟區,但 Pod 是可將這些資源彼此邏輯連接的必要抽象層。

如需範例,請參閱教學課程:搭配 WordPress 和 MySQL 使用永久磁碟

使用 GKE 進行負載平衡

許多大型網路代管架構都需要執行多部伺服器來分攤流量需求。由於您可以使用 GKE 建立及管理多個容器、節點和 Pod,因此自然可以達到負載平衡的網路代管系統。

使用網路負載平衡機制

在 GKE 中建立負載平衡器的最簡單方式,就是使用 Compute Engine 的網路負載平衡功能。網路負載平衡功能可根據傳入的網際網路通訊協定資料 (例如位址、通訊埠和通訊協定類型),來平衡系統的負載。網路負載平衡功能採用轉送規則。並由這些規則指向列出可用於負載平衡之執行個體的目標集區

只要使用網路負載平衡功能,您就能根據額外的 TCP/UDP 型通訊協定 (如 SMTP 流量) 進行負載平衡,而且您的應用程式可以直接檢查封包。

您只要將 type: LoadBalancer 欄位新增至服務設定檔,便可以部署網路負載平衡機制。

使用 HTTP(S) 負載平衡

如果您需要更先進的負載平衡功能 (例如 HTTPS 負載平衡、內容式的負載平衡,或是跨地區的負載平衡),您可將 GKE 服務與 Compute Engine 的 HTTP/HTTPS 負載平衡功能整合在一起。Kubernetes 提供輸入資源,封裝一組規則,用於將外部流量轉送至 Kubernetes 端點。在 GKE 中,輸入資源會處理 Compute Engine HTTP/HTTPS 負載平衡器的佈建和設定工作。

如需在 GKE 中使用 HTTP/HTTPS 負載平衡的詳細資訊,請參閱使用輸入設定 HTTP 負載平衡一文。

使用 GKE 進行資源調度

如要自動調整叢集的規模,您可使用叢集自動配置器。這項功能會定期檢查是否有尚未排程的 Pod 正在等待有可用資源的節點。當這類的 Pod 存在時,如果調整大小可讓系統為等待中的 Pod 進行排程,自動配置器便會調整節點集區的大小。

叢集自動配置器也會監控所有節點的用量。如果您長時間不會使用某個節點,且能將該節點的所有 Pod 都安排在其他位置執行,那麼這個節點會遭到刪除。

如要進一步瞭解叢集自動配置器、其限制和最佳做法,請參閱叢集自動配置器說明文件

使用 GKE 進行記錄和監控

和在 Compute Engine 上一樣,LoggingMonitoring 會提供記錄和監控服務。Logging 會從應用程式和服務收集記錄檔並加以儲存。您可以使用記錄代理程式查看或匯出記錄檔,以及整合第三方記錄檔。

Monitoring 會為您的網站提供資訊主頁和快訊。您可以使用 Google Cloud 主控台設定 Monitoring。而且也能檢閱雲端服務、虛擬機器和常見開放原始碼伺服器 (例如 MongoDB、Apache、Nginx 和 Elasticsearch) 的效能指標。您也可以使用 Monitoring API 擷取監控資料及建立自訂指標。

使用 GKE 管理開發運作

當您使用 GKE 時,就已經擁有大多數人在想像開發運作時所想到的許多優勢。而在封裝、部署和管理方面,更是如此。您可以針對您的 CI/CD 工作流程需求,使用為雲端建構的工具,例如 Cloud BuildCloud Deploy,或是 Jenkins 等熱門工具。詳情請參閱下列文章:

使用 Cloud Run 建構無伺服器平台

Google Cloud的無伺服器平台能讓您用自己偏好的方式寫程式,不需要擔心基礎架構。您可以使用Google Cloud的儲存空間、資料庫、機器學習等服務,建構完整的無伺服器應用程式。

除了使用 GKE,您也可以將容器化網站部署至 Cloud Run。Cloud Run 是一個全代管無伺服器平台,可讓您在 Google Cloud上執行具備高擴充性的容器化應用程式。您只需為程式碼執行的時間付費。

您可以使用容器搭配 Cloud Run,利用 Nginx、Express.js 和 Django 等成熟的技術建構網站、存取 Cloud SQL 中的 SQL 資料庫,以及轉譯動態 HTML 網頁。

Cloud Run 說明文件提供快速入門導覽課程,可協助您迅速上手。

使用 Cloud Run 儲存資料

Cloud Run 容器是暫時性的,您需要瞭解其適用於用途的配額和限制。檔案可暫時儲存在容器執行個體中進行處理,但這類儲存空間會從服務的可用記憶體中取用,如執行階段合約所述。

如要使用永久性儲存空間,您可以選擇 Google Cloud的服務,例如 Cloud Storage、Firestore 或 Cloud SQL,這與 App Engine 類似。或者,您也可以使用第三方儲存空間解決方案。

使用 Cloud Run 進行負載平衡和自動調度

根據預設,在 Cloud Run 上建構時,系統會自動將傳入的要求導向適當的後端容器,並為您進行負載平衡。不過,如果您想充分利用 Google Cloud提供的完整企業級 HTTP(S) 負載平衡功能,可以使用無伺服器網路端點群組

您可以使用 HTTP(S) 負載平衡功能啟用 Cloud CDN,或是提供來自多個地區的流量。此外,您也可以使用 中介軟體 (例如 API Gateway) 來強化服務。

針對 Cloud Run, Google Cloud 會為您管理容器執行個體自動調度資源。每個修訂版本都會自動調整所需容器執行個體數量,以處理所有傳入要求。如果修訂版本沒有收到任何流量,系統會根據預設將資源調度為零個容器執行個體。不過,如有需要,您可以變更這項預設值,使用最少執行個體設定指定要保持閒置或暖機的執行個體。

使用 Cloud Run 進行記錄和監控

Cloud Run 提供兩種類型的記錄,這些記錄會自動傳送到 Cloud Logging

  • 要求記錄:傳送到 Cloud Run 服務的要求記錄,這類的記錄是自動建立的。
  • 容器記錄:容器執行個體發出的記錄,通常是來自您自己的程式碼,這類的記錄會寫入支援的位置,如寫入容器記錄所述。

有幾種方式可以查看您的服務記錄:

  • 使用 Google Cloud 控制台的 Cloud Run 頁面。
  • 在 Google Cloud 控制台中使用 Cloud Logging 記錄檔探索工具。

這兩種查看方式所看到的記錄相同,都儲存在 Cloud Logging 中,但 Logs Explorer 提供更多詳細資料和更多的篩選功能。

Cloud Monitoring 提供 Cloud Run 效能監控、指標運作時間檢查,以及快訊,在超過特定指標門檻時傳送通知。適用 Google Cloud Observability 的價格,也就是說,Cloud Run 全代管版本的計量資料不會產生費用。請注意,您也可以使用 Cloud Monitoring 自訂指標

Cloud Run 會與 Cloud Monitoring 整合,您不必進行任何安裝或設定。這表示系統會在 Cloud Run 服務執行時自動擷取其指標。

使用 App Engine 在代管平台上建構

在 Google Cloud上,代管平台式服務 (PaaS) 稱為 App Engine。在 App Engine 上建構網站時,您可以專注於編寫功能的程式碼,然後由 Google 負責管理支援的基礎架構。App Engine 提供廣泛豐富的功能,可簡化擴充性、負載平衡、記錄、監控和安全等作業,遠比您自行建構和管理來得容易許多。App Engine 可讓您使用各種不同的程式設計語言來編寫程式碼,並且可利用多種其他 Google Cloud 服務。

App Engine 提供「標準環境」,讓您在安全沙箱環境中執行應用程式。App Engine 標準環境會將要求分散至多個伺服器,並根據流量需求,對伺服器進行資源調度。您的應用程式是在自有的安全、可靠環境中執行,不受伺服器的硬體、作業系統或實體位置影響。

網路應用程式使用 App Engine 及其他元件

App Engine 為給您更多的選擇,提供了「彈性環境」。當您使用彈性環境時,應用程式會在可設定的 Compute Engine 執行個體上執行,但 App Engine 會為您管理託管環境。這表示您可以使用其他執行階段 (包括自訂執行階段),進而有擁更多的程式設計語言選項。您也可以充分運用 Compute Engine 所提供的彈性,比方說,您可從各種 CPU 和記憶體選項當中進行選擇。

程式設計語言

App Engine 標準環境提供預設執行階段,並且您可以使用支援的程式設計語言的特定版本來撰寫原始碼。

透過這個彈性環境,您可以使用任何支援的程式設計語言版本來撰寫原始碼。您可以自訂這些執行階段,或使用自訂 Docker 映像檔或 Dockerfile 提供自己的執行階段。

如果使用的程式設計語言是您的主要考量,則您需要判斷 App Engine 標準環境提供的執行階段是否符合您的需求。如果不符合,您就應該要考慮使用彈性環境。

如要判斷哪種環境最符合您應用程式的需求,請參閱選擇 App Engine 環境

各種程式語言的入門指南教學課程

下列教學課程可以協助您開始使用 App Engine 標準環境:

下列教學課程可協助您開始使用彈性環境:

使用 App Engine 儲存資料

App Engine 為您提供儲存資料的選項:

名稱 結構 一致性
Firestore 無結構定義 同步一致性。
Cloud SQL 關聯式 同步一致性。
Cloud Storage 檔案及其關聯的中繼資料 同步一致性,但在執行取得值區或物件清單的 list 作業時除外。

您也可以搭配標準環境使用多個第三方資料庫

如要進一步瞭解 App Engine 的儲存空間,請參閱選擇儲存空間選項,然後選取您想要使用的程式設計語言。

當您使用彈性環境時,可以使用標準環境提供的所有儲存空間選項,還能使用涵蓋範圍更廣泛的第三方資料庫。如要進一步瞭解彈性環境中的第三方資料庫,請參閱使用第三方資料庫

使用 App Engine 進行負載平衡和自動調度資源

根據預設,App Engine 會自動將傳入的要求轉送至適當的後端執行個體,並為您進行負載平衡。不過,如果您想充分利用 Google Cloud提供的功能完整的企業級 HTTP(S) 負載平衡功能,可以使用無伺服器網路端點群組

在資源配置方面,App Engine 可根據流量波動自動建立及關閉執行個體,您也可以指定要執行的執行個體數量 (不論流量為何)。

使用 App Engine 進行記錄和監控

在 App Engine 中,系統會自動記錄要求,而您可以在 Google Cloud 主控台中查看這些記錄。App Engine 也可以搭配使用特定程式語言的標準程式庫運作,而這些程式庫會提供記錄功能,以及將記錄項目轉送至 Google Cloud 主控台中的記錄檔。舉例來說,在 Python 中,您可以使用標準 Python 記錄模組;在 Java 中,您可以將 Logback 附加程式或 java.util.logging 與 Cloud Logging 整合。這種做法可啟用 Cloud Logging 的完整功能,而且只需要幾行 Google Cloud 專屬程式碼。

Cloud Monitoring 提供監控 App Engine 應用程式的功能。您可以透過 Google Cloud 主控台監控事件、運作時間檢查及其他詳細資料。

建構內容管理系統

提供網站內容,也就是意味著管理您的網站資產。Cloud Storage 所提供的全域存放區可用來儲存這些資產。一個常見的架構會將靜態內容部署至 Cloud Storage,然後同步至 Compute Engine 以轉譯動態頁面。Cloud Storage 可與許多第三方內容管理系統搭配運作,例如 WordPressDrupalJoomla。Cloud Storage 還提供與 Amazon S3 相容的 API,因此任何搭配 Amazon S3 運作的系統,都能搭配 Cloud Storage 運作。

下圖為內容管理系統的架構範例。 Google Cloud上的內容管理系統

後續步驟

  • 探索 Google Cloud 的參考架構、圖表和最佳做法。歡迎瀏覽我們的雲端架構中心