雲原生到底意味著什麼?

2021-01-08 InfoQ技術實驗室

本文最初發布於 The Startup 博客,經原作者授權由 InfoQ 中文站翻譯並分享。

註:這是本系列文章的第一部分,其他文章會在接下來的幾周內陸續發表。

很多時候,圍繞雲原生的討論會直接進入技術選擇,如容器化和微服務。毫無疑問,這些都是雲原生項目的潛在組成部分,但肯定不是全部。在本系列文章中,我們將從幾個不同的角度探索雲原生,包括技術和基礎設施,還包括架構、設計,以及可能最容易被忽視的人員和流程。用最簡單的術語來說,雲原生不只是說要遷移到雲,而是要充分利用雲基礎設施和服務的獨特性來快速交付業務價值。

雲原生的概念在這個術語投入使用之前就已經存在了。從某種意義上說,雲原生是從公有雲提供商開始提供簡單廉價的彈性計算能力實例開始的。接下來的問題就變成了,你該如何編寫應用程式來利用這種新的基礎設施的靈活性,以及你可以因此獲得什麼業務收益?

在過去的十年中,雲原生方法和技術已經發生了很大的變化,並且仍在不斷發展,但是雲原生應用程式所要實現的核心的技術和業務目標仍然沒有變,這包括:

敏捷性和生產力:支持業務指標指導下的快速創新。降低維護風險並保持環境的持續更新。彈性和可伸縮性:以自修復和無停機時間的持續可用性為目標。提供彈性縮放和容量無限的感覺。優化和效率:優化基礎設施和人力資源成本。可以在不同位置和提供商之間自由遷移。在後續的文章中,當我們回顧雲原生的「為什麼」時,我們將對這些目標進行更細的分解,但即使從這個簡單的定義來看,我們也應該清楚,雲原生並不僅僅是指簡單地遷移到一種新類型的基礎設施,其含義要更廣泛。然而,儘管這些目標很正確,但我們很難看到它們被應用於具體的雲原生環境。我們需要做更多的工作來明確雲原生到底是什麼意思。

一些與雲原生相關的流行的參照標準,比如微服務,以及更早的宣言,比如12要素應用,可能會讓你得出這樣的結論:雲原生是一種架構風格的描述,其他選擇都是遵從這一架構。這當然有一定的道理,雲原生架構確實存在。然而,為了在雲原生應用上取得成功,企業必須有一個更全面的視角。除了架構和基礎設施決策,還有組織和過程決策。這讓我們認識到一個關鍵問題:

技術本身並不能獲得業務成果。

下圖顯示了這些決策之間的相互作用。

技術本身並不能獲得業務成果。

在文章「避免不完全的雲原生」中,我們舉了一個很好的例子,描述了這些方面相互之間是如何連結在一起的,並專門指出了這些連結斷開時會發生什麼。在本系列文章中,我們將探討雲原生的成功與以下三個關鍵領域的協同變革的關係:架構與設計、技術與基礎設施、人員與流程。下面我們將逐項進行討論。

技術與基礎設施:「雲原生」語境下的「雲」是什麼?

十多年前,「雲」這個詞很大程度上指的是位置。通常,它指的是可以通過網際網路訪問的位於他人數據中心裡的基礎設施。然而,如今的「雲」更多的是指如何與那個基礎設施交互。事實上,位置元素已經基本消失了,因為現在常見的是,一個類似雲的設施運行在自己的數據中心裡——「私有雲」,以及混合解決方案(可能會包含跨雲的服務和工作負載)。

所以,如今的雲計算更多的是關於你如何與基礎設施交互,它至少要提供以下內容:

自助配置:可以即時申請新的虛擬資源(伺服器、存儲、網絡)。彈性:根據需求自動調整資源(及相關成本)。自動恢復:資源可按設計在沒有人為幹預的情況下從故障中恢復,將對服務可用性的影響降至最低。然而,隨著雲平臺及概念的成熟,雲原生中的雲實際上還意味著對底層基礎設施的進一步抽象。

