新聞中心
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心
云原生究竟意味著什么?
通常,圍繞云原生的對話會直接潛入諸如容器化和微服務(wù)之類的技術(shù)選擇中。這些絕對是云原生項(xiàng)目的潛在組成部分,但絕對不是全部。在本系列文章中,我們將從幾個(gè)不同的角度探討本機(jī)云,當(dāng)然包括技術(shù)和基礎(chǔ)架構(gòu),還包括架構(gòu),設(shè)計(jì),以及可能最被忽略的人員和流程。用最簡單的術(shù)語來說,云原生意味著不僅要遷移到云,還要充分利用云基礎(chǔ)架構(gòu)和服務(wù)的獨(dú)特性來快速交付業(yè)務(wù)價(jià)值。
在該術(shù)語本身開始使用之前,就已經(jīng)存在云原生概念。從某種意義上說,云原生始于公共云供應(yīng)商開始提供對彈性計(jì)算能力實(shí)例的輕松且負(fù)擔(dān)得起的訪問。問題就變成了,如何利用該新基礎(chǔ)架構(gòu)的靈活性來編寫應(yīng)用程序,以及由此帶來的業(yè)務(wù)收益?
在過去十年中,云原生方法和技術(shù)發(fā)生了很大變化,并且仍在不斷發(fā)展,但是云原生應(yīng)用程序要實(shí)現(xiàn)的核心技術(shù)和業(yè)務(wù)目標(biāo)卻保持不變。這些包括:敏捷性和生產(chǎn)力:實(shí)現(xiàn)以業(yè)務(wù)指標(biāo)為指導(dǎo)的快速創(chuàng)新。降低維護(hù)風(fēng)險(xiǎn),并使環(huán)境保持最新狀態(tài)。
彈性和可伸縮性:以自我修復(fù)和無停機(jī)的持續(xù)可用性為目標(biāo)。提供彈性縮放和無限容量的感知。
優(yōu)化和效率:優(yōu)化基礎(chǔ)設(shè)施和人力資源的成本。啟用位置和提供者之間的自由移動。當(dāng)我們回顧云原生的“為什么”時(shí),我們將在后面的文章中進(jìn)一步細(xì)分這些目標(biāo),但是希望即使是從這個(gè)簡單的定義來看,也應(yīng)該清楚的是,云原生的范圍比僅僅向新的類型遷移還廣?;A(chǔ)設(shè)施。但是,盡管這些目標(biāo)是準(zhǔn)確的,但很難看出它們專門適用于本機(jī)云。我們需要做更多的工作來定義云原生的真正含義。
與云原生相關(guān)的流行參考點(diǎn)(例如微服務(wù))和較早的清單(例如12factor應(yīng)用)可能會讓您得出結(jié)論,云原生是對體系結(jié)構(gòu)樣式的描述,其他選擇也隨之而來。毫無疑問,云原生架構(gòu)確實(shí)存在。但是,為了在云原生平臺上取得成功,公司必須采取更全面的看法。除了架構(gòu)和基礎(chǔ)架構(gòu)決策外,還存在組織和流程決策。這導(dǎo)致我們實(shí)現(xiàn)了一個(gè)關(guān)鍵的實(shí)現(xiàn):
單憑技術(shù)無法取得業(yè)務(wù)成果
下圖顯示了這些決策如何相互作用。單憑技術(shù)無法取得業(yè)務(wù)成果
我們的文章“避免使用不完整的云原生采用”中描述了如何將這些方面相互鏈接以及有關(guān)鏈接斷開時(shí)發(fā)生的警告的一個(gè)很好的示例。在本系列文章中,我們將展示云原生的成功如何與這三個(gè)關(guān)鍵領(lǐng)域的變更協(xié)調(diào)相關(guān)聯(lián),以便成功進(jìn)行協(xié)調(diào):架構(gòu)與設(shè)計(jì),技術(shù)與基礎(chǔ)架構(gòu),人員與流程。讓我們更詳細(xì)地探討每一個(gè)。
技術(shù)與基礎(chǔ)設(shè)施:在“云原生”的背景下,“云”是什么?
十年或更早之前,“云”一詞主要是關(guān)于位置的。它通常指的是位于可通過Internet訪問的其他人的數(shù)據(jù)中心中的基礎(chǔ)結(jié)構(gòu)。但是,今天的“云”更多地說明了您如何與該基礎(chǔ)架構(gòu)進(jìn)行交互。確實(shí),位置元素幾乎消失了,因?yàn)楝F(xiàn)在很常見的是在您自己的數(shù)據(jù)中心中運(yùn)行類似云的設(shè)施-“私有云”,以及可能涉及在兩者之間運(yùn)行的服務(wù)和工作負(fù)載的混合解決方案。
因此,今天的云更多地與您如何與基礎(chǔ)架構(gòu)互動有關(guān),至少必須提供以下內(nèi)容:自我配置:即時(shí)獲取新的虛擬資源(服務(wù)器,存儲,網(wǎng)絡(luò))。
彈性:根據(jù)需求自動向上和向下擴(kuò)展資源(及其相關(guān)的成本)。
自動恢復(fù):資源旨在從故障中恢復(fù)而無需干預(yù),并且對服務(wù)可用性的影響最小。但是,隨著云平臺和概念的日趨成熟,云原生云實(shí)際上也意味著對基礎(chǔ)架構(gòu)的更大抽象。不變的部署-例如基于容器映像的部署
聲明式配置-提供基礎(chǔ)狀態(tài)的“基礎(chǔ)架構(gòu)即代碼”
與運(yùn)行時(shí)無關(guān)—平臺將組件(例如容器)視為黑盒,而無需了解其內(nèi)容
組件編排—通過通用的聲明性策略和配置啟用管理(監(jiān)視,擴(kuò)展,可用性,路由等)。在云原生的早期,這些功能通常是高度專有的,但是現(xiàn)在,這種功能幾乎以容器和容器編排功能(例如Kubernetes)的形式無處不在。因此,上面的列表非常特定于容器的詞匯表,但是值得認(rèn)識到還有其他選擇,例如無服務(wù)器/作為服務(wù)的服務(wù)會進(jìn)一步從基礎(chǔ)結(jié)構(gòu)中抽象出來,并且將來可能會變得更加突出。
我們可以包括更多內(nèi)容,例如構(gòu)建自動化,服務(wù)網(wǎng)格,日志記錄,跟蹤,分析,軟件定義的網(wǎng)絡(luò)和存儲等。但是,我們隨后將涉足云平臺當(dāng)前更具專有性的方面。希望隨著時(shí)間的流逝,這些也將變得更加標(biāo)準(zhǔn)化。因此,在這種情況下,“云”實(shí)際上表示具有上面列出的特殊屬性的基礎(chǔ)架構(gòu)和技術(shù)。
架構(gòu)與設(shè)計(jì):“云原生”中的“原生”是什么意思?
“原生”是指我們將構(gòu)建的解決方案不僅要“在云上運(yùn)行”,而且要特別利用云平臺的獨(dú)特性。應(yīng)用程序不僅神奇地繼承了底層云基礎(chǔ)架構(gòu)的優(yōu)勢,還必須教會他們?nèi)绾尾僮鳌?
在這里,我們需要非常小心地使用語言。當(dāng)我們使用“原生”來指“云平臺的唯一性”時(shí),我們并不是指特定云提供商的特定于供應(yīng)商的方面。那將是“云提供商本機(jī)”,實(shí)際上,這將完全與圍繞可移植性和使用開放標(biāo)準(zhǔn)的目標(biāo)背道而馳。我們的意思是概念上所有云平臺都通用的東西。換句話說,我們在上一節(jié)中有關(guān)基礎(chǔ)結(jié)構(gòu)和技術(shù)的內(nèi)容中強(qiáng)調(diào)了這些內(nèi)容。
對體系結(jié)構(gòu)和設(shè)計(jì)有重要影響。我們需要編寫解決方案以確保例如它們可以水平縮放,并且可以與自動恢復(fù)機(jī)制一起使用。在這里,云原生可能與微服務(wù)概念重疊最多。例如,這包括編寫以下組件:最小化狀態(tài)
減少依賴
具有定義明確的界面,
輕巧
是一次性的在下一篇文章中,我們將對它們進(jìn)行更深入的描述,但是到目前為止,可能要注意的最重要的一點(diǎn)是它們都是高度相互依賴的。例如,如果要?jiǎng)?chuàng)建具有高度狀態(tài)的一次性組件,則要困難得多。減少依賴關(guān)系從本質(zhì)上將有助于使組件更輕便。具有明確定義的界面將使可拋棄的組件更容易重新實(shí)例化,依此類推。這只是一個(gè)更廣泛點(diǎn)的小例子,即遷移到云原生方法需要同時(shí)在許多相關(guān)方面進(jìn)行更改。我們逐漸發(fā)現(xiàn)的這些云原生成分是相輔相成的。
人員和流程:“云原生”如何改變我們的組織和工作方式?
可能不太明顯的是,當(dāng)我們使用有關(guān)架構(gòu)和底層基礎(chǔ)結(jié)構(gòu)的上述假設(shè)和決策時(shí),它為我們提供了從根本上改變我們處理人員和流程方式的機(jī)會。的確,可以認(rèn)為必須進(jìn)行這些更改。
下面,我們探討了微服務(wù)方法對人員/流程的影響:微服務(wù)意味著您是在小型自治團(tuán)隊(duì)中構(gòu)建服務(wù)。這只是Conway定律的應(yīng)用-如果您希望系統(tǒng)由小的,解耦的組件組成,則必須允許您的團(tuán)隊(duì)規(guī)模較小,并且不能與其他團(tuán)隊(duì)緊密耦合-僅允許通過定義明確且受控接口。
微服務(wù)還意味著您正在使用敏捷方法并將DevOps原理應(yīng)用于開發(fā)流程。如果沒有,您將如何獲得端到端的反饋以及對代碼的快速迭代,這是該方法的核心優(yōu)勢。反過來,DevOps將意味著進(jìn)一步的流程改進(jìn),例如持續(xù)集成和持續(xù)交付/部署(CI / CD)。
DevOps要求您采用其他特定的技術(shù)流程,例如自動化測試(可能包括測試驅(qū)動的開發(fā)),并強(qiáng)烈引導(dǎo)您進(jìn)行基于主干的開發(fā)。最小化測試周期的渴望可能會進(jìn)一步導(dǎo)致您探索改變?nèi)藗兣c工作相結(jié)合的方式(例如,結(jié)對編程)。同樣,容器技術(shù)也會影響所需的技能,角色和流程:云基礎(chǔ)架構(gòu)通常使用諸如Kubernetes知識之類的通用云平臺技能,而不是特定的運(yùn)行時(shí)或產(chǎn)品技能,在操作(部署,擴(kuò)展,高可用性等)上實(shí)現(xiàn)更多目標(biāo)。這從根本上減少了跨多個(gè)技術(shù)領(lǐng)域工作的人員的學(xué)習(xí)曲線,并實(shí)現(xiàn)了更廣泛的角色和知識共享,從而提高了效率并降低了成本。它還鼓勵(lì)現(xiàn)場可靠性工程師轉(zhuǎn)向盡可能使操作任務(wù)自動化。
容器,特別是容器映像技術(shù),簡化了CI / CD管道的自動化,從而縮短了構(gòu)建/發(fā)布周期時(shí)間,并提高了生產(chǎn)率。構(gòu)建管線實(shí)現(xiàn)方式的同質(zhì)性提高意味著可以更輕松地維護(hù)它們,并且確實(shí)可以由更廣泛的人群使用。
不變的容器映像與聲明性的“將基礎(chǔ)結(jié)構(gòu)作為代碼”結(jié)合使用,可以提高跨不同環(huán)境的部署的一致性。這降低了測試和診斷成本,提高了部署速度,并減少了停機(jī)時(shí)間。從過程的角度來看,這可以實(shí)現(xiàn)可靠性,性能和安全性測試等方面的“左移”。反過來,這又帶來了更多的DevOps / DevSecOps文化,在這種文化中,開發(fā)人員對代碼的操作質(zhì)量負(fù)有更大的責(zé)任??偨Y(jié)“云原生”的含義
綜合到目前為止所討論的內(nèi)容,我們可以看到需要從三個(gè)不同方面定義云原生。抽象化基礎(chǔ)架構(gòu)復(fù)雜性的平臺。(基礎(chǔ)設(shè)施和技術(shù))
充分利用基礎(chǔ)架構(gòu)抽象(架構(gòu)和設(shè)計(jì))的解決方案
開發(fā),運(yùn)營和業(yè)務(wù)流程的自動化,以及開發(fā)團(tuán)隊(duì)(人員和流程)的自主權(quán)不斷提高今天,技術(shù)方面當(dāng)然非常關(guān)注容器化,但是重要的是諸如該技術(shù)的自我配置,彈性和自動恢復(fù)之類的屬性,而不是該技術(shù)本身。
在體系結(jié)構(gòu)上,我們最常使用微服務(wù)原理來創(chuàng)建更輕量,細(xì)粒度,狀態(tài)最小的組件,從而更好地映射到抽象基礎(chǔ)架構(gòu)。沒有正確的設(shè)計(jì)原則,我們的解決方案將無法從該平臺中受益。例如,它將不會動態(tài)擴(kuò)展,也不會提供細(xì)粒度的彈性,不會提供快速的構(gòu)建和部署,也不會與平臺上的其他應(yīng)用程序保持操作一致性。
人們通常將人員和流程更改與云原生隔離開來,但實(shí)際上它們是并駕齊驅(qū)的,我們認(rèn)為它們是定義特征的一部分。缺乏軟件開發(fā)生命周期的自動化將意味著團(tuán)隊(duì)需要花更多的時(shí)間在平凡的事情上,而花在商業(yè)價(jià)值上的時(shí)間卻相對較少。繁重,自上而下的組織和治理結(jié)構(gòu)將無法為團(tuán)隊(duì)提供幫助他們進(jìn)行業(yè)務(wù)創(chuàng)新所需的自主權(quán)。
因此,有了對云原生實(shí)際含義的更具體定義,我們就可以開始下一步,并擴(kuò)展之前的圖表。在上圖中,我們提供了有關(guān)這些方面的關(guān)鍵要素的一些信息。在本系列的后續(xù)文章中,我們將考慮“如何”構(gòu)建云原生解決方案,并從人員和流程問題入手詳細(xì)研究每個(gè)要素。
但是,應(yīng)該已經(jīng)很清楚,完全采用云本地化并非易事,并且需要業(yè)務(wù)贊助。因此,在另一篇文章中,我們將匯總我們所學(xué)到的有關(guān)成功實(shí)現(xiàn)云原生所需的承諾的知識,并退后一步來重新考慮“為什么”您可能首先使云原生移動,以及什么?您可能希望實(shí)現(xiàn)的好處。
作者:聞數(shù)起舞? 來源:今日頭條
|