1 云原生應用與傳統應用的區別
(1)可預測性:傳統應用不可預測,應用程序的架構和開發方式獨特,需要更長的時間來構建和批量發布,只能逐步擴展。而云原生應用可預測,遵循一個框架或原則,應用使用高度自動化、容器驅動的基礎設施云平臺進行構建,旨在通過可預測的行為最大化應用的彈性。
(2)操作系統:傳統應用操作系統依賴,在應用程序和底層操作系統之間依賴關系緊密。
而云原生應用操作系統抽象,允許開發人員將平臺作為底層基礎設施依賴的抽象,只需使用平臺提供的功能和服務,忽略底層的實現細節。
(3)資源利用:傳統應用資源浪費,傳統架構按業務流量高峰做常備冗余部署資源,其他時期資源浪費嚴重。而云原生應用精益的資源,提供自動化基礎設施的配置,部署時根據應用程序需求動態地分配資源。
(4)部門協同:傳統應用部門獨立,開發、運營、維護部門相互獨立缺少協同。 而云原生應用組織融合,簡化了 DevOps
的實現,包括人員、流程和工具的組合,達到組合更好的協同工作。
(5)開發方式:傳統應用采用瀑布開發方式,團隊定期發布軟件,間隔周期較長且影響客戶使用。
而云原生應用采用持續交付的方式,快速發布軟件的組織得到快速反饋循環,有效地響應客戶需求。
(6)擴展方式:傳統應用手動化擴展,傳統架構依賴操作人員手動擴展,效率教低。而云原生應用自動化擴展,云原生是建立在傳統面向系統虛擬化的編排管理之上的自動化。
(7)恢復速度:傳統應用恢復緩慢,虛擬機啟動/關閉速度很慢,基于虛擬機的基礎設施緩慢而低效。
而云原生應用恢復迅速,容器的運行環境和編排管理是在虛擬機之上提供動態的的虛擬化層,動態地管理跨虛擬機集群的容器,故障時提供彈性伸縮和恢復/重啟。
(8)系統耦合:傳統應用系統緊耦合,單體架構將各類捆綁在一個部署包中,導致開發和部署過程中喪失敏捷性,無法獨立的部署、發布更新、重啟。而云原生應用系統松耦合,微服務架構將應用程序分解為小的、松散耦合的、獨立的服務。

2 云原生應用的關鍵技術
云原生技術生態逐漸的擴充和發展,已經從容器、微服務、DevOps
等技術領域擴展至底層技術、編排及管理技術、安全技術、監測分析技術以及場景化應用等眾多分支,初步形成了支撐應用云原生化構建的全生命周期技術鏈。云原生的代表技術包括容器、DevOps、微服務、服務網格等。
(1)
容器:容器是將進程有效的劃分一個獨立空間,這樣就可以在獨立的空間之間平衡資源使用沖突的技術。本質上,容器是―種特殊的進程,其核心功能是通過約束和修改進程的動態表現創造出一個“邊界”,此外,其資源限制能力、以及基于鏡像功能表現出的“強一致性”,都使得容器技術成為云原生最關鍵的底層技術之一。
(2) 微服務:Martin
Fowler將微服務架構定義為一種架構模式/架構風格,將單獨的應用程序開發為一套小服務并獨立運行在自己的進程中,相互之間使用HTTP
API等輕量級機制通信。這些服務圍繞著具體業務進行構建,通過完全自動化部署機制來獨立部署,并可使用不同的編程語言書寫,以及不同數據存儲技術,并保持最低限度的集中式管理。
(3) DevOps:隨著云原生開源生態不斷完善、以及復雜功能不斷下沉到云,基本統一了軟件部署和運維的基本模式。在
DevOps之前,從業人員使用瀑布模型或敏捷開發模型進行軟件項目開發。DevOps作為Development和
Operations的組合,被定義為實現軟件開發和IT團隊之間流程自動化的一組實踐,這些實踐建立在團隊之間協作文化的基礎上,填補了開發端和運維端之間的信息鴻溝,以便更快、更可靠地構建、測試和發布軟件,目前已經成為主流的軟件開發交付模式。
(4) Service Mesh:服務網格,在云原生應用復雜的服務拓撲結構中,Service
Mesh是作為基礎設施層,負責在這些拓撲結構中實現請求的可靠傳遞。Service Mesh
通過在請求調用的路徑中增加Sidecar,將原本由客戶端完成的復雜功能下沉到Sidecar
中,實現對客戶端的簡化和服務間通信控制權的轉移,當系統中存在大量服務時,服務間的調用關系表現為網狀,這也是服務網格名稱的由來。

來源:《InfoQ:2021 云原生的技術探索與落地實踐(26頁).pdf》
推薦閱讀:
云原生是什么?技術的特點有哪些?和傳統應用的區別是什么?
《云原生產業聯盟:云原生發展白皮書(53頁).pdf》
《艾瑞咨詢:2021年云原生下的智能營銷研究報告(46頁).pdf》
《綠盟科技:2020云原生安全技術報告(87頁).pdf》