一文看懂云原生,正確迎接云時(shí)代的到來(lái)

原標(biāo)題:一文看懂云原生,正確迎接云時(shí)代的到來(lái)

溫馨提示:本文3000字,估計(jì)閱讀時(shí)間12分鐘。

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

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

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

云原生四要素

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

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

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

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

DevOps

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

微服務(wù)(MicroServices)

敏捷基礎(chǔ)設(shè)施(Agile Infrastructure)

12要素(The Twelve-Factor App)

……

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

12要素已經(jīng)說(shuō)了很多年了,這里將思維導(dǎo)圖整理出來(lái),供參考。

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

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

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

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

容器化封裝:以容器為基礎(chǔ),提高整體開(kāi)發(fā)水平,形成代碼和組件重用,簡(jiǎn)化云原生應(yīng)用程序的維護(hù)。在容器中運(yùn)行應(yīng)用程序和進(jìn)程,并作為應(yīng)用程序部署的獨(dú)立單元,實(shí)現(xiàn)高水平資源隔離。

自動(dòng)化管理:統(tǒng)一調(diào)度和管理中心,從根本上提高系統(tǒng)和資源利用率,同時(shí)降低運(yùn)維成本。

面向微服務(wù):通過(guò)松耦合方式,提升應(yīng)用程序的整體敏捷性和可維護(hù)性。

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

一個(gè)一個(gè)展開(kāi)。

容器,云原生的基石

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

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

與容器做比較的是虛擬化技術(shù)。早期,大家認(rèn)為硬件抽象層基于Hypervisor的虛擬化方式能夠最大程度實(shí)現(xiàn)系統(tǒng)管理的靈活性,因?yàn)楦鞣N不同操作系統(tǒng)的虛擬機(jī)都能通過(guò)Hypervisor生成、運(yùn)行、銷(xiāo)毀。但是,隨著時(shí)間推移發(fā)現(xiàn),Hypervisor沒(méi)有想象的那么好,因?yàn)樗脑硎敲總€(gè)虛擬機(jī)都要安裝一個(gè)完整的操作系統(tǒng)和大量的應(yīng)用,而實(shí)際生產(chǎn)環(huán)境大家更關(guān)心的是自己部署的應(yīng)用。顯然,如果每次都部署一個(gè)完整的操作系統(tǒng)和大量關(guān)聯(lián)的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)效率、管理效率都會(huì)很低下。

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

容器技術(shù)有四大特點(diǎn):

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

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

易于移植:一次構(gòu)建,隨處部署;

彈性伸縮:Kubernetes、Swam、Mesos這類(lèi)開(kāi)源、方便、好使的容器管理平臺(tái)有著非常強(qiáng)大的彈性管理能力。

換句話(huà)說(shuō),使用容器,用戶(hù)可以將微服務(wù)及其所需的各種配置、依賴(lài)關(guān)系和環(huán)境變量很方便的移動(dòng)到全新的服務(wù)器節(jié)點(diǎn)上,而無(wú)需重新配置環(huán)境。

在容器領(lǐng)域,Docker是最受歡迎的容器格式標(biāo)準(zhǔn)。同時(shí),與Docker配合使用的Kubernetes則成為了容器編排和管理工具中的事實(shí)標(biāo)準(zhǔn)。

微服務(wù),改變產(chǎn)品開(kāi)發(fā)方式

微服務(wù)是什么?重點(diǎn)在“微”。它的核心是將單個(gè)應(yīng)用程序作為一組小型服務(wù)來(lái)開(kāi)發(fā)。原來(lái)一個(gè)產(chǎn)品的開(kāi)發(fā)可能是拆成幾個(gè)大的模塊,然后由幾個(gè)團(tuán)隊(duì)來(lái)做,然后再合,微服務(wù)的理念是把一個(gè)產(chǎn)品拆的更細(xì),可能一個(gè)人、幾個(gè)人負(fù)責(zé)一個(gè)服務(wù)的開(kāi)發(fā),每個(gè)服務(wù)之間都是獨(dú)立的。

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

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

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

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

1.內(nèi)聚更強(qiáng),所有遵循同一種業(yè)務(wù)準(zhǔn)則的人內(nèi)聚在一起,就容易解決問(wèn)題。

2.服務(wù)解耦,變更容易,更加敏捷。

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

DevOps,如果從字面上來(lái)理解,是Dev(開(kāi)發(fā))+Ops(運(yùn)維)。

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

為什么要整合?因?yàn)槟軒椭髽I(yè)提升效率。

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

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

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

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

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

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

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

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

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

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

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

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

長(zhǎng)按掃碼 閱讀全文