- 企業(yè)級(jí)云原生架構(gòu):技術(shù)、服務(wù)與實(shí)踐
- 劉景應(yīng)(四牛)
- 3669字
- 2021-09-27 18:11:35
1.1.2 企業(yè)為什么需要云原生

云的核心理念是彈性,站在云的視角,過(guò)去我們常以虛擬化作為云平臺(tái)和與客戶系統(tǒng)交互的界面,為企業(yè)帶來(lái)靈活性的同時(shí)也帶來(lái)了一定的管理復(fù)雜度。容器的出現(xiàn),在虛擬化的基礎(chǔ)上向上封裝了一層,逐步成為云平臺(tái)和與客戶系統(tǒng)交互的新界面之一,應(yīng)用的構(gòu)建、分發(fā)和交付得以在這個(gè)層面上實(shí)現(xiàn)標(biāo)準(zhǔn)化,大幅降低了企業(yè) IT 實(shí)施和運(yùn)維成本,提升了業(yè)務(wù)創(chuàng)新的效率。從技術(shù)發(fā)展的角度看:開(kāi)源讓云計(jì)算變得越來(lái)越標(biāo)準(zhǔn)化,容器已經(jīng)成為企業(yè)應(yīng)用分發(fā)和交付的標(biāo)準(zhǔn),可以將應(yīng)用與底層運(yùn)行環(huán)境解耦;Kubernetes成為資源調(diào)度和編排的標(biāo)準(zhǔn),屏蔽了底層架構(gòu)的差異性,幫助應(yīng)用平滑運(yùn)行在不同的基礎(chǔ)設(shè)施上;在此基礎(chǔ)上建立上層應(yīng)用抽象(如微服務(wù)和服務(wù)網(wǎng)格),逐步形成應(yīng)用架構(gòu)現(xiàn)代化演進(jìn)的標(biāo)準(zhǔn),開(kāi)發(fā)者只需要關(guān)注自身的業(yè)務(wù)邏輯,無(wú)須關(guān)注底層實(shí)現(xiàn)。云原生正在通過(guò)方法論、工具集和理念重塑整個(gè)軟件技術(shù)棧和生命周期,幫助企業(yè)和開(kāi)發(fā)者在云上構(gòu)建和運(yùn)行可彈性擴(kuò)展、容錯(cuò)性好、易于管理、便于觀察的系統(tǒng)。有了諸多標(biāo)準(zhǔn)化的產(chǎn)品技術(shù),企業(yè)上云的拐點(diǎn)已經(jīng)到來(lái),云原生已經(jīng)成為釋放云價(jià)值的最短路徑之一。
云并非把原先在物理服務(wù)器上運(yùn)行的東西放到虛擬機(jī)里運(yùn)行,真正的云化不僅是基礎(chǔ)設(shè)施和平臺(tái)的事情,應(yīng)用也要改變傳統(tǒng)的做法,實(shí)現(xiàn)云化的應(yīng)用——應(yīng)用的架構(gòu)、應(yīng)用的開(kāi)發(fā)方式、應(yīng)用部署和維護(hù)技術(shù)等都要做出改變,真正發(fā)揮云的彈性、動(dòng)態(tài)調(diào)度、自動(dòng)伸縮等一些傳統(tǒng)IT所不具備的能力。這里說(shuō)的“云化的應(yīng)用”也就是“云原生應(yīng)用”。云原生架構(gòu)和云原生應(yīng)用所涉及的技術(shù)很多,如容器技術(shù)、微服務(wù)、可持續(xù)交付、DevOps等。
1.業(yè)務(wù)復(fù)雜需要云原生
PC的普及,改變了人們加工處理個(gè)人數(shù)據(jù)的方式;移動(dòng)互聯(lián)網(wǎng)的普及,改變了人們獲取信息的方式;即將到來(lái)的萬(wàn)物互聯(lián)的時(shí)代,改變了人們與周?chē)澜绲慕换シ绞?。隨著業(yè)務(wù)的發(fā)展,企業(yè)IT架構(gòu)也隨之發(fā)生巨大變化,而業(yè)務(wù)又深度依賴IT能力。
IT系統(tǒng)讓人們的工作和生活越來(lái)越簡(jiǎn)單便捷的同時(shí),其自身的架構(gòu)卻變得越來(lái)越復(fù)雜。隨著技術(shù)的發(fā)展,業(yè)務(wù)規(guī)模的暴增,商業(yè)模式的創(chuàng)新,企業(yè)的應(yīng)用系統(tǒng)也經(jīng)歷了單體應(yīng)用、應(yīng)用分層、分布式應(yīng)用、云應(yīng)用等不同應(yīng)用形態(tài)。原來(lái)一個(gè)系統(tǒng)由一個(gè)團(tuán)隊(duì)就可以開(kāi)發(fā)維護(hù),慢慢發(fā)展到一個(gè)系統(tǒng)由數(shù)十個(gè)應(yīng)用構(gòu)成,需要幾十個(gè)團(tuán)隊(duì)相互協(xié)作,甚至像淘寶、天貓這樣的巨型系統(tǒng),需要上千個(gè)應(yīng)用,由幾百個(gè)團(tuán)隊(duì)開(kāi)發(fā)維護(hù)。微服務(wù)架構(gòu)能夠解決大型分布式系統(tǒng)的團(tuán)隊(duì)協(xié)作問(wèn)題,每個(gè)團(tuán)隊(duì)獨(dú)立負(fù)責(zé)一個(gè)或者若干個(gè)服務(wù),團(tuán)隊(duì)對(duì)于所負(fù)責(zé)的服務(wù)擁有絕對(duì)的決策權(quán),以減少組織的技術(shù)決策成本。服務(wù)之間通過(guò)契約化的接口以縮小溝通范圍,只要接口不變,就無(wú)須關(guān)注外部的變化,從而減少組織的技術(shù)溝通成本。
在微服務(wù)架構(gòu)中,應(yīng)用的數(shù)量大幅增加,性能、一致性等問(wèn)題越來(lái)越嚴(yán)重,架構(gòu)變得越來(lái)越復(fù)雜,大量服務(wù)的治理也變得充滿挑戰(zhàn),如何處理和解決這些問(wèn)題?正如人類(lèi)社會(huì)發(fā)展伴隨著技術(shù)革命與社會(huì)大分工一樣,云原生技術(shù)的出現(xiàn)解耦了很多復(fù)雜性,這是IT技術(shù)的進(jìn)步。
(1)以Docker為代表的容器技術(shù)實(shí)現(xiàn)了應(yīng)用與運(yùn)行環(huán)境的解耦,眾多業(yè)務(wù)應(yīng)用負(fù)載可以被容器化,而且應(yīng)用容器化滿足了敏捷、可遷移、標(biāo)準(zhǔn)化的需求。
(2)Kubernetes的出現(xiàn)實(shí)現(xiàn)了資源編排調(diào)度與底層基礎(chǔ)設(shè)施的解耦,應(yīng)用和資源的管控也開(kāi)始得心應(yīng)手,容器編排實(shí)現(xiàn)資源編排、高效調(diào)度。
(3)以Istio為代表的服務(wù)網(wǎng)格技術(shù)實(shí)現(xiàn)了服務(wù)實(shí)現(xiàn)與服務(wù)治理能力的解耦。
業(yè)務(wù)的發(fā)展能驅(qū)動(dòng)技術(shù)的進(jìn)步,技術(shù)的進(jìn)步又反哺業(yè)務(wù)創(chuàng)新。云原生概念及技術(shù)提出幾年以來(lái),得到眾多軟件廠商以及云廠商的參與支持,他們也在紛紛貢獻(xiàn)自己的產(chǎn)品與技術(shù),絕大多數(shù)云廠商提供了容器、Kubernetes編排管理的OpenAPI、軟件開(kāi)發(fā)工具包(Software Development Kit,SDK)等豐富的開(kāi)發(fā)工具,實(shí)現(xiàn)第三方被集成,為云的生態(tài)伙伴提供更多的可能性。這樣的技術(shù)分層推動(dòng)了社會(huì)分工,極大促進(jìn)了云原生技術(shù)和云原生生態(tài)的發(fā)展。
2.業(yè)務(wù)創(chuàng)新需要云原生
互聯(lián)網(wǎng)(尤其移動(dòng)互聯(lián)網(wǎng))的蓬勃發(fā)展提高了業(yè)務(wù)的推廣速度,云產(chǎn)品以及服務(wù)大幅降低了海量數(shù)據(jù)與高并發(fā)的技術(shù)門(mén)檻,二者共同作用,使業(yè)務(wù)的創(chuàng)新速度達(dá)到了前所未有的程度。每天有無(wú)數(shù)的新App產(chǎn)生。一個(gè)App從最初上線到日活躍用戶過(guò)十萬(wàn)、百萬(wàn)、千萬(wàn),可能只需要短短幾個(gè)月的時(shí)間。我們正處在一個(gè)業(yè)務(wù)快速增長(zhǎng)的時(shí)代,產(chǎn)品既需要更快的交付速度以便驗(yàn)證業(yè)務(wù)可行性,又需要更好的用戶體驗(yàn)以便在眾多的App中脫穎而出。這也是傳統(tǒng)企業(yè)競(jìng)爭(zhēng)不過(guò)互聯(lián)網(wǎng)公司的原因。其中一個(gè)重要的因素是產(chǎn)品的進(jìn)化速度太慢,不能根據(jù)用戶的反饋快速迭代。當(dāng)某個(gè)功能用戶使用頻率比較高時(shí),產(chǎn)品的發(fā)展方向可能會(huì)隨時(shí)發(fā)生轉(zhuǎn)變,需要不斷在市場(chǎng)中調(diào)整和演進(jìn)產(chǎn)品的發(fā)展路線。萬(wàn)眾創(chuàng)業(yè)的時(shí)代機(jī)會(huì)轉(zhuǎn)瞬即逝,如果不能在第一時(shí)間抓住市場(chǎng)的熱點(diǎn),企業(yè)很快就會(huì)被市場(chǎng)淘汰。有研究數(shù)據(jù)表明:中國(guó)互聯(lián)網(wǎng)企業(yè)的平均生命周期普遍在3~5年。“3年”成為劃分一個(gè)企業(yè)生命周期的分界線。
產(chǎn)品交付速度的提高不能以降低可用性為代價(jià)。我們知道,變更是可用性的“天敵”,以阿里巴巴為例,有統(tǒng)計(jì)數(shù)據(jù)表明,超過(guò)50%的線上故障是變更引起的,也正因如此,每逢重要的節(jié)假日或者大促活動(dòng)節(jié)點(diǎn),我們都會(huì)進(jìn)行“封網(wǎng)”,以確保線上系統(tǒng)的穩(wěn)定和可靠。當(dāng)然這也是目前技術(shù)不夠成熟,不得已而為之的折中和讓步。就像目前很多傳統(tǒng)企業(yè)的線上管理策略,提升可用性的一種方法就是少發(fā)布、多審核,這顯然是和快速試錯(cuò)、快速交付、快速迭代的互聯(lián)網(wǎng)思想背道而馳的。在傳統(tǒng)行業(yè)中,企業(yè)的應(yīng)用系統(tǒng)一般是有一個(gè)工作時(shí)間的,應(yīng)用的發(fā)布和變更會(huì)選擇在非工作時(shí)間進(jìn)行。但在互聯(lián)網(wǎng)行業(yè)中,尤其在全球化背景下,我們要求應(yīng)用系統(tǒng)具有7×24小時(shí)不間斷的在線服務(wù)能力,不存在非工作時(shí)間,甚至不存在業(yè)務(wù)低峰期,這就對(duì)企業(yè)的應(yīng)用系統(tǒng)運(yùn)維提出了更高的要求。云計(jì)算已經(jīng)重塑了軟件的整個(gè)生命周期,從架構(gòu)設(shè)計(jì)到開(kāi)發(fā),再到構(gòu)建、交付和運(yùn)維等所有環(huán)節(jié)。云原生通過(guò)一系列產(chǎn)品、工具、方法減少變更導(dǎo)致的可用性問(wèn)題,而不是因噎廢食地控制變更、減少發(fā)布次數(shù)。
互聯(lián)網(wǎng)公司經(jīng)常提到他們每天實(shí)現(xiàn)幾十次,甚至上百次的發(fā)布。為什么頻繁發(fā)布如此重要?如果你可以每天實(shí)現(xiàn)上百次發(fā)布,那么你就可以幾乎立即從錯(cuò)誤的版本中恢復(fù)過(guò)來(lái);如果你可以立即從錯(cuò)誤中恢復(fù)過(guò)來(lái),那么你就能夠承受更多的風(fēng)險(xiǎn);如果你可以承受更多的風(fēng)險(xiǎn),那么你就可以做更“瘋狂”的試驗(yàn)——這些試驗(yàn)結(jié)果可能會(huì)成為你接下來(lái)的競(jìng)爭(zhēng)優(yōu)勢(shì)。
3.業(yè)務(wù)不確定性需要云原生
云最主要的特性之一就是彈性,這也是企業(yè)應(yīng)用上云最核心的需求。隨著移動(dòng)互聯(lián)網(wǎng)的普及,以及網(wǎng)紅經(jīng)濟(jì)、熱門(mén)事件營(yíng)銷(xiāo)、秒殺大促等商業(yè)模式的推陳出新,企業(yè)的業(yè)務(wù)流量變得無(wú)法預(yù)估。當(dāng)然,為了應(yīng)對(duì)突發(fā)流量的沖擊,企業(yè)也可以購(gòu)買(mǎi)更多更高規(guī)格的服務(wù)器;但對(duì)于絕大部分業(yè)務(wù)平峰期以及低峰期, CPU都是空閑的,這會(huì)讓資源使用率指標(biāo)很低。通過(guò)云的彈性伸縮,可以應(yīng)對(duì)業(yè)務(wù)突發(fā)流量的沖擊,保證業(yè)務(wù)的平穩(wěn)運(yùn)行,提高資源利用率,降低IT運(yùn)營(yíng)成本。
隨著企業(yè)的應(yīng)用系統(tǒng)進(jìn)行分布式改造,應(yīng)用由一個(gè)單體應(yīng)用被分割為眾多的微服務(wù)應(yīng)用,整個(gè)應(yīng)用集群的節(jié)點(diǎn)數(shù)由原來(lái)的數(shù)十個(gè)快速上升到了數(shù)百以至上千個(gè),垂直拆分帶來(lái)良好隔離性的同時(shí),也使資源的利用率大幅下降?;ヂ?lián)網(wǎng)公司通過(guò)以下兩個(gè)開(kāi)創(chuàng)性的舉措來(lái)解決這個(gè)問(wèn)題。
(1)不再繼續(xù)購(gòu)買(mǎi)更大型的服務(wù)器,取而代之的是用大量更便宜機(jī)器來(lái)水平擴(kuò)展應(yīng)用實(shí)例。這些機(jī)器更容易獲得,并且能夠快速部署。
(2)將大型服務(wù)器虛擬化成幾個(gè)較小的服務(wù)器,并向其部署多個(gè)隔離的工作負(fù)載,從而改善現(xiàn)有大型服務(wù)器的資源利用率。
縱觀IT應(yīng)用服務(wù)器的發(fā)展歷史:大型機(jī)→小型機(jī)→x86服務(wù)器→虛擬機(jī)→容器→Serverless,越來(lái)越朝著輕量化的方向發(fā)展,這也符合云原生敏捷基礎(chǔ)設(shè)施的策略。輕量化意味著更好的彈性,應(yīng)用部署時(shí)間相應(yīng)減少:月(大型機(jī))→天(小型機(jī))→小時(shí)(x86服務(wù)器)→分鐘(虛擬機(jī))→秒(容器)→毫秒(Serverless)。極致的彈性是企業(yè)解決業(yè)務(wù)不確定性的有效手段。
云原生的核心技術(shù)之一是容器。容器技術(shù)的興起源于2013年開(kāi)源的Docker。容器的價(jià)值可以從下面兩個(gè)層面闡述。
(1)從應(yīng)用架構(gòu)層面,容器技術(shù)可以方便地支持微服務(wù)架構(gòu)實(shí)現(xiàn)應(yīng)用的無(wú)狀態(tài)化,更加靈活地應(yīng)對(duì)變化和彈性擴(kuò)展。在軟件生命周期管理方面,容器技術(shù)可以幫助把DevOps等最佳實(shí)踐落地成可運(yùn)用的標(biāo)準(zhǔn)化工具和框架,大大提升開(kāi)發(fā)效率,加速迭代。DevOps的概念最早起源于2009年的歐洲(更早的20世紀(jì)90年代提出的柔性生產(chǎn)模式中也有DevOps的思想),但一直不溫不火,直到Docker容器技術(shù)的流行,最近幾年DevOps才為人們所津津樂(lè)道。
(2)從基礎(chǔ)架構(gòu)層面,容器技術(shù)帶來(lái)的可移植性,可以幫助開(kāi)發(fā)者和企業(yè)更便捷地上云和遷云,讓?xiě)?yīng)用在自有數(shù)據(jù)中心和云端實(shí)現(xiàn)動(dòng)態(tài)遷移。隨著容器技術(shù)和云計(jì)算的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)的進(jìn)一步融合,更快速地推動(dòng)從傳統(tǒng)以基礎(chǔ)設(shè)施為中心,向以應(yīng)用為中心的IT架構(gòu)轉(zhuǎn)變。
容器解決了應(yīng)用與運(yùn)行環(huán)境的解耦,把運(yùn)行環(huán)境也作為一種資源支持可編程式的管理;Kubernetes的出現(xiàn)則讓資源的動(dòng)態(tài)編排與管理變得更加簡(jiǎn)單,充分滿足業(yè)務(wù)不確定對(duì)資源的彈性要求。
綜上所述,云原生不是一個(gè)產(chǎn)品,而是一套技術(shù)體系和一套方法論。企業(yè)數(shù)字化轉(zhuǎn)型是思想先行,從內(nèi)到外的整體變革,更確切地說(shuō),它是一種文化,更是一種潮流,是企業(yè)云計(jì)算戰(zhàn)略的必然導(dǎo)向。
- 網(wǎng)絡(luò)工程
- 流式系統(tǒng)
- 云計(jì)算和大數(shù)據(jù)技術(shù)實(shí)戰(zhàn)
- PWA實(shí)戰(zhàn):面向下一代的Progressive Web APP
- 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ):基于案例與實(shí)訓(xùn) 第2版
- 深入淺出Vue.js
- Instant Edublogs
- 軟件定義網(wǎng)絡(luò):SDN與OpenFlow解析
- 阿里云云原生架構(gòu)實(shí)踐
- 信號(hào)與信息
- 兼攻之道:思科當(dāng)前贏利和長(zhǎng)遠(yuǎn)發(fā)展的秘訣
- 現(xiàn)代網(wǎng)絡(luò)新技術(shù)概論(精裝版)
- Bootstrap響應(yīng)式Web前端開(kāi)發(fā)
- NS2仿真實(shí)驗(yàn)
- 交互式Web前端開(kāi)發(fā)實(shí)踐