很多時候,圍繞云原生的討論會直接進(jìn)入技術(shù)選擇,如容器化和微服務(wù)。毫無疑問,這些都是云原生項(xiàng)目的潛在組成部分,但肯定不是全部。在本系列文章中,我們將從幾個不同的角度探索云原生,包括技術(shù)和基礎(chǔ)設(shè)施,還包括架構(gòu)、設(shè)計(jì),以及可能最容易被忽視的人員和流程。用最簡單的術(shù)語來說,云原生不只是說要遷移到云,而是要充分利用云基礎(chǔ)設(shè)施和服務(wù)的獨(dú)特性來快速交付業(yè)務(wù)價值。 云原生的概念在這個術(shù)語投入使用之前就已經(jīng)存在了。從某種意義上說,云原生是從公有云提供商開始提供簡單廉價的彈性計(jì)算能力實(shí)例開始的。接下來的問題就變成了,你該如何編寫應(yīng)用程序來利用這種新的基礎(chǔ)設(shè)施的靈活性,以及你可以因此獲得什么業(yè)務(wù)收益? 在過去的十年中,云原生方法和技術(shù)已經(jīng)發(fā)生了很大的變化,并且仍在不斷發(fā)展,但是云原生應(yīng)用程序所要實(shí)現(xiàn)的核心的技術(shù)和業(yè)務(wù)目標(biāo)仍然沒有變,這包括:
在后續(xù)的文章中,當(dāng)我們回顧云原生的“為什么”時,我們將對這些目標(biāo)進(jìn)行更細(xì)的分解,但即使從這個簡單的定義來看,我們也應(yīng)該清楚,云原生并不僅僅是指簡單地遷移到一種新類型的基礎(chǔ)設(shè)施,其含義要更廣泛。然而,盡管這些目標(biāo)很正確,但我們很難看到它們被應(yīng)用于具體的云原生環(huán)境。我們需要做更多的工作來明確云原生到底是什么意思。 一些與云原生相關(guān)的流行的參照標(biāo)準(zhǔn),比如微服務(wù),以及更早的宣言,比如 12 要素應(yīng)用,可能會讓你得出這樣的結(jié)論:云原生是一種架構(gòu)風(fēng)格的描述,其他選擇都是遵從這一架構(gòu)。這當(dāng)然有一定的道理,云原生架構(gòu)確實(shí)存在。然而,為了在云原生應(yīng)用上取得成功,企業(yè)必須有一個更全面的視角。除了架構(gòu)和基礎(chǔ)設(shè)施決策,還有組織和過程決策。這讓我們認(rèn)識到一個關(guān)鍵問題:
下圖顯示了這些決策之間的相互作用。 技術(shù)本身并不能獲得業(yè)務(wù)成果。 在文章“避免不完全的云原生”(https://www./article/LIRjAI0mhsClCooPtzLw)中,我們舉了一個很好的例子,描述了這些方面相互之間是如何鏈接在一起的,并專門指出了這些鏈接斷開時會發(fā)生什么。在本系列文章中,我們將探討云原生的成功與以下三個關(guān)鍵領(lǐng)域的協(xié)同變革的關(guān)系:架構(gòu)與設(shè)計(jì)、技術(shù)與基礎(chǔ)設(shè)施、人員與流程。下面我們將逐項(xiàng)進(jìn)行討論。 十多年前,“云”這個詞很大程度上指的是位置。通常,它指的是可以通過互聯(lián)網(wǎng)訪問的位于他人數(shù)據(jù)中心里的基礎(chǔ)設(shè)施。然而,如今的“云”更多的是指如何與那個基礎(chǔ)設(shè)施交互。事實(shí)上,位置元素已經(jīng)基本消失了,因?yàn)楝F(xiàn)在常見的是,一個類似云的設(shè)施運(yùn)行在自己的數(shù)據(jù)中心里——“私有云”,以及混合解決方案(可能會包含跨云的服務(wù)和工作負(fù)載)。 所以,如今的云計(jì)算更多的是關(guān)于你如何與基礎(chǔ)設(shè)施交互,它至少要提供以下內(nèi)容:
然而,隨著云平臺及概念的成熟,云原生中的云實(shí)際上還意味著對底層基礎(chǔ)設(shè)施的進(jìn)一步抽象。
在云原生的早期,這些功能通常是高度專有的,但現(xiàn)在,容器以及容器編排功能(如 Kubernetes)似乎已無處不在。像上面這樣的列表是針對容器的,還有其他值得注意的選項(xiàng),如無服務(wù)器 / 函數(shù)即服務(wù) (function As a service),它們被進(jìn)一步從基礎(chǔ)設(shè)施中抽象出來,而且將來可能會變得更加突出。 我們可能會涉及更多,如構(gòu)建自動化、服務(wù)網(wǎng)格、日志、跟蹤、分析、軟件定義網(wǎng)絡(luò)和存儲等等。因而,屆時我們將進(jìn)入云平臺上目前看來更專有的方面。希望隨著時間的推移,這些方面也會變得更加標(biāo)準(zhǔn)化。因此,在這里,“云”實(shí)際上是指具有上述特性的基礎(chǔ)設(shè)施和技術(shù)。 我們所說的“原生(native)”是指我們將構(gòu)建的解決方案不僅僅是“運(yùn)行在云上”,而是專門利用了云平臺的獨(dú)特性。應(yīng)用程序不會魔法般地繼承底層云基礎(chǔ)設(shè)施的優(yōu)點(diǎn),我們必須教會它們方法。 我們在語言上要特別小心。當(dāng)我們使用“原生”來指“云平臺的獨(dú)特性”時,我們并不是指特定云提供商的特定方面。那將是“云提供商原生”,實(shí)際上,這將完全背離可移植性和使用開放標(biāo)準(zhǔn)的目標(biāo)。我們指的是,對于所有云平臺來說在概念上都通用的東西。換句話說,就是我們在上一節(jié)中所強(qiáng)調(diào)的基礎(chǔ)設(shè)施和技術(shù)。 這對架構(gòu)和設(shè)計(jì)有重要的影響。例如,我們需要確保編寫的解決方案可以水平伸縮,并且可以利用自動恢復(fù)機(jī)制。在這里,云原生可能與微服務(wù)概念存在很大的重疊。例如,這包括編寫具有以下特性的組件:
我們將在下一篇文章中更深入地描述它們,但是現(xiàn)在,最重要的是要注意,它們之間存在著高度的依賴關(guān)系。例如,如果組件是高度有狀態(tài)的,那么創(chuàng)建一個一次性的組件就會困難很多。本質(zhì)上,減少依賴關(guān)系有助于使組件更加輕量化。定義良好的接口將使得重新綁定一次性組件更容易,諸如此類。這只是一個小例子,是為了說明更廣泛的觀點(diǎn),即遷移到云原生方法需要同時在許多相關(guān)方面進(jìn)行變革。我們逐漸發(fā)現(xiàn),這些云原生要素是相輔相成的。 這可能不太明顯,當(dāng)我們運(yùn)用上述關(guān)于架構(gòu)和底層基礎(chǔ)設(shè)施的假設(shè)和決策時,我們就獲得了從根本上改變?nèi)藛T和流程處理方式的機(jī)會。事實(shí)上,我們可以說,它需要這些改變。 下面我們探討了微服務(wù)方法對人員/流程的一些影響:
同樣,容器技術(shù)對所需的技能集、角色和流程也有影響:
綜上所述,我們可以看到,云原生需要從三個不同的方面進(jìn)行定義。
如今,技術(shù)方面的重點(diǎn)當(dāng)然是容器化,但重要的是該技術(shù)的自助配置、彈性和自動恢復(fù)等特性,而不是技術(shù)本身。 在架構(gòu)上,我們最常用的方法是,根據(jù)微服務(wù)原則來創(chuàng)建更加輕量級、細(xì)粒度、狀態(tài)最小化的組件,以便可以更好地映射到抽象的基礎(chǔ)設(shè)施。如果沒有正確的設(shè)計(jì)原則,那么我們的解決方案將無法從平臺中獲益。例如,它不會動態(tài)伸縮,或提供細(xì)粒度的彈性,或提供快速構(gòu)建和部署,或與平臺上的其他應(yīng)用程序保持操作一致性。 通常,人們會認(rèn)為,人員和流程的變革與云原生無關(guān),但實(shí)際上,它們關(guān)系密切,我們將它們視為是特性定義的一部分。缺少軟件開發(fā)生命周期的自動化,將意味著團(tuán)隊(duì)要將更多的時間花在日常事務(wù)上,而將相對較少的時間花在業(yè)務(wù)價值上。一個笨重的、自上而下的組織和治理結(jié)構(gòu)將無法提供團(tuán)隊(duì)所需的自主權(quán)來幫助他們進(jìn)行業(yè)務(wù)創(chuàng)新。 因此,在對云原生的實(shí)際含義有了更具體的定義后,我們就可以進(jìn)行下一步并擴(kuò)展前面的圖表了。 在上面的圖表中,我們針對這些方面的關(guān)鍵要素列出了一些問題。在本系列的后續(xù)文章中,我們將考慮“如何”構(gòu)建云原生解決方案,并從人員和流程方面入手詳細(xì)研究每個要素。 然而,應(yīng)該清楚的是,實(shí)現(xiàn)完全的云原生并非易事,并且需要業(yè)務(wù)支持。因此,在另一篇文章中,我們將對成功實(shí)現(xiàn)云原生所需的投入進(jìn)行總結(jié),并回過頭來,重新考慮下,你實(shí)現(xiàn)微服務(wù)的初衷是什么,以及你希望獲得什么樣的好處。 感謝 我們要誠摯地感謝 Holly Cummins 和 Callum Jackson,感謝他們對該文章系列的輸入和評論。 原文鏈接: https:///swlh/what-does-cloud-native-really-mean-1b10ed003aa9 你也「在看」嗎??? |
|