阿里雲原生資深專家李國強:雲原生上雲概述

編者按:

2021年7月2日,阿里雲使用者組(AUG)首次線下活動在濟南召開。在容器、微服務等領域積澱了豐富經驗的阿里雲原生資深專家李國強,向數十家山東企業分享了雲原生定義、雲原生上雲的多種方式及關鍵技術等。本文根據作者的現場演講整理而成。

今天的分享主題是雲原生上雲概述,想和大家分享一下什麼是雲原生,怎麼透過雲原生方式上雲,以及這種方式和原來的方式有什麼區別。分享內容中會涉及到雲原生的一些技術包含容器、微服務、Serverless等,希望能幫助大家更好地用雲原生方式上雲。

高速發展的雲原生技術

雲原生沒有很長的歷史,是近兩年開始火爆的。最早是Pivotal公司提出的概念,不同企業對它有不同的解讀。大多數企業認為雲原生的概念是由CNCF雲原生基金會做的定義。

首先,雲原生技術有利於各組織在公有云、私有云和混合雲形態下使用。

雲原生不等於公有云,它對於私有云和混合雲是一樣的,可以用在各種雲的環境下。但如果你自己買兩臺伺服器,用一些雲原生相關的技術其實是不能算雲原生的,因為雲原生強調的一個點就是可彈性。

這也就是我說的第二點,雲原生技術可以幫助使用者構建和執行可彈性擴充套件的應用。

對雲計算瞭解得越多,越會發現,彈性是一個特別重要的概念。所有基礎設施的彈性以及帶來的上層的彈性,會是雲帶來的價值中最根本的起始。

第三,雲原生的代表性技術:容器、服務網路、微服務、不可變基礎設施和宣告式API等。

這些技術可以幫助使用者去構建容錯性好、易於管理、便於觀測的松耦合應用,結合一些自動化的技術幫助使用者快速地去釋出這個業務。它的一個價值就是能幫助使用者構建松耦合系統。在這個市場變化越來越快的場景下,業務變得越來越複雜,會讓應用框架和基礎設施也變得越來越複雜。所以松耦合的架構會成為大家現在應用架構或基礎設施架構越來越喜歡的方式,分層解耦成不同層的問題選擇不同的解決方案。釋出變更的速度以前可能一個業務是一個季度發一次,或者是一個月發一次,但是現在這種高速發展、競爭越來越激烈的情況下,企業會希望我們每星期都能釋出,或者說出了線上問題當天就能釋出。在這個釋出的過程中,讓穩定性更好,不會對業務產生影響,就是雲原生技術想解決的幾個問題。

很多報告也都在看這個趨勢的發展,怎麼評估雲原生技術現在成熟度如何,現在去使用是不是一個合適的時機?這裡有一些參考資料:

Gartner預測到2022年的時候,75%的企業會使用雲原生容器化的技術。

這個是對容器技術的一個初步判斷,像Stack Overflow上面就是著名的程式設計師社交網站。容器已經成為了Linux之後最受歡迎的一個專案,以容器為代表的雲原生技術其實在業界的成熟度已經比較高了,它的熱度以及使用者使用它執行生產環境的比例也越來越高。

阿里雲原生資深專家李國強:雲原生上雲概述

廣義雲原生定義

雲原生技術不等於雲原生

雲原生技術不是雲原生。想把雲原生的技術發揮到極致,這是個系統化的問題。需要從軟體、硬體和價格層面去全面地使用雲原生方式。除了硬體上對雲原生技術的支援、安全上的支援,還包括像資料庫、大資料都在不斷推出自己與雲原生相關的一些東西。雲原生是一個更廣義的概念,包含了剛才提到的這些雲原生技術,也包含了像大資料、資料庫、硬體、晶片等這些不斷創新的領域。隨著企業開始使用雲原生技術,其實是雲上整個技術棧在不斷地做創新。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生==因雲而生

雲原生對於企業來說可能是幸運的,也可能是不幸運的。它是這幾年裡最大的變革,帶來了從基礎設施層面往上各層面技術的變革。我們可能是最後一代需要做雲原生上雲這件事情的人。展望下未來的幾年時間裡,所有新的應用都會是長在雲生在雲上的,這些應用在設計之初就會充分考慮怎麼用雲。之前很多存量的業務在設計構建之初,沒有充分考慮到對雲的適配性。所以我們就需要經歷這樣一個過程,去幫助所有的企業用雲原生技術上雲,最大化地贏得紅利。在這之後的企業應用,雲技術的發展與雲的資源會像自來水一樣,需要的時候就能夠用到它,這個就叫按需所用。雲的能力變得越來越標準,會讓我們的業務能更好地符合雲原生的架構。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生上雲