不可變部署——例如,基於容器鏡像的部署。聲明式配置——「基礎設施即代碼」提供將來狀態。運行時無關——平臺將組件(例如容器)視為黑盒,不需要理解它們的內容。組件編排——通過通用的聲明式策略和配置賦能管理(監控、伸縮、可用性、路由等)。在雲原生的早期,這些功能通常是高度專有的,但現在,容器以及容器編排功能(如 Kubernetes)似乎已無處不在。像上面這樣的列表是針對容器的,還有其他值得注意的選項,如無伺服器/函數即服務(function As a service),它們被進一步從基礎設施中抽象出來,而且將來可能會變得更加突出。

我們可能會涉及更多,如構建自動化、服務網格、日誌、跟蹤、分析、軟體定義網絡和存儲等等。因而,屆時我們將進入雲平臺上目前看來更專有的方面。希望隨著時間的推移,這些方面也會變得更加標準化。因此,在這裡,「雲」實際上是指具有上述特性的基礎設施和技術。

架構與設計:「雲原生」裡的「原生」是什麼意思?

我們所說的「原生(native)」是指我們將構建的解決方案不僅僅是「運行在雲上」,而是專門利用了雲平臺的獨特性。應用程式不會魔法般地繼承底層雲基礎設施的優點,我們必須教會它們方法。

我們在語言上要特別小心。當我們使用「原生」來指「雲平臺的獨特性」時,我們並不是指特定雲提供商的特定方面。那將是「雲提供商原生」,實際上,這將完全背離可移植性和使用開放標準的目標。我們指的是,對於所有雲平臺來說在概念上都通用的東西。換句話說,就是我們在上一節中所強調的基礎設施和技術。

這對架構和設計有重要的影響。例如,我們需要確保編寫的解決方案可以水平伸縮,並且可以利用自動恢復機制。在這裡,雲原生可能與微服務概念存在很大的重疊。例如,這包括編寫具有以下特性的組件:

將有狀態性降至最低減少依賴有明確定義的接口輕量級一次性我們將在下一篇文章中更深入地描述它們,但是現在,最重要的是要注意,它們之間存在著高度的依賴關係。例如,如果組件是高度有狀態的,那麼創建一個一次性的組件就會困難很多。本質上,減少依賴關係有助於使組件更加輕量化。定義良好的接口將使得重新綁定一次性組件更容易,諸如此類。這只是一個小例子,是為了說明更廣泛的觀點,即遷移到雲原生方法需要同時在許多相關方面進行變革。我們逐漸發現,這些雲原生要素是相輔相成的。

人員和流程:「雲原生」對我們的組織和工作方式有何影響?

這可能不太明顯,當我們運用上述關於架構和底層基礎設施的假設和決策時,我們就獲得了從根本上改變人員和流程處理方式的機會。事實上,我們可以說,它需要這些改變。

下面我們探討了微服務方法對人員/流程的一些影響:

微服務意味著你將在小型、自治團隊中構建服務。這只是康威定律的簡單應用——如果你希望自己的系統是由解耦的小組件組成,那麼你的團隊也必須很小,並且與其他團隊之間是鬆耦合的——只允許通過定義良好且妥善治理的接口進行正式通信。微服務還意味著你正在使用敏捷方法,並將DevOps原則應用到開發過程中。如果沒有,你會無法獲得端到端的反饋和對代碼的快速迭代,這是該方法的核心優勢。DevOps則意味著進一步的流程改進,如持續集成和持續交付/部署(CI/CD)。DevOps需要你採用其他特定的技術流程,如自動化測試(可能包括測試驅動開發),並引導你走向基於主幹的開發。最小化測試周期的願望可能會進一步引導你探索改變人們工作的方式(例如,結對編程)。同樣,容器技術對所需的技能集、角色和流程也有影響:

通常,雲基礎設施使用通用的雲平臺技能(比如Kubernetes的知識)來實現更多的操作(部署、擴展、高可用性等),而不是特定的運行時或產品技能。這從根本上減少了跨技術領域工作人員的學習曲線,並實現了更廣泛的角色和知識共享,提高了效率,降低了成本。它還鼓勵人們向站點可靠性工程師轉變,儘可能地實現操作任務的自動化。容器,特別是容器鏡像技術簡化了CI/CD管道的自動化,縮短了構建/發布周期,提高了生產率。管道實現方式趨同,意味著它們更容易維護,實際上也更容易被更廣泛的人群所使用。不可變容器鏡像與聲明式「基礎設施即代碼」相結合,提高了跨不同環境部署的一致性,降低了測試和診斷成本,提高了部署速度,並減少了停機時間。從流程的角度來看,這使得可靠性、性能和安全測試等方面的「左移」成為可能。反過來,這也增強了DevOps/DevSecOps文化,使開發人員對代碼的操作質量負起更多的責任。小結:「雲原生」到底意味著什麼?

