共用方式為


摘要:建構雲端原生應用程式

提示

此內容摘錄自《建構適用於 Azure 的雲端原生 .NET 應用程式》電子書,您可以在 .NET Docs 找到此電子書,或免費下載可離線閱讀的 PDF。

Cloud Native .NET apps for Azure eBook cover thumbnail.

以下是本指南重要結論摘要:

  • 雲端原生是關於在現代化的動態環境中,例如公用、私人和混合式雲端,設計擁有快速變更、大規模和復原能力的現代化應用程式。

  • Cloud Native Computing Foundation (CNCF) 是集結了 300 多家大公司,具有影響力的開放原始碼聯盟。 負責推動跨技術和雲端堆疊採用雲端原生運算。

  • 如圖 11-1 所示,CNCF 指導建議雲端原生應用程式採用六大要素:

    Cloud-native foundational pillars

    圖 11-1。 雲端原生基礎要素

  • 這些雲端原生要素包括:

    • 雲端及其基礎服務模型
    • 新式設計原則
    • 微服務
    • 容器化和容器協調流程
    • 雲端式支援服務,例如資料庫和訊息代理程式
    • 自動化,包括基礎結構即程式碼和程式碼部署
  • Kubernetes 是大多數雲端原生應用程式會選擇的裝載環境。 較小型的簡單服務有時會裝載於無伺服器平臺,例如 Azure Functions。 在許多重要的自動化功能中,這兩個環境都會提供自動擴縮以處理變動的工作負載磁碟區。

  • 建構雲端原生應用程式時,服務通訊會成為重要的設計決策。 應用程式一般會公開 API 閘道以管理前端用戶端通訊。 然後,後端微服務會盡可能互相努力通訊,以實作非同步通訊模式。

  • gRPC 是現代化的高效能架構,可使歷史悠久的遠端程序呼叫 (RPC) 通訊協定進化。 雲端原生應用程式通常採用 gRPC 以簡化後端服務之間的傳訊。 gRPC 使用 HTTP/2 作為傳輸通訊協定。 相較於 JSON 序列化,其速度最快可達 8 倍,訊息大小卻小了 60-80%。 gRPC 是由 Cloud Native Computing Foundation (CNCF) 管理的開放原始碼。

  • 分散式資料通常是雲端原生應用程式實作的模型。 應用程式會將商務功能分隔成小型的獨立微服務。 每項微服務都會封裝自己的相依性、資料和狀態。 傳統共用資料庫模型會進化成許多較小資料庫的其中之一,每個都與微服務一致。 當結果出現後,我們會公開 database-per-microservice 模型的設計。

  • No-SQL 資料庫是指高效能的非關聯式資料存放區。 具備容易使用、可擴縮性、復原和可用性等特性。 需要不到一秒回應時間的大量服務偏好 NoSQL 資料存放區。 分散式雲端原生系統的 NoSQL 技術激增並非誇大。

  • NewSQL 是一種新興的資料庫技術,結合了 NoSQL 的分散式可擴縮性和關聯式資料庫的 ACID 保證。 NewSQL 資料庫的目標,是必須跨分散式環境處理大量資料,且完全符合完整交易/ACID 規範的商務系統。 Cloud Native Computing Foundation (CNCF) 有數個 NewSQL 資料庫專案。

  • 復原是系統在回應失敗時仍能正常運作的能力。 雲端原生系統採用失敗無可避免的分散式架構。 應用程式必須建構成能簡潔回應失敗,並快速回復完全正常運作的狀態。

  • 服務網格是可設定的基礎結構層,具有可處理服務通訊和其他跨領域挑戰的內建功能。 其會分離跨領域責任與您的商務程式碼。 這些責任會移至服務 Proxy。 Proxy 會部署到個別的流程 (稱為 Sidecar pattern),以與您的商務程式碼隔離。

  • 可檢視性是雲端原生應用程式的重要設計考量。 當服務分散到節點叢集時,集中化的記錄、監視和警示就會變成必要。 Azure 監視器是雲端式工具的集合,旨在讓您了解系統的狀態。

  • 基礎結構即程式碼是廣為大眾接受的做法,可將平台佈建自動化。 您的基礎結構和部署是自動化、一致且可重複的。 Azure Resource Manager、Terraform 和 Azure CLI 等工具,可讓您以宣告方式編寫所需雲端基礎結構的指令碼。

  • 程式碼自動化是雲端原生應用程式的需求。 新式 CI/CD 系統有助實現此原則。 其分別提供建置和部署步驟,以協助確保一致且高品質的程式碼。 此建置階段會將程式碼轉換為二進位成品。 發行階段會挑選二進位成品、套用外部環境組態,並將其部署至指定的環境。 Azure DevOps 和 GitHub 是功能完整的 DevOps 環境。