分級混合模式

Last reviewed 2025-01-23 UTC

應用程式的架構元件可劃分為「前端」或「後端」。在某些情況下,這些元件可託管在不同的運算環境中運作。在分層混合型架構模式中,運算環境位於地端私人運算環境和 Google Cloud中。

前端應用程式元件會直接向使用者或裝置公開。因此,這些應用程式通常高度重視效能表現。為了開發新功能及改善現有功能,我們可能會頻繁發布軟體更新。由於前端應用程式通常仰賴後端應用程式來儲存及管理資料 (以及可能的商業邏輯和使用者輸入處理作業),因此通常為無狀態或只管理少量資料。

您可以使用各種架構和技術建構前端應用程式,以便使用者存取及使用。成功的前端應用程式需要具備一些關鍵要素,包括應用程式效能、回應速度和瀏覽器相容性。

後端應用程式元件通常專注於儲存及管理資料。在某些架構中,商業邏輯可能會整合至後端元件。後端應用程式推出新版本的速度通常不會像前端應用程式那麼頻繁。後端應用程式必須克服下列挑戰:

  • 處理大量要求
  • 處理大量資料
  • 保護資料安全
  • 維護所有系統備援機制中的最新資料

三層式應用程式架構是建構商務網頁應用程式時最常見的實作方式之一,例如包含不同應用程式元件的電子商務網站。這個架構包含下列層級。每個層級都會獨立運作,但彼此緊密相連,且都能一起運作。

  • 網路前端和呈現層
  • 應用程式層
  • 資料存取或後端層

將這些層放入容器,可分離技術需求 (例如調整需求),並有助於分階段遷移。此外,您還可以將這些應用程式部署至不限平台的雲端服務,以便在各環境中移植、使用自動化管理功能,並透過雲端管理平台 (例如 Cloud Run 或 Google Kubernetes Engine (GKE) 企業版) 擴充應用程式。此外,Cloud SQL 等 Google Cloud代管資料庫可提供後端做為資料庫層。

分級混合架構模式著重於將現有的前端應用程式元件部署至公用雲端。在這個模式中,您會將任何現有的後端應用程式元件保留在其私人運算環境中。您可以根據應用程式的規模和具體設計,視情況遷移前端應用程式元件。詳情請參閱「遷移至 Google Cloud」。

如果您有現有應用程式,且後端和前端元件皆託管在內部部署環境中,請考量目前架構的限制。舉例來說,隨著應用程式規模擴大,其效能和可靠性需求也會增加,因此您應開始評估應用程式部分是否應進行重構,或移至其他更理想的架構。您可以先將部分應用程式工作負載和元件轉移至雲端,再進行完整轉換,這就是分級混合架構模式。您也必須考量這類遷移作業的成本、時間和風險。

下圖顯示典型的分層混合架構模式。

資料流程從內部部署應用程式前端,傳送至 Google Cloud中的應用程式前端。資料隨後會流回內部部署環境。

在上述圖表中,用戶端要求會傳送至託管於 Google Cloud的應用程式前端。應用程式前端會將資料傳回應用程式後端的內部部署環境 (最好是透過 API 閘道)。

您可以使用分層混合型架構模式,充分利用Google Cloud 基礎架構和全球服務,如下圖所示架構範例所示。應用程式前端可透過 Google Cloud存取。您也可以使用自動調整資源配置功能,動態且有效率地回應資源調度需求,為前端增加彈性,而無須過度配置基礎架構。您可以使用不同的架構,在 Google Cloud上建構及執行可擴充的網頁應用程式。每個架構都有不同的優缺點,可滿足不同的需求。

詳情請參閱 YouTube 上的影片「Three ways to run scalable web apps on Google Cloud」。如要進一步瞭解如何在Google Cloud中採用各種方法改造電子商務平台,請參閱「如何在 Google Cloud中建構數位商務平台」。

資料流量從使用者傳送至內部部署資料庫伺服器,中途經過 Cloud Load Balancing 和 Compute Engine。

在上述圖表中,應用程式前端會在Google Cloud 上代管,以便透過全球Google Cloud Armor 的全球負載平衡、自動調度資源和 DDoS 防護機制,提供多地區和全球最佳化的使用者體驗。

隨著時間過去,您部署至公用雲端的應用程式數量可能會增加,到時您可能會考慮將後端應用程式元件遷移至公用雲端。如果您預期會提供大量流量,選擇雲端代管服務可能有助於在管理自有基礎架構時節省工程作業。除非限制或規定必須在內部代管後端應用程式元件,否則請考慮使用這個選項。舉例來說,如果您的後端資料受到法規限制,您可能需要將該資料保存在 on-premises 環境。不過,在適用且符合法規的情況下,您可以使用私密資料保護功能 (例如去識別化技術),在必要時移動這些資料。

