另一天,在辦公室,工作“下一件大事”。
手機響鈴。 這是你親切的招募專員 - 每天都會打電話提供令人興奮的新機會。
但這次是不同的:創業、公平和大量的資金。
提及雲端、微服務和尖端技術可推動您超越邊緣。
幾週之後,您在一個設計會議中擔任新員工,參與設計一個重要的電子商務應用程式。 您將與領先的電子商務網站競爭。
您要如何建置?
如果您遵循過去 15 年的指引,您很可能會建置如圖 1.1 所示的系統。
圖 1-1。 傳統單一體設計
您建構包含所有網域邏輯的大型核心應用程式。 其中包含身分識別、目錄、排序等模組。 它們會在單一伺服器進程內彼此直接通訊。 模組會共用大型關係資料庫。 核心會透過 HTML 介面和行動應用程式公開功能。
祝賀! 您剛建立整合型應用程式。
並非所有都不好。 單塊體提供一些獨特的優點。 例如,它們使用起來很簡單...
- 建造
- 測試
- 部署
- 故障排除
- 垂直縮放
現今有許多成功的應用程式是以單一結構來建立的。 這款應用程式非常受歡迎,並且不斷地演進,增加更多功能。
然而,在某些時候,你開始感到不舒服。 您會發現自己失去應用程式的控制權。 隨著時間的流逝,感覺變得更加強烈,你最終進入一個被稱為 Fear Cycle的狀態:
- 應用程式變得如此複雜,以至於沒有人瞭解它。
- 您擔心進行變更 - 每個變更都有非預期且成本高昂的副作用。
- 新功能/修正變得棘手、耗時且昂貴的實作。
- 每個版本都會盡可能縮小,並需要完整部署整個應用程式。
- 一個不穩定的元件可能會當機整個系統。
- 新技術和架構不是一個選項。
- 實作敏捷式傳遞方法很困難。
- 隨著程式碼庫因無止境的「快速修復」而惡化,架構侵蝕開始出現。
- 最後, 顧問 們進來告訴你重寫它。
聽起來很熟悉嗎?
許多組織都已採用雲端原生方法來建置系統,來解決此整合式恐懼週期。 圖 1-2 顯示套用雲端原生技術和做法的相同系統。
圖 1-2。 雲端原生設計
請注意應用程式如何跨一組小型隔離微服務進行分解。 每個服務都是獨立的,並封裝自己的程式代碼、數據和相依性。 每個都會部署在軟體容器中,並由容器協調器管理。 除了大型關係資料庫,每個服務都會擁有它自己的數據存放區,其類型會根據數據需求而有所不同。 請注意某些服務相依於關係資料庫的方式,但其他則相依於 NoSQL 資料庫。 一個服務會將其狀態儲存在分散式快取中。 請注意,所有流量如何透過 API 閘道服務路由到核心後端服務,並在多個方面執行許多重要考量。 最重要的是,應用程式充分利用新式雲端平臺中找到的延展性、可用性和復原功能。
雲端原生運算
嗯。。。我們只是使用 雲端原生一詞。 您的第一個想法可能是,“這到底是什麼意思?軟體供應商為行銷更多東西而編造的另一個行業流行語?
** 幸運的是,情況大不相同,希望這本書能幫助說服你。
在短時間內,雲端原生已成為軟體產業的推動趨勢。 這是建構大型複雜系統的新方法。 此方法充分利用新式軟體開發實務、技術和雲端基礎結構。 雲端原生會變更您設計、實作、部署及運作系統的方式。
不同於驅動著我們行業的持續炒作,雲端原生是真真正正的。 請考慮 雲端原生運算基金會 (NCF),一個由 400 多家主要公司組成的財團。 其憲章是讓雲端原生運算無處不在,橫跨技術和雲端堆棧。 作為最具影響力的開放原始碼群組之一,它會在 GitHub 中裝載許多成長最快的開放原始碼專案。 這些專案包括 Kubernetes、 Prometheus、 Helm、 Envoy 和 gRPC。
NCF培養開放原始碼和廠商中立的生態系統。 之後,這本書將介紹與技術無關的雲端原生原則、模式和最佳做法。 同時,我們會討論在 Microsoft Azure 雲端中可用的服務和基礎設施,以建構原生雲端系統。
那麼,什麼是雲端原生? 坐下來,放鬆一下,讓我們協助您探索這個新世界。