綜上所述,我們可以看到,雲原生需要從三個不同的方面進行定義。

對基礎設施複雜性進行抽象的平臺。(基礎設施和技術)充分利用基礎架構抽象的解決方案。(架構和設計)開發、操作和業務流程的自動化,以及開發團隊自治性的提升。(人員和流程)如今,技術方面的重點當然是容器化,但重要的是該技術的自助配置、彈性和自動恢復等特性,而不是技術本身。

在架構上,我們最常用的方法是,根據微服務原則來創建更加輕量級、細粒度、狀態最小化的組件,以便可以更好地映射到抽象的基礎設施。如果沒有正確的設計原則,那麼我們的解決方案將無法從平臺中獲益。例如,它不會動態伸縮,或提供細粒度的彈性,或提供快速構建和部署,或與平臺上的其他應用程式保持操作一致性。

通常,人們會認為,人員和流程的變革與雲原生無關,但實際上,它們關係密切,我們將它們視為是特性定義的一部分。缺少軟體開發生命周期的自動化,將意味著團隊要將更多的時間花在日常事務上,而將相對較少的時間花在業務價值上。一個笨重的、自上而下的組織和治理結構將無法提供團隊所需的自主權來幫助他們進行業務創新。

因此,在對雲原生的實際含義有了更具體的定義後,我們就可以進行下一步並擴展前面的圖表了。

在上面的圖表中,我們針對這些方面的關鍵要素列出了一些問題。在本系列的後續文章中,我們將考慮「如何」構建雲原生解決方案,並從人員和流程方面入手詳細研究每個要素。

然而,應該清楚的是,實現完全的雲原生並非易事,並且需要業務支持。因此,在另一篇文章中,我們將對成功實現雲原生所需的投入進行總結,並回過頭來,重新考慮下,你實現微服務的初衷是什麼,以及你希望獲得什麼樣的好處。

感謝

我們要誠摯地感謝 Holly Cummins 和 Callum Jackson,感謝他們對該文章系列的輸入和評論.

原文連結:

What Does Cloud-Native Really Mean?

https://medium.com/swlh/what-does-cloud-native-really-mean-1b10ed003aa9

延伸閱讀:

2021年,不能錯過的十大技術趨勢 | InfoQ特別策劃-InfoQ

關注我並轉發此篇文章,即可獲得學習資料~若想了解更多,也可移步InfoQ官網,獲取InfoQ最新資訊~

