總而言之,以下是本指南的重要結論:
雲端原生 是設計現代化應用程式,以在公用、私人和混合式雲端等現代動態環境中採用快速變更、大規模和復原能力。
雲端原生運算基金會(NCF)是300多家大型企業的有影響力的開放原始碼財團。 它負責推動跨技術和雲端堆疊採用雲端原生運算。
NCF 指導方針 建議雲端原生應用程序採用六個重要要素,如圖 11-1 所示:
圖 11-1。 雲端原生基礎要素
這些雲端原生支柱包括:
- 雲端及其基礎服務模型
- 新式設計原則
- 微服務
- 容器化與容器編排
- 雲端式支援服務,例如資料庫和訊息代理程式
- 自動化,包括基礎結構即程式碼和程式碼部署
Kubernetes 是大多數雲端原生應用程式的裝載環境。 較小的簡單服務有時會裝載在無伺服器平臺中,例如 Azure Functions。 在許多關鍵自動化功能中,這兩個環境都提供自動調整規模以因應波動的工作負載量。
建構雲端原生應用程式時,服務通訊會成為重要的設計決策。 應用程式通常會公開 API 閘道來管理前端客戶端通訊。 然後,後端微服務會盡可能努力彼此通訊,以實作異步通訊模式。
gRPC 是一種現代化且高效能的架構,可演進過時的遠端過程調用 (RPC) 通訊協定。 雲端原生應用程式通常會採用 gRPC 來簡化後端服務之間的傳訊。 gRPC 使用 HTTP/2 作為傳輸通訊協定。 其速度最多可比 JSON 串行化快 8 倍,訊息大小為 60-80% 更小。 gRPC 是開放原始碼,並由雲端原生運算基礎 (NCF) 管理。
分散式數據 通常是由雲端原生應用程式實作的模型。 應用程式會將商務功能隔離成小型獨立微服務。 每個微服務都會封裝自己的相依性、數據和狀態。 傳統共享資料庫模型會演變成許多較小的資料庫之一,每個資料庫都與微服務一致。 當煙霧散去時,我們將揭示一個揭露
database-per-microservice模型的設計。No-SQL 資料庫 是指高效能、非關係型數據存放區。 其具備容易使用、可擴縮性、復原性與可用性等特性。 需要不到一秒回應時間的大量服務偏好使用 NoSQL 資料存放區。 分散式雲端原生系統的 NoSQL 技術激增無法過度誇大。
NewSQL 是一種新興的資料庫技術,結合了 NoSQL 的分散式延展性和關係資料庫的 ACID 保證。 NewSQL 資料庫的目標是必須跨分散式環境處理大量數據且具有完整交易/ACID 合規性的商務系統。 雲端原生運算基金會 (CNCF) 有數個 NewSQL 資料庫專案。
復原 能力是系統回應失敗並仍然正常運作的能力。 雲端原生系統採用分散式架構,其中失敗是不可避免的。 應用程式必須建構,以優雅地回應失敗,並快速回到正常運作的狀態。
服務網格 是可設定的基礎結構層,內建功能可處理服務通訊和其他跨領域挑戰。 它們會將跨領域責任與商務程式代碼分離。 這些責任會移至服務代理。 稱為
Sidecar pattern的代理會部署到單獨的進程中,以便與您的業務代碼隔離。可檢視性 是雲端原生應用程式的重要設計考慮。 當服務分散到節點叢集時,集中式記錄、監視和警示會變成必要。 Azure 監視器是雲端式工具的集合,其設計目的是提供系統狀態的可見度。
基礎結構即程式代碼 是廣泛接受的做法,可將平臺布建自動化。 您的基礎結構和部署是自動化、一致且可重複的。 Azure Resource Manager、Terraform 和 Azure CLI 等工具可讓您以宣告方式編寫所需的雲端基礎結構腳本。
程式代碼自動化 是雲端原生應用程式的需求。 新式 CI/CD 系統有助於達成此原則。 它們提供個別的建置和部署步驟,可協助確保一致且高品質的程序代碼。 建置階段會將程式代碼轉換成二進位成品。 在發行階段會挑選二進制元件、套用外部環境設定,並將其部署至指定的環境。 Azure DevOps 和 GitHub 是功能完整的 DevOps 環境。