在分層混合型架構模式中,您也可以在某些情況下使用 Google Distributed Cloud。您可以透過 Distributed Cloud,在 Google 提供及維護的專屬硬體上執行 Google Kubernetes Engine 叢集,這些硬體與 Google Cloud 資料中心分開。為確保 Distributed Cloud 滿足您目前和未來的需求,請瞭解 Distributed Cloud 與傳統雲端 GKE 區域的差異。

優點

先專注於前端應用程式有以下幾項優點:

  • 前端元件會仰賴後端資源,偶爾也會仰賴其他前端元件。
  • 後端元件不會依附前端元件。因此,區隔及遷移前端應用程式比較不會像遷移後端應用程式那麼複雜。
  • 由於前端應用程式通常為無狀態,而且本身並不管理資料,因此遷移通常沒那麼困難。

將現有或新開發的前端應用程式部署至公用雲端可提供下列多項優點:

  • 許多前端應用程式受限於頻繁的變更。在公用雲端執行這些應用程式可簡化持續整合/持續部署 (CI/CD) 程序的設定作業。您可以使用 CI/CD,以有效率且自動化的方式傳送更新。詳情請參閱「在 Google Cloud上進行 CI/CD」。
  • 效能敏感型前端的流量負載會有所變化,因此可大幅受益於負載平衡、多地區部署、Cloud CDN 快取、無伺服器和自動調度資源等雲端部署啟用的功能 (最好搭配無狀態架構)。
  • 採用使用容器的微服務,並透過雲端管理平台 (例如 GKE) 進行部署,即可使用微前端等新式架構,將微服務擴展至前端元件。

    擴充微服務通常會與前端搭配使用,前端涉及多個團隊在同一個應用程式上協同合作。這種團隊架構需要採用迭代式做法和持續維護。使用微前端的好處如下:

    • 您可以將其做為獨立的微服務模組,用於開發、測試和部署。
    • 這項功能可讓個別開發團隊選擇偏好的技術和程式碼,以便進行區隔。
    • 這可促進快速的開發和部署週期,且不會影響其他團隊可能管理的前端元件。
  • 無論是實作使用者介面或 API,或是處理物聯網 (IoT) 資料擷取,前端應用程式都可以受益於 FirebasePub/SubApigeeCloud CDNApp EngineCloud Run 等雲端服務提供的功能。

  • 雲端管理的 API Proxy 可協助您:

    • 將應用程式導向的 API 與後端服務 (例如微服務) 分離。
    • 保護應用程式免受後端程式碼變更的影響。
    • 支援現有的 API 驅動前端架構,例如前端後端 (BFF)、微前端和其他架構。
    • 在 Apigee 上實作 API Proxy,在 Google Cloud 或其他環境中公開 API。

您也可以反向套用分層混合模式,將後端部署在雲端,同時將前端保留在私人運算環境。雖然這種做法較少見,但處理重量級單體式前端時,最適合運用這種方法。在這種情況下,反覆擷取後端功能並將這些新的後端部署在雲端,可能會比較簡單。

本系列的第三部分將探討可能的網路模式,以便啟用這類架構。Apigee Hybrid 可做為平台,協助您在混合式部署模型中建構及管理 API Proxy。詳情請參閱鬆散結合架構,包括分層的單體和微服務架構。

最佳做法

規劃分層混合式架構時,請參考本節的資訊。

減少複雜度的最佳做法

套用分層混合式架構模式時,請考慮採用下列最佳做法,有助於降低整體部署和作業複雜度:

  • 根據所識別應用程式的通訊模式評估結果,為這些應用程式選取最有效率且有效的通訊解決方案。