相關焦點

  • 解讀容器的 2020:尋找雲原生的下一站
    這種平臺構建這生態的高度集中,與雲原生希望構建的「普惠式」未來,顯然是不相符的。當然,既然技術發展還沒有跟上願景,那麼雲原生社區也就不會停下腳步。探索雲原生的下一站   2020 年的雲原生可以說是整個雲計算生態中發展最迅速的一條主線脈絡,而也正是伴隨著這樣的發展勁頭,雲原生在新的一年裡,已經要開始思考它的下一步發展空間。事實上,我們已經能夠看到各種各樣的廠商和團隊在不同的領域積極發力和探索。
  • 阿里雲資料庫李飛飛:雲計算推動資料庫向雲原生快速演進
    關鍵詞:進入「雲原生」時代,全面布局雲原生資料庫  如今,阿里雲資料庫經歷了傳統商業資料庫,走過了託管資料庫,已經進入了以自研為主的雲原生資料庫產品階段,並且開啟了全面的雲原生布局,進入「雲原生」時代。  2020年的Gartner的報告中,「阿里雲資料庫」赫然出現在領導者象限中。
  • 如何形容2020這一年的雲計算 雲原生的技術場景大爆發
    因為想要應對如此短時期激增的數據流量,採用彈性、靈活的雲原生服務,無疑是最可靠的選擇。 2020年,雲原生已經走進企業真實業務場景,完成從技術價值到業務價值的轉變。根據Gartner數據預測,到2022年,75%的全球化企業將在生產中使用「雲原生的容器化應用」。 因此,雲原生幾乎成為近兩年來雲計算領域最火的一個名詞。似乎哪一家雲計算廠商不提雲原生都感覺自己掉隊了。
  • 睿雲獲首輪千萬元投資,新合伙人加入推進雲原生服務戰略升級
    2020年10月27日,雲原生領域創業公司睿雲(wise2c.com)宣布完成首輪千萬元的股權融資。該輪融資由數位化領域新銳企業成都萬維圖新信息技術有限公司戰略投資,欣羽鴻聯跟投。新融資主要用於加大產品研發、市場營銷和技術服務等方面。
  • 夢見被人追殺 到底意味著什麼
    原標題:夢見被人追殺 到底意味著什麼   夢境中的焦慮   可能你從沒意識到   哪怕不是現實中實際的危險,只是精神層面的問題,噩夢,也是對人類有幫助的。   這個做夢被追殺的倒黴鬼,恰好是我的朋友,我提示她,是不是有什麼童年陰影。她想了半天說:「我集萬千寵愛於一生,有什麼陰影啦?」   所以,醫生說,這是潛意識的一些反應,自己可能從來沒有注意到過。   不過如果她想去挖掘的話,陳正昕首先要求她,再次夢到被追殺時,停下來,轉身去看一看,殺手是誰。
  • 周公解夢:夢見打架到底意味著什麼?
    它意味著什麼?它在暗示些什麼?        夢是竊聽自己潛意識和意識相互交流的機會,它為人們打開了通往自我整合的大門鑰匙。那麼,通常夢見的「打架」,這裡面到底有什麼玄機呢?意味著什麼?       比如: 夢見自己與別人打架,是人際關係轉好的表現;夢見生人之間的打架,則是意味著你身體存在健康問題;夢見熟人之間的打架,是與人存在溝通困難的象徵。
  • 夢見家人到底意味著什麼?
    做夢,是人的正常生理與心理現象,很多人經常做夢會夢見家人,那麼做夢夢見家人預示著什麼呢?在周公解夢中,夢見家人是吉兆還是不好的預示?下面就來給大家解析一下!一起來弄清楚!   夢見吻戀人,意味著雙方的矛盾和糾紛都能得到解決,感會更深厚,很快就會結合。  夢見自己的戀人嫁給別人,則意味著婚事會因親友的去世而耽擱。  夢見戀人去世,預示你們將結婚,生活美滿幸福。常鶴鳴易學應用名師、著名講師。精通八字命理、風水布局、易卦預測和奇門遁甲等。
  • 木星到底有何特別?對於地球而言,它的存在意味著什麼?
    木星到底有何特別?對於地球而言,它的存在意味著什麼?從科技水平提高之後,科研人員就一直對外太空的星體進行研究。好在功夫不負有心人,如今人們對不少的星體,有了更詳細的了解。如果問誰是太陽系中的「胖哥」?很多人的第一反應便是木星。它的體積是地球的1300倍,這是一個十分龐大數字。
  • 掌中痣到底意味著什麼?
    而本期我們就以較為隱蔽的手中有痣展開介紹,看看手心裡長痣到底意味著什麼。做什麼都經過三思而後行,有很好的決斷力,敏銳的眼光,對於財富的把控力很好,做事能夠持之以恆。但生活中多波折,會經常面對挑戰。但最終都能夠迎刃而解。
  • 汽車對於男人來說意味著什麼?
    無論周圍的人是否意識到這一點,當男人看到他們的車時,即使從遠處也可以明顯地看到一種驕傲和快樂所混合的表情浮現在臉上,這意味著。意味著掌控!男人絕對不會拒絕自己有能力控制住一頭「野獸」。腎上腺素因興奮而急速攀升,精準的走線和凌厲的過彎、直線油門踩到底的加速讓他們的快感像是在那啥一樣。
  • 做夢夢見蛇意味著什麼
    那麼到底代表什麼呢? 蛇兇,蛇令人毛骨悚然,在裡是兇兆。蛇也是男性性器官和父權的象徵。 女人夢見蛇,孩子將會病倒。 夢見花蛇、綠蛇為生女之兆。 夢見麻蛇、黑蛇為生男之兆。 夢見自己被蛇咬,意味著不怕兇險,將交上好運,生活富裕。 夢見孩子被蛇咬,則意味著家庭不和,帶來憂愁和不幸。
  • 前瞻物聯網產業全球周報第72期:騰訊雲發布八款雲原生系列產品...
    騰訊雲發布八款雲原生系列產品 產品矩陣再升級近日,騰訊雲容器產品總經理鄒輝在騰訊2020 Techo Park開發者大會上講述了騰訊雲原生路線圖的全面布局,並升級發布了的八款雲原生系列產品。包括開源雲原生開發環境Nocalhost、首款金融級雲原生Serverless消息隊列TDMQ以及國內首款全Serverless雲原生MySQL資料庫TDSQL Serverless等。
  • 夢到錢意味著什麼?
    夢見紙幣夢見紙幣意味著什麼?夢中的紙幣代表著一種自我價值感,一種對自己豐富的資源和內在潛力的意識,一種在現實中實現自己最想要的東西的能力。如果錢很多呢?夢中的金錢是安全感和對未來信心的象徵。實際上,夢中的錢不是指物質財富,而是個人的內在財富,是無形的財富:夢見大量錢象徵著 一個人內在資源的豐富,擁有充分適應環境的能力。
  • 96%的資料庫還沒有上雲,用戶顧慮什麼?
    ,資料庫在向「雲+資料庫」的方向演進的過程中,「雲原生」資料庫應運而生。 騰訊雲副總裁李綱認為,雲資料庫的發展,目前正在經歷從第一階段「資料庫上雲」,即從資料庫到雲資料庫,到第二階段「從雲資料庫到雲原生資料庫」的變革,「雲原生」正是騰訊雲資料庫重要的架構體系。 從不同企業的實踐來看,雲原生資料庫呈現多方面的優勢。
  • 夢見吃肉意味著什麼?
    對於吃貨來說,沒有比吃更幸福的了,對於肉食者來說,肉簡直就像生命一般重要……如果做夢夢見吃肉是否就是一件幸福的事呢?這可要視夢的情境而定了。一起來看看夢見吃肉意味著什麼。  以下是夢見吃肉的心理學解釋  吃肉主家,現實中,是否經常吃肉代表了家庭生活的好壞,在夢中,吃肉就有了家庭生活方面的意義。
  • 人工智慧外語教學意味著什麼?
    本文轉自【大眾網】;清睿教育(口語100)在中國推動人工智慧外語教學已經9年了,人工智慧外語教學到底意味著什麼?清睿教育對於人工智慧外語教學又意味著什麼?外語學科可以說是中國學生普遍投入產出最差的一個學科,多年的學習投入卻難以應用,聽不懂、說不出、記不住、沒興趣。英語學習不能僅僅學知識和考察知識掌握,而是必須面向應用,考察應用能力。
  • 周公解夢:夢到水意味著什麼
    不知道各位讀者們在做夢的時候有沒有夢見過水,那麼夢見水又有什麼特殊的含義呢?
  • 夢到錢究竟意味著什麼?
    夢見紙幣意味著什麼?夢中的紙幣代表著一種自我價值感,一種對自己豐富的資源和內在潛力的意識,一種在現實中實現自己最想要的東西的能力。實際上,夢中的錢不是指物質財富,而是個人的內在財富,是無形的財富。夢見大量錢象徵著一個人內在資源的豐富,擁有充分適應環境的能力。
  • 夢見被狗追意味著什麼呢?是什麼吉兆嗎?
    夢見很多事情都是有跡可循的,狗在現實生活中是一種兇狠的角色,但是有時也很溫柔,那麼到底夢見狗在夢境中意味著什麼呢?是吉兆還是兇兆呢?下面小編給你整理了關於夢見狗究竟是意味著什麼。狗最主要就是忠順老實,但是狗在對自己好的人面前也會很溫順。所以夢見狗不一定會是什麼壞事。
  • 生命線長意味著什麼?
    如果在生命線上有一條短的橫線,就意味著他們會突然生病或遭遇意外,從而可能導致生命危險。生命線起端分叉成幾條支線的人,小時候經常生病,學習受挫,年輕時不能出人頭地,很難做大生意,經常被小人幹擾,大多數人婚姻不幸福;生命線未端分叉成幾條支線,在婚姻中不快樂,中年易發生婚變,晚年子女不在身邊,導致孤獨寂寞。