雲原生到底意味著什麼?

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-12-15 17:15:23 雲原生近來大熱,但云原生不是新概念,早在2013年就由MattStine提出,並被沿用至今。
  • .| 大廠緊抓不放,創業者紛紛入局,「雲原生」到底有什麼魔力?
    在企業積極進行數位化轉型,全面提升效率的今天,幾乎無人否認雲原生代表著雲計算的「下一個時代」,IT大廠們都不約而同的將其視為未來雲應用的發展方向。 那麼,雲原生究竟有什麼魔力,能讓巴菲特押注,谷歌、亞馬遜、微軟、阿里、騰訊、華為等各大雲廠商爭先恐後?
  • 巴菲特也為之破例的雲原生數據倉庫
    巴菲特為什麼破例,主要是對Snowflake所處的是雲原生數據倉庫的看好。要說雲原生數據倉庫是什麼,我們就要從資料庫說起。現在工業級廣泛使用的資料庫,全稱是關係資料庫。這是由1970年IBM研究院的E.F. Codd提出來的關係模型之上建立的資料庫產品。
  • 雲原生發展趨勢淺談
    基於雲化架構的特點,定義一條能夠讓應用最大程度利用雲的能力、發揮雲的價值的最佳路徑成為行業迫切的需求,「雲原生」應運而生。雲原生應運而生,技術範疇漸成體系不同的組織對於雲原生有不同的理解和定義。採用基於雲原生的技術和管理方法,可以更好地把業務生於雲或遷移到雲平臺,從而享受雲的高效和持續的服務能力,這標誌著「雲原生」比較完整的範疇的形成。
  • 雲原生初學者入門必讀
    這篇文章將助於各位有志於從事雲原生領域工作或需要了解該領域背景的人群快速入門 Kubernetes 和雲原生。因為雲原生的知識體系過於龐雜,本文主要講解容器、Kubernetes 及服務網格的入門概念,關於雲原生的更多細節將在後續文章中推出。另外大家也可以關注云原生社區推出的 雲原生知識圖譜[1] 項目,進一步了解雲原生。
  • 華為雲原生精英沙龍圓滿落幕,行業翹楚論道雲原生
    業務雲化轉型成為了企業創新的牛耳,雲原生成為了當下技術圈的寵兒,「雲原生Cloud Native」高速發展已成為業界共識。那麼雲原生的技術創新有哪些?相關的產業生態熱點話題如何理解?在企業數位化轉型的過程中,雲原生又有哪些成功的實踐經驗呢?華為雲原生技術精英沙龍對此進行了一場精彩的解讀。11月28日下午,華為雲生態夥伴X-Team雲原生技術精英沙龍在北京飯店圓滿落幕。
  • 乘風破浪的雲原生
    雲原生相關技術不僅僅能用於雲計算,即便是和雲計算既對立又協同的邊緣計算,微服務、容器、Kubernetes 依然是事實上的殺手應用和標準。以前一家企業想使用雲原生的技術或產品,需要花費大量的精力研究一些開源項目,自己做運維和管理,還需要考慮集成、穩定性保障等問題,這樣才能建立一個雲原生平臺。
  • 分布式系統架構與雲原生—阿里雲《雲原生架構白皮書》導讀
    1 雲原生與分布式系統架構的關係  1.1 雲原生架構的定義  《雲原生架構白皮書》中對於雲原生架構的定義為「基於雲原生技術的一組架構原則和設計模式的集合,旨在將雲應用中的非業務代碼部分進行最大化的剝離,從而讓雲設施接管應用中原有的大量非功能特性(如彈性、韌性、
  • 為什麼雲原生+分布式是資料庫的未來?
    2020 雲棲大會期間,阿里巴巴正式成立雲原生技術委員會,同時推出了雲原生多模資料庫Lindorm、雲原生分布式資料庫PolarDB-X、雲原生數據倉庫AnalyticDB(ADB)、雲原生數據湖分析等一系列重磅自研雲原生資料庫產品。此舉也標誌著阿里雲資料庫全面進入了雲原生+分布式時代。
  • 阿里雲發布雲原生架構白皮書 多維度評估雲原生架構成熟度
    7 月 21 日,由阿里雲 20多位雲原生技術專家共同編撰的《雲原生架構白皮書》正式對外發布。作為業界第一本全方位構建雲原生架構規劃與實踐全景圖的白皮書,本書在詳細闡述雲原生架構定義的同時,完整展示雲原生架構應用所需的演進路徑與設計規則,旨在幫助企業更好地理解與應用雲原生架構,助力企業數位化轉型升級。
  • 不確定的2020,與確定的雲原生2.0
    近日,華為雲聯合 Forrester 諮詢公司對中國雲原生及企業級容器平臺進行了調查,通過聚焦雲計算基礎設施及雲原生應用開發及業務管理人員在引入、應用雲原生技術過程中面臨的挑戰和需求,展現中國應用雲原生技術進行應用開發的現狀及未來,通過這款報告以期探討出中國企業如何以更好的姿態來面對雲原生大勢。
  • 解讀容器的 2020:尋找雲原生的下一站
    探索雲原生的下一站2020 年的雲原生可以說是整個雲計算生態中發展最迅速的一條主線脈絡,而也正是伴隨著這樣的發展勁頭,雲原生在新的一年裡,已經要開始思考它的下一步發展空間。事實上,我們已經能夠看到各種各樣的廠商和團隊在不同的領域積極發力和探索。
  • 雲原生最好的時代 KubeSphere為企業落地雲原生提供容器支持
    「雲原生是解決客戶在企業業務落地,適應數位化、網際網路化趨勢時,一個很落地的解決架構」,KubeSphere容器平臺產品負責人於爽表示,「這是雲原生最好的時代,也是不得不雲原生時代。」雲原生時代到來雲原生(Cloud Native),按照CNCF基金會的定義,是雲原生技術有利於各組織在公有雲、私有雲和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生是解決客戶在企業業務落地,適應數位化、網際網路化趨勢時,一個基礎的解決架構。雲原生雖然只有三個字,但其包含的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API等。
  • 三大運營商如何玩轉雲原生?|CNBPS 2020演講實錄
    中國電信在這三年上雲過程當中,如果能夠實現「雲改數轉」,那麼就意味著,中國的所有的外部客戶,政企客戶,包括我們的小客戶都可以按照我們的經驗完成「雲改數轉」。所以第四階段,我們準備把我們的IT的能力提供出去,但是從目前來看進度太快了,然後我們其實自己還在做,但是很多外部的客戶都已經找我們說這個事情。
  • 什麼是雲原生(Cloud Native)?為什麼這麼火熱?
    什麼是Cloud Native, 為什麼Cloud Native會增長如此之快,都是大家比較感興趣的議題。今天我們不妨通過幾個數據來了解一下,期待大家對Cloud Natived有一個初步的認識。很多人會把 Cloud Native 和 Cloud-Based兩個詞混在一塊,但這兩個是完全不一樣的概念。
  • 雲原生需要什麼樣的存儲 QingStor這麼說
    在2020中國數據與存儲峰會現場上,QingStor研發負責人王煜回顧了支撐雲原生架構的存儲所需要的諸多技術方案,也提出了對於雲原生存儲的三點看法,分享了已經落地的雲原生分布式存儲案例。雲原生帶來的存儲挑戰在許多人看來,雲原生能改變企業內部開發運維的流程,甚至能改變了一些團隊的組織方式,雲原生有望讓IT進入一個理想化的狀態,所謂IT理想化狀態是指,開發團隊只需關注業務邏輯本身,減少對於運維相關工作的關注,提高開發效率,提高業務創新效率。
  • 阿里雲視頻雲:視頻化是5G和雲原生時代最新最大的確定性
    5G給業務的最大變化:更低延時,更寬帶寬,更多新場景當前5G話題火爆,很多人都在思考5G以後整個社會到底會帶來什麼新的創新。對業務來講,尤為關鍵。從業務團隊來講,當延時變得越來越低,帶寬變得更寬的時候,跟業務到底有什麼關係?在業務上,會看到什麼樣的變化?
  • 數據中臺的雲原生機會 | 甲子光年
    本文,「甲子光年」採訪了智領雲創始人&CEO彭鋒,線性資本董事總經理鄭燦,金沙江聯合資本投資人李居真,以及智領雲客戶衣邦人CTO楊陽,來探討雲原生數據中臺的價值和潛力。 雲原生的數據中臺,到底有何不同? 1.雲原生:雲計算時代的最優解
  • 聯合咪咕,做國內雲原生遊戲引領者
    中國最大的雲遊戲公司之一,「米谷互動娛樂」最近宣布已與雲錄科技達成雲原生遊戲內容協議,並將共同開發「互動直播」應用場景並開發「雲原生」今天,新浪遊戲特別邀請雲鷺科技執行長溫向東先生了解米谷互動娛樂與雲鷺科技之間的合作。
  • 衝量網絡|雲原生技術
    雲原生技術可以說是在過去一段時間中在雲計算領域被提及最多的詞彙,幾乎每一個雲計算的產品廠商都會把自己的產品與雲原生聯繫在一起。雲原生包含完整的應用形式,可以幫助開發者快速,持續,可靠,規模化地交付業務軟體,其涉及到微服務和容器等技術,雖然雲原生技術的起步較晚,但是其受到的關注度完全不輸於其他傳統技術,包括騰訊、招商銀行等公司也參與到雲原生技術的開發中,來加速技術創新和落地。