共用方式為


雲端原生應用程式的簡介

小提示

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

Azure 電子書的雲端原生 .NET 應用程式封面縮圖。

另一天,在辦公室,工作“下一件大事”。

手機響鈴。 這是你親切的招募專員 - 每天都會打電話提供令人興奮的新機會。

但這次是不同的:創業、公平和大量的資金。

提及雲端、微服務和尖端技術可推動您超越邊緣。

幾週之後,您在一個設計會議中擔任新員工,參與設計一個重要的電子商務應用程式。 您將與領先的電子商務網站競爭。

您要如何建置?

如果您遵循過去 15 年的指引,您很可能會建置如圖 1.1 所示的系統。

傳統整合型設計

圖 1-1。 傳統單一體設計

您建構包含所有網域邏輯的大型核心應用程式。 其中包含身分識別、目錄、排序等模組。 它們會在單一伺服器進程內彼此直接通訊。 模組會共用大型關係資料庫。 核心會透過 HTML 介面和行動應用程式公開功能。

祝賀! 您剛建立整合型應用程式。

並非所有都不好。 單塊體提供一些獨特的優點。 例如,它們使用起來很簡單...

  • 建造
  • 測試
  • 部署
  • 故障排除
  • 垂直縮放

現今有許多成功的應用程式是以單一結構來建立的。 這款應用程式非常受歡迎,並且不斷地演進,增加更多功能。

然而,在某些時候,你開始感到不舒服。 您會發現自己失去應用程式的控制權。 隨著時間的流逝,感覺變得更加強烈,你最終進入一個被稱為 Fear Cycle的狀態:

  • 應用程式變得如此複雜,以至於沒有人瞭解它。
  • 您擔心進行變更 - 每個變更都有非預期且成本高昂的副作用。
  • 新功能/修正變得棘手、耗時且昂貴的實作。
  • 每個版本都會盡可能縮小,並需要完整部署整個應用程式。
  • 一個不穩定的元件可能會當機整個系統。
  • 新技術和架構不是一個選項。
  • 實作敏捷式傳遞方法很困難。
  • 隨著程式碼庫因無止境的「快速修復」而惡化,架構侵蝕開始出現。
  • 最後, 顧問 們進來告訴你重寫它。

聽起來很熟悉嗎?

許多組織都已採用雲端原生方法來建置系統,來解決此整合式恐懼週期。 圖 1-2 顯示套用雲端原生技術和做法的相同系統。

Cloud-Native 設計

圖 1-2。 雲端原生設計

請注意應用程式如何跨一組小型隔離微服務進行分解。 每個服務都是獨立的,並封裝自己的程式代碼、數據和相依性。 每個都會部署在軟體容器中,並由容器協調器管理。 除了大型關係資料庫,每個服務都會擁有它自己的數據存放區,其類型會根據數據需求而有所不同。 請注意某些服務相依於關係資料庫的方式,但其他則相依於 NoSQL 資料庫。 一個服務會將其狀態儲存在分散式快取中。 請注意,所有流量如何透過 API 閘道服務路由到核心後端服務,並在多個方面執行許多重要考量。 最重要的是,應用程式充分利用新式雲端平臺中找到的延展性、可用性和復原功能。

雲端原生運算

嗯。。。我們只是使用 雲端原生一詞。 您的第一個想法可能是,“這到底是什麼意思?軟體供應商為行銷更多東西而編造的另一個行業流行語?

** 幸運的是,情況大不相同,希望這本書能幫助說服你。

在短時間內,雲端原生已成為軟體產業的推動趨勢。 這是建構大型複雜系統的新方法。 此方法充分利用新式軟體開發實務、技術和雲端基礎結構。 雲端原生會變更您設計、實作、部署及運作系統的方式。

不同於驅動著我們行業的持續炒作,雲端原生是真真正正的。 請考慮 雲端原生運算基金會 (NCF),一個由 400 多家主要公司組成的財團。 其憲章是讓雲端原生運算無處不在,橫跨技術和雲端堆棧。 作為最具影響力的開放原始碼群組之一,它會在 GitHub 中裝載許多成長最快的開放原始碼專案。 這些專案包括 KubernetesPrometheusHelmEnvoygRPC

NCF培養開放原始碼和廠商中立的生態系統。 之後,這本書將介紹與技術無關的雲端原生原則、模式和最佳做法。 同時,我們會討論在 Microsoft Azure 雲端中可用的服務和基礎設施,以建構原生雲端系統。

那麼,什麼是雲端原生? 坐下來,放鬆一下,讓我們協助您探索這個新世界。