一文看懂云原生,正確迎接云時代的到來

原標題:一文看懂云原生,正確迎接云時代的到來

溫馨提示:本文3000字,估計閱讀時間12分鐘。

在探討過無服務器技術《沉寂多年,無服務器爆發(fā),其硬核是什么?丨技術前沿》和裸金屬技術《未來將是容器和裸金屬的天下,這話有道理嗎?| 技術前沿》的發(fā)展后,本篇我們討論云原生(Cloud Native)技術。

如果說無服務器和裸金屬的爆發(fā)屬于間歇性的,那云原生這幾年的熱度就稱得上持續(xù)火熱,且隨著云計算普及進程的不斷加深,有愈演愈烈的趨勢。今天再談云原生已經不是少數(shù)幾個大企業(yè)的專屬,越來越多的企業(yè)正在擁抱它,享受它帶來的紅利。

究竟什么是云原生?能帶來什么價值?本文第一篇將進行全面的梳理,后續(xù)將逐步介紹相關的技術和趨勢。

云原生四要素

云原生,顧名思義,面向云而設計的。設計的什么?一套方法、一套理念、一套工具……

最早人們對云計算的認識就是改變了基礎資源的使用方式,業(yè)務會逐步遷移上云。但現(xiàn)在再看呢?遠不止這一點。云計算在重新構建IT運行的規(guī)則,“上云”和“云上”是兩個概念。上云是過去對云計算的認知,也就是遷移;而云上是現(xiàn)在及未來對云計算的認知,是云上重新構建,這是云原生的本質。

舉個例子對比,上云和云上就像后天培養(yǎng)和天生就有,區(qū)別是顯而易見的。

進一步說,云原生的概念最早由來自Pivotal的Matt Stine于2013年提出,一直延用至今。它是Matt Stine根據(jù)其多年的架構和咨詢經驗總結出來的一個思想集合,并得到了社區(qū)的不斷完善,包含內容非常多,囊括眾多板塊,如:

DevOps

持續(xù)交付(Continuous Delivery)

微服務(MicroServices)

敏捷基礎設施(Agile Infrastructure)

12要素(The Twelve-Factor App)

……

不僅有企業(yè)文化、組織架構的重組與建設,也有方法論與原則,以及具體的操作工具。

12要素已經說了很多年了,這里將思維導圖整理出來,供參考。

所以,云原生不是一個具體的產品,也絕非是把原先在傳統(tǒng)IT架構中的東西搬上云,而是基于云的一種全新IT理念,必須是與之相關的包括應用的架構、應用的開發(fā)方式、應用的部署和維護方式都要做出改變,這樣才能真正發(fā)揮出云的價值,包括彈性、動態(tài)調度、自動伸縮等,享受新IT技術帶來的紅利。

為了更好地推進云原生技術的發(fā)展,2015年由谷歌牽頭成立CNCF,即云原生計算基金會。目前,基金會成員已有一百多家企業(yè)與機構,包括百度、亞馬遜、微軟、思科等巨頭。

當前,CNCF所托管的應用已達14個,下圖為其公布的Cloud Native Landscape,給出了云原生生態(tài)的參考體系。

CNCF認為云原生系統(tǒng)應該具備三大特征:

容器化封裝:以容器為基礎,提高整體開發(fā)水平,形成代碼和組件重用,簡化云原生應用程序的維護。在容器中運行應用程序和進程,并作為應用程序部署的獨立單元,實現(xiàn)高水平資源隔離。

自動化管理:統(tǒng)一調度和管理中心,從根本上提高系統(tǒng)和資源利用率,同時降低運維成本。

面向微服務:通過松耦合方式,提升應用程序的整體敏捷性和可維護性。

要充分理解云原生,必須對其每一個板塊進行了解。而當前,業(yè)界對云原生的看法是非常一致的,那就是四要素:持續(xù)交付、DevOps、微服務、容器。

一個一個展開。

容器,云原生的基石

容器不是新概念,1979年就出現(xiàn)了。

很多人會將Docker與容器劃等號,其實不然,Docker只是容器理念最普及的一種應用技術。容器的英文單詞是Container,有集裝箱的含義,而借用集裝箱技術會很好理解容器的優(yōu)勢。集裝箱的特點,在于標準化,這樣可以大量堆疊,裝卸也很方便。容器也是這樣。

與容器做比較的是虛擬化技術。早期,大家認為硬件抽象層基于Hypervisor的虛擬化方式能夠最大程度實現(xiàn)系統(tǒng)管理的靈活性,因為各種不同操作系統(tǒng)的虛擬機都能通過Hypervisor生成、運行、銷毀。但是,隨著時間推移發(fā)現(xiàn),Hypervisor沒有想象的那么好,因為它的原理是每個虛擬機都要安裝一個完整的操作系統(tǒng)和大量的應用,而實際生產環(huán)境大家更關心的是自己部署的應用。顯然,如果每次都部署一個完整的操作系統(tǒng)和大量關聯(lián)的開發(fā)環(huán)境,開發(fā)效率、管理效率都會很低下。

于是有了容器這種方式,簡單說,它只把應用代碼運行所需相關的環(huán)境打包、封裝進了一個系統(tǒng),就像集裝箱一樣,直接運走就行,不用關心船是什么樣,到哪都可以跑起來。

容器技術有四大特點:

極其輕量:只打包了必要的Bin/Lib;

