雲原生與雲原生應用概念解析

什麼是雲原生?
雲原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一個概念,是他多年的架構和諮詢總結出來的一個思想的集合。

在雲的時代,應用會更多的遷移到雲端,基於雲的架構設計和開發模式需要一套全新的理念去承載,於是雲原生思想應運而生。

雲原生是面向“雲”而設計的應用,因此技術部分依賴於在傳統雲計算的3層概念(基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS)),例如,敏捷的不可變基礎設施交付類似於IaaS,用來提供計算網絡存儲等基礎資源,這些資源是可編程且不可變的,直接通過API可以對外提供服務;有些應用通過PaaS服務本來就能組合成不同的業務能力,不一定需要從頭開始建設;還有一些軟件只需要“雲”的資源就能直接運行起來爲雲用戶提供服務,即SaaS能力,用戶直接面對的就是原生的應用。

在一般用法中,“雲原生”是一種構建和運行應用程序的方法,它利用了雲計算交付模型的優勢。“雲原生”是關於如何創建和部署應用程序,和位置無關。 這意味着應用程序位於雲中,而不是傳統數據中心。

概況來說,雲原生(Cloud Native)是一個思想的集合,包括DevOps、持續交付(Continuous Delivery)、微服務(MicroServices)、敏捷基礎設施(Agile Infrastructure)、康威定律(Conways Law)等,以及根據商業能力對公司進行重組。Cloud Native既包含技術(微服務,敏捷基礎設施),也包含管理(DevOps,持續交付,康威定律,重組等)。Cloud Native也可以說是一系列Cloud技術、企業管理方法的集合。
雲原生更是一個不斷豐富的理念和技術體系,它在基礎架構、應用程序和管理上都將深刻的影響和改變企業雲的未來!

雲原生應用
雲原生應用是天然適合雲特點的應用,雲原生應用系統需要與操作系統等基礎設施分離,不應該依賴Linux或Windows等底層平臺,或依賴某個雲平臺。也就是說,應用從開始就設計爲運行在雲中,無論私有云或公有云;其次,該應用必須能滿足擴展性需求,垂直擴展(向上和向下)或水平擴展(跨節點服務器)。
CNCF給出了雲原生應用的三大特徵:

容器化封裝:以容器爲基礎,提高整體開發水平,形成代碼和組件重用,簡化雲原生應用程序的維護。在容器中運行應用程序和進程,並作爲應用程序部署的獨立單元,實現高水平資源隔離。
動態管理:通過集中式的編排調度系統來動態的管理和調度。
面向微服務:明確服務間的依賴,互相解耦。

雲原生應用和本地部署應用程序之間的差異

雲原生應用程序開發採用與傳統企業應用程序完全不同的體系結構。

編程語言

編寫在公司服務器上運行的本地部署應用程序往往使用傳統語言編寫,如C/C ++,C#或其他Visual Studio語言(如果部署在Windows Server平臺上)和企業級Java。如果它在大型機上,可能使用Cobol。

雲原生應用更有可能以網絡爲中心的語言編寫,這意味着使用HTML,CSS,Java,JavaScript,.Net,Go,Node.js,PHP,Python和Ruby。

可更新

雲原生應用程序始終是最新的,雲原生應用始終可用。

本地部署應用程序需要更新,並且通常由供應商按訂閱提供,並且在安裝更新時需要停機。

彈性

雲原生應用程序通過在峯值期間增加的資源來利用雲的彈性。如果你的基於雲的電子商務應用程序使用頻繁,你可以將其設置爲使用額外的計算資源,直到峯值消退然後關閉這些資源。雲原生應用可以根據需要調整增加資源和規模。

本地部署應用程序無法動態擴展。

多租戶

雲原生應用程序在虛擬化環境中工作,並與其他應用程序共享資源沒有問題。

許多本地部署應用程序要麼在虛擬環境中不能正常工作,要麼根本不工作,必須要非虛擬化環境。

連接資源

本地部署應用程序與網絡資源的連接相當嚴格,例如網絡,安全性,權限和存儲。其中許多資源需要進行硬編碼,如果移動或更改了任何內容,它們就會中斷。

“網絡和存儲在雲端完全不同。當你聽到“重新平臺化”一詞時,通常是爲了適應網絡,存儲甚至數據庫技術的變化,以允許應用程序在雲中運行,“Deloitte的Kavis說。

停止時間

雲中存在比本地部署更大的冗餘,因此如果雲供應商遭受中斷,則另一個冗餘區域可以消除中斷。

本地部署應用程序可能已準備好故障轉移,但如果服務器出現故障,應用程序可能會崩潰。

自動化

雲計算的大部分都是自動化的,其中包括應用程序管理。 “雲原生交付的好處,特別是速度和敏捷性,依賴於可靠,經過驗證和經過審覈的已知良好流程的基礎,這些流程根據自動化和編排工具的需要而不是通過人工干預重複執行,”Splunk的Mann說。工程師應該考慮自動化是不止一次做的任何事情,以實現可重複性,自助服務,敏捷性,可擴展性以及審計和控制。

本地部署應用程序必須手動管理。

模塊化設計

本地部署應用程序往往在設計上是單一的。他們肯定會將一些工作卸載到庫中,但最終它是一個包含大量子程序的大應用程序。雲原生應用程序更加模塊化,許多功能分解爲微服務。這允許在不需要時關閉它們,並將更新推廣到那個模塊,而不是整個應用程序。

無狀態

雲的鬆耦合特性意味着應用程序與基礎架構無關,這意味着它們是無狀態的。雲原生應用程序將其狀態存儲在數據庫或其他外部實體中,因此實例可以來去,應用程序仍然可以跟蹤應用程序在工作單元中的位置。 “這是鬆耦合的本質。不依賴於基礎架構允許和應用程序以高度分佈的方式運行,並且仍然保持其狀態獨立於底層基礎架構的彈性性質,“Kavis說。

大多數本地部署應用程序都是有狀態的,這意味着它們會在運行代碼的基礎架構上存儲應用程序的狀態。因此,在添加服務器資源時可能會破壞應用程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章