雲原生上雲的方式

什麼是雲原生上雲,怎麼去上雲,業內對此的模式大致分為三類。請注意:這三類不是互斥的,每一類都是一種選擇,企業可以根據自己的現狀去選擇不同的方式逐步去做。

第一類:Cloud-hosting。

這種模式是最簡單的一種平搬。如果不想對應用架構包括基礎設施的運維使用習慣發生變化,可能會把當前原有的自建方式搬到雲上來,用運維的方式進行管理,這是遷移成本最低的一種方式。比如原來在虛機上、在Vmware上跑些業務,今天可能在雲上去申請一些虛擬操作;或原來是跑一個數據庫,現在把資料庫放在雲上部署,這個方式對大家的收益相對是比較少的。從財務的角度會覺得是從資產的模式轉變成一種經營的方式。IT部門以前更多的定義為一個成本部門,所有的機器是一種資產。雲的模式更多的是一種經營模式,經營的時候需要一些費用。所以對於企業收益相對會少一點。

第二類:Re-platform。

這種可能應用側發生的變化是較為複雜的。我們希望透過一些雲原生技術,像容器等,能夠讓使用者更大利用雲的價值,包括基於容器的彈性伸縮這樣的技術會讓使用者遷移成本和得到價值之間有個比較好的平衡,因為它對業務一側幾乎是無感的,個別情況下會對業務進行一個容器化的變化,基本層面主要是運維一側發生變化。

第三類:Re-architect。

對業務進行完全的重構,可以最大化地使用雲的價值,但成本也是最高的,因為需要對整個業務的架構去進行重新構建。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生上雲最佳實踐建議

第一種模式只要你想嘗試雲都可以去做Cloud-hosting,但云原生上雲大多是後來的方式Re-platform和Re-architect。選擇的時候和你的業務特性是非常相關的,取決於業務是處於穩態還是敏態。

穩態就是你的業務當前迭代速度並沒有那麼快,業務的需求變化沒有那麼多,它的使用者流量的變化也不會突變,我們稱這個業務為穩態業務。

對穩態業務比較常見的一個方式可以用

Re-platform

做法。在這種模式下不需要有什麼特別的變化,更多的是使用成熟技術的方案直接上雲。代表性的可選技術包括容器化,以及容器化之後的彈效能力,會讓使用者的成本大大降低。

另外一個就是我們叫做

BaaS

,BaaS就是Backend-as-a-Service ,這樣的方式去拿到一些中間的技術, 比如說自建的mysql、rocketmq、redis等,可以換成雲廠商的資料庫,中介軟體產品。這個過程能夠降低客戶的運維成本和使用成本。

和穩態相對的另一個是敏態業務。業務在不斷的迭代過程中需求是非常旺盛的,可能每星期都會迭代,或者在一個月內就會期望流量的突增。

這在網際網路行業是很常見的,這時候會建議用

Re-architect

模式,在架構設計的時候就要考慮用更符合雲的使用模式的架構去設計它。包括微服務的技術需要面向服務設計,但不是說Re-architect就一定要微服務。透過訊息佇列對業務進行非同步化,用Serverless方式把應用和基礎設施的關注點進一步分離,是設計敏態業務時建議的一種方式。各企業可以對自己的業務做一個判斷,用Re-platform儘量少變更的方式上雲還是應該做一個較大的架構設計的方式上雲。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生技術

天然的搭檔——容器化+微服務

選幾個雲原生技術和大家進行簡單的分享。第一個就是容器化和微服務,這兩個可以認為是一對天然的好搭檔。往往企業在選擇它的上雲方式的時候,會把容器化和微服務同時考慮,因為要看下它的價值和代價。容器包括容器編排在今天給我們帶來的價值主要基於容器標準的交付,會讓我們業務從開發到釋出的過程更加標準化。還有資源利用率的提升,是許多企業選擇容器的一個最主要原因。

以前虛機的利用率往往比較難達到高的比例,而且使用者會擔心一臺虛機上部署太多業務造成的相互影響。容器會讓使用者對利用率進行大的提高。第三個是基於容器的編排,包括交付流程和運維模式會讓整個企業在交付流程和運維的標準化實現進一步的提升。讓豐富的K8S生態包括像安全、CICD等平臺給使用者帶來較大的價值,這些是使用者大多數去選擇容器包括Kubernetes的時候期望的價值。微服務價值主要在業務一側,隨著業務不斷的發展,特別是敏態業務,當它發展到一定階段的時候會變得很複雜,這時候微服務就能夠很好地幫助使用者去降低業務的複雜度。