秒級部署:根據(jù)鏡像的不同,容器的部署大概在毫秒與秒之間(比虛擬機強很多);

易于移植:一次構建,隨處部署;

彈性伸縮:Kubernetes、Swam、Mesos這類開源、方便、好使的容器管理平臺有著非常強大的彈性管理能力。

換句話說,使用容器,用戶可以將微服務及其所需的各種配置、依賴關系和環(huán)境變量很方便的移動到全新的服務器節(jié)點上,而無需重新配置環(huán)境。

在容器領域,Docker是最受歡迎的容器格式標準。同時,與Docker配合使用的Kubernetes則成為了容器編排和管理工具中的事實標準。

微服務,改變產品開發(fā)方式

微服務是什么?重點在“微”。它的核心是將單個應用程序作為一組小型服務來開發(fā)。原來一個產品的開發(fā)可能是拆成幾個大的模塊,然后由幾個團隊來做,然后再合,微服務的理念是把一個產品拆的更細,可能一個人、幾個人負責一個服務的開發(fā),每個服務之間都是獨立的。

每個服務都在自己的進程中運行,并使用輕量級機制(通常是基于HTTP的API)進行通信。 這些服務是圍繞業(yè)務功能構建,可以通過全自動部署機制獨立部署,不需要集中管理,可以用不同的編程語言編寫,并使用不同的數(shù)據(jù)存儲技術。

所以,微服務核心就是服務粒度要小,每個服務是針對一個單一職責的業(yè)務能力的封裝,專注做好一件事情。但是又不能太小,否則易發(fā)生“服務爆炸”。通常在工程實踐中,如果一個功能被兩個或兩個以上的服務調用,就可以被封裝為服務。

所以,微服務的優(yōu)點很明顯,小而美、松耦合、靈活、易集成,但是挑戰(zhàn)也很明顯,最大的問題在于服務如何切分。其實,早在1968年康威就提出了——康威定律,系統(tǒng)的服務劃分應該是根據(jù)組織架構的功能來劃分。這一點用在微服務領域也非常合適。

這樣按照組織架構劃分的優(yōu)勢在于:

1.內聚更強,所有遵循同一種業(yè)務準則的人內聚在一起,就容易解決問題。

2.服務解耦,變更容易,更加敏捷。

DevOps,內部協(xié)作更緊密

DevOps,如果從字面上來理解,是Dev(開發(fā))+Ops(運維)。

實際上,可以把DevOps看作開發(fā)(軟件工程)、技術運營和質量保障(QA)三者的交集。DevOps是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協(xié)作與整合。

為什么要整合?因為能幫助企業(yè)提升效率。

眾所周知,傳統(tǒng)的軟件組織將開發(fā)、IT運營和質量保障設為各自分離的部門。開發(fā)與運營之間存在著信息“鴻溝”──例如運營人員要求更好的可靠性和安全性,開發(fā)人員則希望基礎設施響應更快,而業(yè)務用戶的需求則是更快地將更多的特性發(fā)布給最終用戶使用。

每個部門需求都不同,怎么調和?DevOps的價值就體現(xiàn)在這。DevOps的引入能對產品交付、測試、功能開發(fā)和維護起到意義深遠的影響。其最大的價值在于,透過自動化“軟件交付”和“架構變更”的流程,能使得構建、測試、發(fā)布軟件更加地快捷、頻繁和可靠,這是每一個企業(yè)都期望的。

因此,更深層次的理解,DevOps是一種重視“軟件開發(fā)人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動。

持續(xù)交付,云原生終極目標

如何理解持續(xù)交付?聽著比容器、微服務、DevOps更抽象。簡單來說,它是一種狀態(tài),一種能力,就像生產線能持續(xù)交付產品一樣。

具體而言,持續(xù)交付是一種軟件工程手法,它能讓軟件產品的產出過程在一個短周期內完成,保證軟件可以穩(wěn)定、持續(xù)的保持在隨時可以發(fā)布的狀況。它的目標在于讓軟件的構建、測試與發(fā)布變得更快以及更頻繁。這種方式可以減少軟件開發(fā)的成本與時間,減少風險。

為什么要有持續(xù)交付?這是和曾經的軟件開發(fā)方式相比的,過去的軟件開發(fā)周期以月、季度、年來計算,今天呢?一個應用晚上線一個小時造成的損失都可能是巨大的,所以要小步快跑、快速迭代,這就是持續(xù)交付的價值所在,不斷的交付,不斷的修正。

很顯然,如果把云原生的四要素串聯(lián)起來,持續(xù)交付才是最終目標。但要實現(xiàn)持續(xù)交付,容器、微服務、DevOps缺一不可。

總結一下,云時代必須以全新的理念來看待軟件架構和基礎設施,只有從這個角度理解云原生才能得到正確的答案。未來必然是屬于云原生的,所以,企業(yè)變革的絕不僅僅是工具,而是從思想到方法,再到工具的一整套理念。只有這樣,才能更好迎接云時代的到來。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2019-09-10
一文看懂云原生,正確迎接云時代的到來
所以,云原生不是一個具體的產品,也絕非是把原先在傳統(tǒng)IT架構中的東西搬上云,而是基于云的一種全新IT理念,必須是與之相關的包括應用的架構、應用的開發(fā)方式、應用的部署和維護方式都要做出改變,這樣才能真…

長按掃碼 閱讀全文