云原生「寒武紀(jì)大爆發(fā)」,它為什么這么「香」?
先講一個(gè)故事。
4000多個(gè)模塊,100萬(wàn)條指令,超過(guò)5000人年,耗資數(shù)億美元,這是IBM公司開(kāi)發(fā) OS/360系統(tǒng)的投入成本。有人預(yù)估,IBM投入成本達(dá)到了美國(guó)「曼哈頓」原子彈計(jì)劃的四分之一。盡管如此,項(xiàng)目還是延期交付,并且在交付使用后發(fā)現(xiàn)了大量缺陷。
那時(shí),正處第二次軟件危機(jī),人機(jī)和諧共處持續(xù)了十余年。但,機(jī)器算力持續(xù)膨脹,它超出了人類個(gè)體生理極限,也超出了人類群體的溝通極限。
現(xiàn)在來(lái)看,現(xiàn)有的許多軟件架構(gòu)和開(kāi)發(fā)方法,都在逐漸與硬件算力規(guī)模對(duì)齊。例如,適配云計(jì)算與分布式的主流架構(gòu)形式的微服務(wù),它們?cè)跒槿藗兘鉀Q了更復(fù)雜軟件問(wèn)題的同時(shí),也正在讓企業(yè)現(xiàn)代化應(yīng)用的建設(shè)、交付與運(yùn)維推向更高層次。
今天你我所談的云原生,便是這次變革浪潮的開(kāi)端。
云原生的孕育:生于云上,長(zhǎng)于云上
云原生,英文名為Cloud Native,顧名思義,云原生是云計(jì)算的「娃」,它生于云上,長(zhǎng)于云上,在云上以一種全新的、高效的方式幫助企業(yè)部署應(yīng)用。
可以說(shuō),云計(jì)算產(chǎn)業(yè)發(fā)展近二十年,發(fā)展的重點(diǎn)從「面向云遷移應(yīng)用」轉(zhuǎn)向「在云上構(gòu)建應(yīng)用」,云計(jì)算也已然開(kāi)啟了新的范式——以容器、微服務(wù)等為代表的云原生時(shí)代。
其實(shí),云原生這個(gè)概念,在八年前才第一次被完整系統(tǒng)地提出。
2013年,Pivotal(美國(guó)云軟件開(kāi)發(fā)工具與服務(wù)公司)的Matt Stine,根據(jù)多年經(jīng)驗(yàn),總結(jié)出了一套方法論,包括對(duì)文化、組織架構(gòu)的重組和建設(shè),還有具體的操作工具。
Matt特別點(diǎn)出了,基于DevOps、持續(xù)交付、微服務(wù)、敏捷基礎(chǔ)設(shè)施等技術(shù)和管理方法,讓企業(yè)也能「享受」云的高效和持續(xù)的服務(wù)能力,這標(biāo)志著相對(duì)完整的「云原生」范疇,正式形成。
不過(guò),這在當(dāng)時(shí)并沒(méi)有引起太大的注意。
直到2015年,CNCF(云原生基金會(huì))正式定義了「云原生」,才被大眾廣泛認(rèn)識(shí)。
這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。
眼下,云原生加速開(kāi)啟了一次技術(shù)產(chǎn)業(yè)革命,它蘊(yùn)藏了很多廣闊且還未被挖掘的前景。
據(jù)Forrester《亞太區(qū)市場(chǎng)趨勢(shì)預(yù)測(cè)2022》報(bào)告,2021年,全球云原生應(yīng)用持續(xù)上升,開(kāi)發(fā)人員報(bào)告其組織中容器(33%至42%)和無(wú)服務(wù)器技術(shù)(26%至32%)的使用率都發(fā)生了迅猛增長(zhǎng),兩者在一年內(nèi)都增長(zhǎng)了75%以上。
來(lái)看明年,在采用云優(yōu)先戰(zhàn)略的亞太公司中,30%將轉(zhuǎn)向云原生,以推動(dòng)技術(shù)驅(qū)動(dòng)的創(chuàng)新。一些亞太地區(qū)的公司將優(yōu)先考慮基于容器、面向微服務(wù)的架構(gòu),在混合云和多云環(huán)境中具有分布式能力,而不是只為新工作負(fù)載采用云解決方案。
用過(guò)云原生的企業(yè),直呼「真香」,云原生使用率上升,并迎來(lái)了「寒武紀(jì)大爆發(fā)」時(shí)代。它為什么受到企業(yè)追捧?有哪些特點(diǎn)?對(duì)企業(yè)IT工作模式和文化產(chǎn)生了哪些影響?遇到了哪些挑戰(zhàn)?企業(yè)如何解決?
就云原生技術(shù)特點(diǎn)、發(fā)展趨勢(shì)和未來(lái)前景,紅帽中國(guó)首席架構(gòu)師張家駒、招商銀行資深云計(jì)算架構(gòu)師羅文江、Elastic開(kāi)發(fā)者布道師、中國(guó)DevOps社區(qū)組織者劉征和某信息科技公司首席架構(gòu)師任鋼,在2021年紅帽論壇“云原生之夜”期間展開(kāi)了對(duì)話,其中的觀點(diǎn)值得云計(jì)算產(chǎn)業(yè)深思。
云原生的練就:三大絕技,各顯靈通
剛才提到,云原生概念,本是一系列思想集合,包括微服務(wù)、持續(xù)交付和容器化等等。任鋼指出,它們也構(gòu)成了云原生的三大特點(diǎn),各有側(cè)重,各顯靈通,我們逐個(gè)來(lái)看。
“在云原生的場(chǎng)景里,如今已經(jīng)離不開(kāi)容器化了。”任鋼說(shuō)道。
容器,不僅能夠讓「磚頭」更小,「顆粒度」更細(xì),「搬磚」更輕松,實(shí)現(xiàn)比虛擬化更細(xì)的資源分割。再配合K8S等編排、調(diào)度工具的加持,IT基礎(chǔ)設(shè)施秒級(jí)彈性不在話下。
“談到容器化,不僅是指以Docker為代表的容器化和容器引擎技術(shù),還有容器化運(yùn)行平臺(tái)、底層的云平臺(tái)資源,在企業(yè)內(nèi)部還要有一些物理架構(gòu)、混合架構(gòu)。”任鋼說(shuō),容器實(shí)現(xiàn)了多種環(huán)境的互操作性,讓計(jì)算資源的顆粒度比虛擬機(jī)更小,部署更靈活。一旦把云應(yīng)用容器化之后,就很方便企業(yè)在所有環(huán)境上做統(tǒng)一管理和部署。
對(duì)于微服務(wù)來(lái)說(shuō),有人比喻,如果說(shuō)此前軟件是「鋼筋混凝土般」的「單體大塊頭」,那么,微服務(wù)「化整為零」的思路,將「大塊頭」變成了模塊化、積木式的「樂(lè)高」,將單體大應(yīng)用,拆分成功能相對(duì)獨(dú)立的小應(yīng)用。同時(shí),K8S和ServiceMesh等一系列技術(shù),也讓「搬磚」更輕松。
任鋼對(duì)微服務(wù)有兩種理解——狹義微服務(wù)和廣義微服務(wù)。
狹義微服務(wù),就是單指把一個(gè)很大的單機(jī)程序,變成一個(gè)個(gè)小的服務(wù);廣義微服務(wù),不僅包括前者,更包括了微服務(wù)管理,例如,微服務(wù)的發(fā)現(xiàn)機(jī)制、微服務(wù)的配置、微服務(wù)的網(wǎng)關(guān)等等,這些構(gòu)成了整個(gè)微服務(wù)的架構(gòu)。
“然而,不管是廣義還是狹義,企業(yè)都要接受并且實(shí)踐微服務(wù)這個(gè)概念。”任鋼說(shuō)。
張家駒更是強(qiáng)調(diào),微服務(wù)不光是一個(gè)技術(shù)問(wèn)題,也是一個(gè)整體業(yè)務(wù)拆分、研發(fā)組織、團(tuán)隊(duì)分工問(wèn)題。正如1968年一個(gè)叫梅爾文·康威的程序員的論文中所寫(xiě),有什么樣的組織架構(gòu)就會(huì)設(shè)計(jì)出什么樣的系統(tǒng)架構(gòu),這就是著名的康威定律。
大公司中一個(gè)個(gè)獨(dú)立作戰(zhàn)的小團(tuán)隊(duì),它們的組織溝通與協(xié)助方式,正是微服務(wù)的本質(zhì),也彰顯了云原生很強(qiáng)大的魅力。
談云原生,避免不了要談云原生的組織、流程、文化,自然就與DevOps核心理念分不開(kāi)。
作為一種主流的軟件開(kāi)發(fā)交付模式,DevOps的應(yīng)用,很好地填補(bǔ)了開(kāi)發(fā)端和運(yùn)維端之間的信息鴻溝,研發(fā)和運(yùn)維水乳交融,你中有我,我中有你。確切講,DevOps并不像是某種技術(shù),而是一種軟件工程文化。
其實(shí),DevOps早在與云原生之前推出,并且在企業(yè)落地和應(yīng)用,已經(jīng)積累了大量的基礎(chǔ),云原生概念火了之后,基于DevOps的應(yīng)用系統(tǒng)交付結(jié)合到云原生之中,發(fā)展到如今,DevOps變成了云原生的一大特征。
“另外,DevOps在云原生中很重要的理念之一,便是持續(xù)交付。持續(xù)交付就表示,代碼可以小時(shí)級(jí)別、分鐘級(jí)別實(shí)現(xiàn)部署,每一個(gè)業(yè)務(wù)需求都能以最短的時(shí)間交付給用戶。”劉征表示。
云原生的歷練:準(zhǔn)入門(mén)檻,惡補(bǔ)功課
與云原生技術(shù)變革相伴的,是它對(duì)各行各業(yè)以及IT從業(yè)群體的影響。
以招商銀行自身探索實(shí)踐舉例來(lái)看。招行是金融行業(yè)數(shù)字化轉(zhuǎn)型中的一面旗幟,在很多技術(shù)理念上大膽創(chuàng)新。
沿著時(shí)間線看,2015年,開(kāi)始研究DevOps技術(shù);2016年,做DevOps平臺(tái)建設(shè);2017年開(kāi)始推廣,2018年全面落地。“DevOps目前支持了總行、分行還有子公司的IT業(yè)務(wù),規(guī)模流水線已經(jīng)上萬(wàn),后面又衍生出一些需求空間,比如原來(lái)的流水線CI/CD,前置到需求空間,滿足各個(gè)室組的電子看板需求。”羅文江談?wù)行羞@些年的探索。
目前,招行有超過(guò)30人的研發(fā)團(tuán)隊(duì),上個(gè)月已經(jīng)發(fā)布了99個(gè)迭代。“不過(guò),如果各位有機(jī)會(huì)進(jìn)招行,首先要把DevOps學(xué)會(huì),要不然沒(méi)法干活。”羅文江打趣說(shuō)道,不懂DevOps,很難勝任IT建設(shè)工作,因?yàn)镈evOps在銀行數(shù)字化轉(zhuǎn)型起到了非常重要的作用。
在羅文江看來(lái),DevOps應(yīng)該是一家優(yōu)秀企業(yè)早就應(yīng)該具備的一項(xiàng)能力,很多企業(yè)要做云原生之前,恐怕要惡補(bǔ)一下DevOps這門(mén)「功課」,否則很難駕馭。
或者,企業(yè)可以向技術(shù)提供商尋求幫助,就像招行在進(jìn)行底層基礎(chǔ)設(shè)施平臺(tái)建設(shè)的時(shí)候,就選擇了紅帽來(lái)提供技術(shù)支持,到如今,OpenShift支撐了招行DevOps上萬(wàn)條流水線的并發(fā)度。
不過(guò)問(wèn)題來(lái)了,DevOps可以更快交付轉(zhuǎn)型微服務(wù)架構(gòu)的應(yīng)用,但是非微服務(wù)架構(gòu)的應(yīng)用是否都要轉(zhuǎn)型到微服務(wù)架構(gòu)的應(yīng)用?羅文江認(rèn)為并不一定。
技術(shù)間的融合已經(jīng)在發(fā)生,但要不要上微服務(wù),要根據(jù)各個(gè)團(tuán)隊(duì)的業(yè)務(wù)系統(tǒng)的需求特征,由團(tuán)隊(duì)自主選擇。
一些典型的例子,也貫穿在招行的實(shí)踐中。
在2019年,招行做了一個(gè)SaaS應(yīng)用,叫做幸福通,它是從銀行的工資代發(fā)場(chǎng)景出發(fā),從中小企業(yè)的上下鏈,如財(cái)務(wù)、人事等流程入手,打通批發(fā)、零售各個(gè)系統(tǒng),打通不同終端。這個(gè)應(yīng)用必須要迭代開(kāi)發(fā),快速交付市場(chǎng)。當(dāng)時(shí)的IT團(tuán)隊(duì)就選擇了微服務(wù)架構(gòu),現(xiàn)在基本能做到一年一個(gè)大版本迭代。
云原生的圖景:技術(shù)碰撞,享受價(jià)值
作為構(gòu)建云原生應(yīng)用非常重要的一個(gè)框架,紅帽開(kāi)源Quarkus相對(duì)Spring Boot 框架Java的“老式語(yǔ)言”,完全繼承了云原生的基因。
“它推出的時(shí)候,完全是基于Kubernetes來(lái)做的,設(shè)計(jì)之初,就做到像「電」一樣,叫它啟動(dòng)就啟動(dòng),讓它退出就退出;而Spring Boot不是這樣,它啟動(dòng)慢,占用內(nèi)存大,耗費(fèi)資源多等等,這就是兩者之間最大的一個(gè)區(qū)別。”任鋼說(shuō)道。
談到云原生時(shí)代的運(yùn)維新范式,例如,不可變基礎(chǔ)設(shè)施,劉征認(rèn)為其背后所暗含的意義在于,對(duì)IT運(yùn)維團(tuán)隊(duì)顛覆性改變和指數(shù)級(jí)價(jià)值創(chuàng)新。
和可變基礎(chǔ)設(shè)施相比,不可變基礎(chǔ)設(shè)施在處理服務(wù)器的方法,如創(chuàng)建、維護(hù)、更新、銷毀等方面差異很大。前者,可部署后進(jìn)行更改;而后者,需保持不變并最終被替換。
如何來(lái)理解?他做了一個(gè)非常有趣的比喻:如果任何一個(gè)虛擬機(jī)壞了,或它的服務(wù)出現(xiàn)故障,可以像牛一樣「宰掉」,換新的直接替換它;而對(duì)待可變基礎(chǔ)設(shè)施,需要像貓咪一樣去「嬌養(yǎng)」。
任鋼認(rèn)為,這種顛覆性的概念轉(zhuǎn)變,一方面能夠保證基礎(chǔ)架構(gòu)中更高的一致性和可靠性,以及更簡(jiǎn)單、更可預(yù)測(cè)的部署過(guò)程;另一方面,它可以緩解或完全防止可變基礎(chǔ)架構(gòu)中常見(jiàn)的問(wèn)題,例如配置漂移等。
“即使你再不習(xí)慣,也要果斷適應(yīng)到新的不可變基礎(chǔ)設(shè)施操作方式上來(lái),享受云原生時(shí)代的好處。”任鋼坦言。
結(jié)語(yǔ)
顯然,云原生不僅提升的是交付速度,且是企業(yè)現(xiàn)代化應(yīng)用的建設(shè)、交付與運(yùn)維的重新定義,云計(jì)算的推翻、重構(gòu)和迭代。
云原生,它恰逢之時(shí),在萬(wàn)千行業(yè)數(shù)字化轉(zhuǎn)型浪潮當(dāng)下,被挖掘,被擴(kuò)散,逐漸形成星火燎原的勢(shì)態(tài)。
*1 CNCF(云原生基金會(huì))定義下的「云原生」:
云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。
*2 康威定律:
”系統(tǒng)設(shè)計(jì)(產(chǎn)品結(jié)構(gòu))等同組織形式,每個(gè)設(shè)計(jì)系統(tǒng)的組織,其產(chǎn)生的設(shè)計(jì)等同于組織之間的溝通結(jié)構(gòu),簡(jiǎn)單一點(diǎn)理解就是:系統(tǒng)設(shè)計(jì)受限于設(shè)計(jì)系統(tǒng)的組織架構(gòu)形式“ 。
*3 微服務(wù)的本質(zhì):
“將一個(gè)個(gè)業(yè)務(wù)功能拆分出來(lái),并由一個(gè)微型團(tuán)隊(duì)來(lái)開(kāi)發(fā)、構(gòu)建、運(yùn)維,團(tuán)隊(duì)與團(tuán)隊(duì)之間通過(guò)定義清晰的邊界進(jìn)行溝通”。