今天的分享主題是云原生上云概述,想和大家分享一下什么是云原生,怎么通過云原生方式上云,以及這種方式和原來的方式有什么區(qū)別。分享內(nèi)容中會涉及到云原生的一些技術(shù)包含容器、微服務(wù)、Serverless等,希望能幫助大家更好地用云原生方式上云。
高速發(fā)展的云原生技術(shù)
云原生沒有很長的歷史,是近兩年開始火爆的。最早是Pivotal公司提出的概念,不同企業(yè)對它有不同的解讀。大多數(shù)企業(yè)認(rèn)為云原生的概念是由CNCF云原生基金會做的定義。
首先,云原生技術(shù)有利于各組織在公有云、私有云和混合云形態(tài)下使用。云原生不等于公有云,它對于私有云和混合云是一樣的,可以用在各種云的環(huán)境下。
但如果你自己買兩臺服務(wù)器,用一些云原生相關(guān)的技術(shù)其實(shí)是不能算云原生的,因?yàn)樵圃鷱?qiáng)調(diào)的一個(gè)點(diǎn)就是可彈性。這也就是我說的第二點(diǎn),云原生技術(shù)可以幫助用戶構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。對云計(jì)算了解得越多,越會發(fā)現(xiàn),彈性是一個(gè)特別重要的概念。所有基礎(chǔ)設(shè)施的彈性以及帶來的上層的彈性,會是云帶來的價(jià)值中最根本的起始。
第三,云原生的代表性技術(shù):容器、服務(wù)網(wǎng)絡(luò)、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API等。這些技術(shù)可以幫助用戶去構(gòu)建容錯性好、易于管理、便于觀測的松耦合應(yīng)用,結(jié)合一些自動化的技術(shù)幫助用戶快速地去發(fā)布這個(gè)業(yè)務(wù)。它的一個(gè)價(jià)值就是能幫助用戶構(gòu)建松耦合系統(tǒng)。在這個(gè)市場變化越來越快的場景下,業(yè)務(wù)變得越來越復(fù)雜,會讓應(yīng)用框架和基礎(chǔ)設(shè)施也變得越來越復(fù)雜。所以松耦合的架構(gòu)會成為大家現(xiàn)在應(yīng)用架構(gòu)或基礎(chǔ)設(shè)施架構(gòu)越來越喜歡的方式,分層解耦成不同層的問題選擇不同的解決方案。
發(fā)布變更的速度以前可能一個(gè)業(yè)務(wù)是一個(gè)季度發(fā)一次,或者是一個(gè)月發(fā)一次,但是現(xiàn)在這種高速發(fā)展、競爭越來越激烈的情況下,企業(yè)會希望我們每星期都能發(fā)布,或者說出了線上問題當(dāng)天就能發(fā)布。在這個(gè)發(fā)布的過程中,讓穩(wěn)定性更好,不會對業(yè)務(wù)產(chǎn)生影響,就是云原生技術(shù)想解決的幾個(gè)問題。
很多報(bào)告也都在看這個(gè)趨勢的發(fā)展,怎么評估云原生技術(shù)現(xiàn)在成熟度如何,現(xiàn)在去使用是不是一個(gè)合適的時(shí)機(jī)?這里有一些參考數(shù)據(jù):Gartner預(yù)測到2022年的時(shí)候,75%的企業(yè)會使用云原生容器化的技術(shù)。
這個(gè)是對容器技術(shù)的一個(gè)初步判斷,像Stack Overflow上面就是著名的程序員社交網(wǎng)站。容器已經(jīng)成為了Linux之后最受歡迎的一個(gè)項(xiàng)目,以容器為代表的云原生技術(shù)其實(shí)在業(yè)界的成熟度已經(jīng)比較高了,它的熱度以及用戶使用它運(yùn)行生產(chǎn)環(huán)境的比例也越來越高。
廣義云原生定義
云原生技術(shù)不等于云原生
云原生技術(shù)不是云原生。想把云原生的技術(shù)發(fā)揮到極致,這是個(gè)系統(tǒng)化的問題。需要從軟件、硬件和價(jià)格層面去全面地使用云原生方式。除了硬件上對云原生技術(shù)的支持、安全上的支持,還包括像數(shù)據(jù)庫、大數(shù)據(jù)都在不斷推出自己與云原生相關(guān)的一些東西。
云原生是一個(gè)更廣義的概念,包含了剛才提到的這些云原生技術(shù),也包含了像大數(shù)據(jù)、數(shù)據(jù)庫、硬件、芯片等這些不斷創(chuàng)新的領(lǐng)域。隨著企業(yè)開始使用云原生技術(shù),其實(shí)是云上整個(gè)技術(shù)棧在不斷地做創(chuàng)新。
云原生==因云而生
云原生對于企業(yè)來說可能是幸運(yùn)的,也可能是不幸運(yùn)的。它是這幾年里最大的變革,帶來了從基礎(chǔ)設(shè)施層面往上各層面技術(shù)的變革。我們可能是最后一代需要做云原生上云這件事情的人。展望下未來的幾年時(shí)間里,所有新的應(yīng)用都會是長在云生在云上的,這些應(yīng)用在設(shè)計(jì)之初就會充分考慮怎么用云。
之前很多存量的業(yè)務(wù)在設(shè)計(jì)構(gòu)建之初,沒有充分考慮到對云的適配性。所以我們就需要經(jīng)歷這樣一個(gè)過程,去幫助所有的企業(yè)用云原生技術(shù)上云,最大化地贏得紅利。在這之后的企業(yè)應(yīng)用,云技術(shù)的發(fā)展與云的資源會像自來水一樣,需要的時(shí)候就能夠用到它,這個(gè)就叫按需所用。云的能力變得越來越標(biāo)準(zhǔn),會讓我們的業(yè)務(wù)能更好地符合云原生的架構(gòu)。
云原生上云
云原生上云的方式
什么是云原生上云,怎么去上云,業(yè)內(nèi)對此的模式大致分為三類。請注意:這三類不是互斥的,每一類都是一種選擇,企業(yè)可以根據(jù)自己的現(xiàn)狀去選擇不同的方式逐步去做。
第一類:Cloud-hosting。這種模式是最簡單的一種平搬。如果不想對應(yīng)用架構(gòu)包括基礎(chǔ)設(shè)施的運(yùn)維使用習(xí)慣發(fā)生變化,可能會把當(dāng)前原有的自建方式搬到云上來,用運(yùn)維的方式進(jìn)行管理,這是遷移成本最低的一種方式。
比如原來在虛機(jī)上、在Vmware上跑些業(yè)務(wù),今天可能在云上去申請一些虛擬操作;或原來是跑一個(gè)數(shù)據(jù)庫,現(xiàn)在把數(shù)據(jù)庫放在云上部署,這個(gè)方式對大家的收益相對是比較少的。從財(cái)務(wù)的角度會覺得是從資產(chǎn)的模式轉(zhuǎn)變成一種經(jīng)營的方式。IT部門以前更多的定義為一個(gè)成本部門,所有的機(jī)器是一種資產(chǎn)。云的模式更多的是一種經(jīng)營模式,經(jīng)營的時(shí)候需要一些費(fèi)用。所以對于企業(yè)收益相對會少一點(diǎn)。
第二類:Re-platform。這種可能應(yīng)用側(cè)發(fā)生的變化是較為復(fù)雜的。我們希望通過一些云原生技術(shù),像容器等,能夠讓用戶更大利用云的價(jià)值,包括基于容器的彈性伸縮這樣的技術(shù)會讓用戶遷移成本和得到價(jià)值之間有個(gè)比較好的平衡,因?yàn)樗鼘I(yè)務(wù)一側(cè)幾乎是無感的,個(gè)別情況下會對業(yè)務(wù)進(jìn)行一個(gè)容器化的變化,基本層面主要是運(yùn)維一側(cè)發(fā)生變化。
第三類:Re-architect。對業(yè)務(wù)進(jìn)行完全的重構(gòu),可以最大化地使用云的價(jià)值,但成本也是最高的,因?yàn)樾枰獙φ麄€(gè)業(yè)務(wù)的架構(gòu)去進(jìn)行重新構(gòu)建。
云原生上云最佳實(shí)踐建議
第一種模式只要你想嘗試云都可以去做Cloud-hosting,但云原生上云大多是后來的方式Re-platform和Re-architect。選擇的時(shí)候和你的業(yè)務(wù)特性是非常相關(guān)的,取決于業(yè)務(wù)是處于穩(wěn)態(tài)還是敏態(tài)。
穩(wěn)態(tài)就是你的業(yè)務(wù)當(dāng)前迭代速度并沒有那么快,業(yè)務(wù)的需求變化沒有那么多,它的用戶流量的變化也不會突變,我們稱這個(gè)業(yè)務(wù)為穩(wěn)態(tài)業(yè)務(wù)。對穩(wěn)態(tài)業(yè)務(wù)比較常見的一個(gè)方式可以用Re-platform做法。在這種模式下不需要有什么特別的變化,更多的是使用成熟技術(shù)的方案直接上云。代表性的可選技術(shù)包括容器化,以及容器化之后的彈性能力,會讓用戶的成本大大降低。
另外一個(gè)就是我們叫做BaaS,BaaS就是Backend-as-a-Service,這樣的方式去拿到一些中間的技術(shù),比如說自建的mysql、rocketmq、redis等,可以換成云廠商的數(shù)據(jù)庫,中間件產(chǎn)品。這個(gè)過程能夠降低客戶的運(yùn)維成本和使用成本。
和穩(wěn)態(tài)相對的另一個(gè)是敏態(tài)業(yè)務(wù)。業(yè)務(wù)在不斷的迭代過程中需求是非常旺盛的,可能每星期都會迭代,或者在一個(gè)月內(nèi)就會期望流量的突增。這在互聯(lián)網(wǎng)行業(yè)是很常見的,這時(shí)候會建議用Re-architect模式,在架構(gòu)設(shè)計(jì)的時(shí)候就要考慮用更符合云的使用模式的架構(gòu)去設(shè)計(jì)它。包括微服務(wù)的技術(shù)需要面向服務(wù)設(shè)計(jì),但不是說Re-architect就一定要微服務(wù)。
通過消息隊(duì)列對業(yè)務(wù)進(jìn)行異步化,用Serverless方式把應(yīng)用和基礎(chǔ)設(shè)施的關(guān)注點(diǎn)進(jìn)一步分離,是設(shè)計(jì)敏態(tài)業(yè)務(wù)時(shí)建議的一種方式。各企業(yè)可以對自己的業(yè)務(wù)做一個(gè)判斷,用Re-platform盡量少變更的方式上云還是應(yīng)該做一個(gè)較大的架構(gòu)設(shè)計(jì)的方式上云。
云原生技術(shù)
天然的搭檔——容器化+微服務(wù)
選幾個(gè)云原生技術(shù)和大家進(jìn)行簡單的分享。第一個(gè)就是容器化和微服務(wù),這兩個(gè)可以認(rèn)為是一對天然的好搭檔。往往企業(yè)在選擇它的上云方式的時(shí)候,會把容器化和微服務(wù)同時(shí)考慮,因?yàn)橐聪滤膬r(jià)值和代價(jià)。
容器包括容器編排在今天給我們帶來的價(jià)值主要基于容器標(biāo)準(zhǔn)的交付,會讓我們業(yè)務(wù)從開發(fā)到發(fā)布的過程更加標(biāo)準(zhǔn)化。還有資源利用率的提升,是許多企業(yè)選擇容器的一個(gè)最主要原因。以前虛機(jī)的利用率往往比較難達(dá)到高的比例,而且用戶會擔(dān)心一臺虛機(jī)上部署太多業(yè)務(wù)造成的相互影響。容器會讓用戶對利用率進(jìn)行大的提高。
第三個(gè)是基于容器的編排,包括交付流程和運(yùn)維模式會讓整個(gè)企業(yè)在交付流程和運(yùn)維的標(biāo)準(zhǔn)化實(shí)現(xiàn)進(jìn)一步的提升。讓豐富的K8S生態(tài)包括像安全、CICD等平臺給用戶帶來較大的價(jià)值,這些是用戶大多數(shù)去選擇容器包括Kubernetes的時(shí)候期望的價(jià)值。
微服務(wù)價(jià)值主要在業(yè)務(wù)一側(cè),隨著業(yè)務(wù)不斷的發(fā)展,特別是敏態(tài)業(yè)務(wù),當(dāng)它發(fā)展到一定階段的時(shí)候會變得很復(fù)雜,這時(shí)候微服務(wù)就能夠很好地幫助用戶去降低業(yè)務(wù)的復(fù)雜度。當(dāng)對一個(gè)復(fù)雜的業(yè)務(wù)很難進(jìn)行維護(hù)的時(shí)候,最好的辦法就是拆解它,把它復(fù)雜度降低,這是微服務(wù)最核心的理念。在這之后帶來的靈活性、彈性、更敏捷的開發(fā)是微服務(wù)的價(jià)值,之后業(yè)務(wù)的模塊能夠更方便的進(jìn)行復(fù)用。所以容器更側(cè)重于運(yùn)維帶來的價(jià)值,微服務(wù)更側(cè)重應(yīng)用帶來的價(jià)值。
很多時(shí)候技術(shù)的選擇是一個(gè)價(jià)值和成本的平衡,包括微服務(wù)和容器,它一定會帶來一些代價(jià)。第一個(gè)比較大的代價(jià)就是微服務(wù)化后會讓用戶的架構(gòu)變得復(fù)雜,相應(yīng)的運(yùn)維也會帶來復(fù)雜性。就比如我原來有一個(gè)業(yè)務(wù),就一個(gè)應(yīng)用部署就夠了,現(xiàn)在它被拆成二十多個(gè)服務(wù),那它的運(yùn)維成本、線上診斷成本肯定都會提高。
容器設(shè)定的理念就能夠很好地解決微服務(wù)提到的復(fù)雜問題,所以這也是容器和微服務(wù)是一對天然好搭檔的一個(gè)重要原因。但是容器也不是免費(fèi)的,它會帶來一些運(yùn)維體系的變化。就是每次用一個(gè)新技術(shù)碰到一個(gè)問題,原來我有一個(gè)團(tuán)隊(duì)可能非常熟悉虛機(jī)或物理機(jī)的運(yùn)維,但放到容器之后帶來的一些新的技術(shù)、運(yùn)維的方式會讓整個(gè)團(tuán)隊(duì)的適應(yīng)周期比較長,代價(jià)也較大。
云原生技術(shù)之Serverless
另一個(gè)云原生技術(shù)就是Serverless。Serverless這個(gè)概念目前是很火很好的,未來十年也很看好Serverless。到底這個(gè)無服務(wù)器Serverless是什么,個(gè)人觀念它是一個(gè)基礎(chǔ)設(shè)施下沉,開發(fā)和運(yùn)維的關(guān)注點(diǎn)分離的一個(gè)方向。Serverless這個(gè)概念是在2010年左右的時(shí)候提出的。
最有名的產(chǎn)品實(shí)現(xiàn)是AWS的Lambda,它把Serverless理念變成了一個(gè)產(chǎn)品。但隨著技術(shù)的演進(jìn),Serverless不僅僅是函數(shù)計(jì)算,它已經(jīng)涵蓋到了各個(gè)層面的東西,其中最大的價(jià)值就是讓我們的開發(fā)和運(yùn)維完全進(jìn)行分離,讓開發(fā)人員更專注開發(fā),所有基礎(chǔ)設(shè)施相關(guān)的事情都交給云廠商或者運(yùn)維團(tuán)隊(duì)來完成。
從這個(gè)層面來說可能是面向函數(shù)的Serverless,可以寫一段代碼然后直接運(yùn)行;也可能是面向應(yīng)用的偏傳統(tǒng)的Serverless,我有一個(gè)業(yè)務(wù),我不想把它變成函數(shù),我還是喜歡用原來的方式去運(yùn)行,包括現(xiàn)在面向應(yīng)用的Serverless應(yīng)用引擎,面向容器編排的Serverless Kubernetes,面向容器的ECI,這一系列在Serverless這個(gè)概念下都是Serverless體系的一部分。
云原生開源技術(shù)
除了前面提到的像容器、微服務(wù)、Serverless技術(shù)之外,實(shí)際上云原生這塊技術(shù)是非常廣泛的。阿里云除了提供云計(jì)算之外,在開源的技術(shù)領(lǐng)域也有非常多的貢獻(xiàn)。這里面列出了很多阿里云貢獻(xiàn)或參與云原生方面的開源技術(shù),既包括我們比較熟悉的微服務(wù)像Dubbo、Spring Cloud Alibaba等是阿里云貢獻(xiàn)的,也有像容器的邊緣計(jì)算等各種各樣的開源技術(shù)。
云原生產(chǎn)品家族
相應(yīng)地,在云計(jì)算這個(gè)市場里面,阿里云在云原生方面有最全的產(chǎn)品家族,既包括前面講到的容器等,也包括了像云原生的數(shù)據(jù)庫、云原生的大數(shù)據(jù)、云原生的安全這個(gè)一系列的產(chǎn)品,因?yàn)橹挥姓麄€(gè)體系進(jìn)行云原生化,才能幫助用戶用云原生的方式更好地上到云端。
各個(gè)行業(yè)現(xiàn)在都在用云原生的方式上云。過去幾年里用云原生上云的第一批用戶大概是在2017-2018年,互聯(lián)網(wǎng)行業(yè)是最快使用云原生技術(shù)上云的?;ヂ?lián)網(wǎng)業(yè)務(wù)大多都是一些新的業(yè)務(wù),而且往往會有高速地迭代,包括像大流量的沖擊,所以它是第一波選擇用云原生技術(shù)上云的,比如頭條、抖音、快手等。
近兩年偏傳統(tǒng)行業(yè)的企業(yè)也開始用云原生技術(shù)上云,包括政府、金融、制造、物流等都開始用云原生技術(shù)上云。所以在圖上既可以看到有比較前沿的互聯(lián)網(wǎng)行業(yè),也有一些傳統(tǒng)的行業(yè)。
今天的內(nèi)容希望能幫助大家去做一個(gè)思考,能夠讓大家去想想自己所在的這個(gè)企業(yè)或者行業(yè)是不是到了云原生上云的階段,包括用哪種云原生上云的方式適合大家。謝謝!