由於大部分的使用者互動包含跨多個運算環境連結的系統,因此這些系統之間快速且低延遲的連結至關重要,為滿足可用性和效能方面的期望,您應採用高可用性、低延遲和適當的總處理量等級設計。從安全性角度來看,通訊必須精細控制。理想情況下,您應使用安全的 API 公開應用程式元件。詳情請參閱「閘控外連」。

  • 為了盡量減少環境之間的通訊延遲,請選取地理位置靠近應用程式後端元件代管位置的 Google Cloud 區域。詳情請參閱「選擇 Compute Engine 地區的最佳做法」。
  • 盡可能減少在不同環境中執行的系統之間的高度依附元件,尤其是在同步處理通訊時。這些依附元件會降低效能、降低整體可用性,並可能產生額外的傳出資料傳輸費用。
  • 採用分層混合架構模式時,從內部部署環境傳入Google Cloud 的流量量可能會大於從 Google Cloud傳出的流量量。不過,您應該要瞭解 Google Cloud的預期資料傳輸量。如果您打算長期使用此架構,且傳出資料量高,建議您使用 Cloud Interconnect。Cloud Interconnect 可協助您最佳化連線效能,並可能降低符合特定條件的傳出資料傳輸費用。詳情請參閱「Cloud Interconnect 定價」。
  • 為保護機密資訊,建議您對所有傳輸中的通訊內容進行加密。如果連線層需要加密,您可以使用 VPN 通道、採用 Cloud Interconnect 的高可用性 VPNCloud Interconnect 專用 MACsec
  • 為解決不同後端的通訊協定、API 和驗證機制不一致的問題,建議您在適用情況下,將 API 閘道或 Proxy 部署為統一的外觀。這個閘道或 Proxy 會做為集中式控制點,執行下列措施:

    • 導入額外安全措施。
    • 保護用戶端應用程式和其他服務,不受後端程式碼變更的影響。
    • 協助建立稽核追蹤,用於記錄所有跨環境應用程式與其解耦元件之間的通訊。
    • 做為舊版和現代化服務之間的中介通訊層
      • Apigee 和 Apigee hybrid 可讓您在內部部署環境、邊緣、其他雲端和Google Cloud 環境中代管及管理企業級和混合式閘道。
  • 為簡化混合式設定的建立程序,請使用支援混合式連線的 Cloud Load Balancing。也就是說,您可以將雲端負載平衡的優點擴展至在內部部署的運算環境中代管的服務。這種做法可讓您以最少或不中斷服務的方式,分階段遷移工作負載,確保分散式服務順利轉移。 Google Cloud 詳情請參閱混合式連線網路端點群組總覽

  • 有時,使用 API Gateway 或 Proxy 和 Application Load Balancer 搭配使用,可以提供更強大的解決方案,用於大規模管理、保護及分發 API 流量。使用 Cloud Load Balancing 搭配 API Gateway 可讓您達成以下目標:

  • 使用API 管理和服務網格,透過微服務架構保護及控管服務通訊和暴露情形。

    • 使用 Cloud Service Mesh 可促成服務之間的通訊,進而在由分散式服務組成的系統中維持服務品質,並管理服務之間的驗證、授權和加密作業。
    • 使用 Apigee 等 API 管理平台,讓貴機構和外部實體以 API 的形式使用這些服務。
  • 在環境之間建立通用身分識別,讓系統能夠跨越環境界線以安全的方式進行驗證。

  • 在公用雲端中部署 CI/CD 和設定管理系統。詳情請參閱鏡像式網路架構模式

  • 為提高作業效率,請在各個環境中使用一致的工具和 CI/CD 管道。

個別工作負載和應用程式架構的最佳做法

  • 雖然這個模式的重點在於前端應用程式,但仍請注意對後端應用程式進行現代化的需求。如果後端應用程式的開發步調比前端慢相當多,這項差異可能會導致額外的複雜情況。
  • 將 API 視為後端介面可簡化整合、前端開發、服務互動,並隱藏後端系統的複雜性。為解決這些挑戰,Apigee 可協助您在混合式雲端和多雲端部署中開發及管理 API 閘道/Proxy。
  • 根據內容 (靜態與動態)、搜尋引擎最佳化成效,以及網頁載入速度的預期,為前端網頁應用程式選擇轉譯方法
  • 在為內容導向網頁應用程式選取架構時,您可以選擇多種選項,包括單體式、無伺服器、事件導向和微服務架構。如要選取最合適的架構,請根據目前和未來的應用程式需求,徹底評估這些選項。如要協助您做出符合業務和技術目標的架構決策,請參閱「比較內容導向網頁應用程式後端的不同架構」和「網頁後端的重要考量事項」。
  • 透過微服務架構,您可以使用容器化應用程式,並將 Kubernetes 做為通用的執行階段層。您可以使用分層混合型架構模式,在下列任一情況下執行:

    • 在兩個環境 (Google Cloud 和您的內部部署環境) 中。

      • 在各環境中使用容器和 Kubernetes 時,您可以靈活地將工作負載現代化,然後在不同時間點遷移至 Google Cloud 。當工作負載大量取決於另一個工作負載且無法個別遷移時,這會非常實用。您也可以使用混合工作負載可攜性,利用各個環境中可用的最佳資源。無論如何,G KE Enterprise 都是重要的輔助技術。詳情請參閱「GKE Enterprise 混合式環境」。
    • 在 Google Cloud 環境中,針對已遷移及改良的應用程式元件。

      • 如果您有缺乏容器化支援的舊版後端,或是需要大量時間和資源才能在短期內進行現代化,請採用這種方法。

      如要進一步瞭解如何設計及重構單體式應用程式,以便將其改為微服務架構,進而改良網路應用程式架構,請參閱「微服務簡介」。

  • 您可以根據網頁應用程式的需求,結合多種資料儲存技術。使用 Cloud SQL 儲存結構化資料,並將 Cloud Storage 用於媒體檔案,是滿足各種資料儲存需求的常見做法。不過,這項選擇很大程度上取決於您的用途。如要進一步瞭解內容導向應用程式後端和有效模式的資料儲存空間選項,請參閱「內容導向網頁應用程式的資料儲存空間選項」。另請參閱「您的資料庫選項說明 Google Cloud 」