當對一個複雜的業務很難進行維護的時候,最好的辦法就是拆解它,把它複雜度降低,這是微服務最核心的理念。

在這之後帶來的靈活性、彈性、更敏捷的開發是微服務的價值,之後業務的模組能夠更方便的進行復用。

所以容器更側重於運維帶來的價值,微服務更側重應用帶來的價值。

很多時候技術的選擇是一個價值和成本的平衡,包括微服務和容器,它一定會帶來一些代價。第一個比較大的代價就是微服務化後會讓使用者的架構變得複雜,相應的運維也會帶來複雜性。就比如我原來有一個業務,就一個應用部署就夠了,現在它被拆成二十多個服務,那它的運維成本、線上診斷成本肯定都會提高。容器設定的理念就能夠很好地解決微服務提到的複雜問題,所以這也是容器和微服務是一對天然好搭檔的一個重要原因。但是容器也不是免費的,它會帶來一些運維體系的變化。就是每次用一個新技術碰到一個問題,原來我有一個團隊可能非常熟悉虛機或物理機的運維,但放到容器之後帶來的一些新的技術、運維的方式會讓整個團隊的適應週期比較長,代價也較大。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生技術之Serverless

另一個雲原生技術就是Serverless。Serverless這個概念目前是很火很好的,未來十年也很看好Serverless。到底這個無伺服器Serverless是什麼,個人觀念它

是一個基礎設施下沉,開發和運維的關注點分離的一個方向。

Serverless這個概念是在2010年左右的時候提出的。最有名的產品實現是AWS的Lambda,它把Serverless理念變成了一個產品。但隨著技術的演進,Serverless不僅僅是函式計算,它已經涵蓋到了各個層面的東西,其中最大的價值就是讓我們的開發和運維完全進行分離,讓開發人員更專注開發,所有基礎設施相關的事情都交給雲廠商或者運維團隊來完成。從這個層面來說可能是面向函式的Serverless,可以寫一段程式碼然後直接執行;也可能是面向應用的偏傳統的Serverless,我有一個業務,我不想把它變成函式,我還是喜歡用原來的方式去執行,包括現在面向應用的Serverless應用引擎,面向容器編排的Serverless Kubernetes,面向容器的ECI,這一系列在Serverless這個概念下都是Serverless體系的一部分。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生開源技術

除了前面提到的像容器、微服務、Serverless技術之外,實際上雲原生這塊技術是非常廣泛的。阿里雲除了提供雲計算之外,在開源的技術領域也有非常多的貢獻。這裡面列出了很多阿里雲貢獻或參與雲原生方面的開源技術,既包括我們比較熟悉的微服務像Dubbo、Spring Cloud Alibaba等是阿里雲貢獻的,也有像容器的邊緣計算等各種各樣的開源技術。

阿里雲原生資深專家李國強:雲原生上雲概述

雲原生產品家族

相應地,在雲計算這個市場裡面,阿里雲在雲原生方面有最全的產品家族,既包括前面講到的容器等,也包括了像雲原生的資料庫、雲原生的大資料、雲原生的安全這個一系列的產品,因為只有整個體系進行雲原生化,才能幫助使用者用雲原生的方式更好地上到雲端。各個行業現在都在用雲原生的方式上雲。過去幾年裡用雲原生上雲的第一批使用者大概是在2017-2018年,網際網路行業是最快使用雲原生技術上雲的。網際網路業務大多都是一些新的業務,而且往往會有高速地迭代,包括像大流量的衝擊,所以它是第一波選擇用雲原生技術上雲的,比如頭條、抖音、快手等。近兩年偏傳統行業的企業也開始用雲原生技術上雲,包括政府、金融、製造、物流等都開始用雲原生技術上雲。所以在圖上既可以看到有比較前沿的網際網路行業,也有一些傳統的行業。

阿里雲原生資深專家李國強:雲原生上雲概述

今天的內容希望能幫助大家去做一個思考,能夠讓大家去想想自己所在的這個企業或者行業是不是到了雲原生上雲的階段,包括用哪種雲原生上雲的方式適合大家。謝謝!(完)

阿里雲原生資深專家李國強:雲原生上雲概述