講師 | 洛浩(阿里云云原生高階架構師)
Serverless 的發展軌跡
**2012 年,Serverless 這個單詞第一次出現,由 Iron 公司提出,字面意思就是不需要伺服器。但是真正被大家所熟知,是在 2014 年 AWS 推出 Lambda 的時候。Lambda 產品的推出開啟了雲端計算的新時代,之後所有的大廠都在跟進,比如微軟、谷歌、IBM 都先後推出自己的 Serverless 產品。
國內是在 2017 年的時候,阿里雲和騰訊雲先後推出了自己的 Serverless 平臺。但這個時候,都是指 FaaS(Function as a Service)。接著到 2018 年,大家開始漸漸接觸到 Serverless,更多還是支付寶小程式和微信小程式的雲開發平臺。隨後到 2019 年,國內其他廠商如百度、華為、位元組也都開始做 Serverless,現在 Serverless 已經成了各大雲廠商的標配。
Serverless 是雲端計算的 2.0
為什麼大家都要做 Serverless 呢?因為大家都認為 Serverless 是雲端計算 2.0。隨著雲端計算的發展,Serverless 已經成為一個技術趨勢、一個理念、一個雲的發展方向。
雲端計算領域有兩篇非常著名的論文,是伯克利大學分別在 2009 年和 2019 年發表的。伯克利大學在 2009 年發表的一篇關於雲端計算的論文,預測了雲端計算的發展,比如計算資源可以按需索取、支援彈性、簡化運維等,這些預測目前都已經實現。
而伯克利在 2019 年 2 月發表的第二篇論文中,預測 Serverless 是雲端計算下一個十年的發展方向。論文裡也給出了關於 Serverless 的定義,簡單講就是Serverless Computing,由 FaaS + BaaS(Backend as a Service)構成一個 Serverless 軟體架構。特點就是能夠按需彈性、按需付費,這與 CNCF 的定義是相似的,應用以微服務或者函式的形式,拆解並部署到雲上,能夠按需去做彈性伸縮,按需付費,不用關心底層資源。
Serverless 是雲原生髮展的高階階段
Serverless 跟雲原生有什麼關係呢?Serverless 的出現,就像人類的演進過程,代表著生產力的解放,極大提升了客戶用雲的效率。Serverless 在其之上封裝了容器技術,是雲原生的高階階段。
Serverless 是對使用者強調 No Server,本質並不是不需要伺服器,而是將伺服器全權託管給了雲廠商,使用者不用去關心,不用去管理,只用把業務部署到平臺上來,只需聚焦業務邏輯程式碼,能夠根據實際請求進行彈性伸縮,不用再去關心資源夠不夠。
Serverless 的核心價值
從物理機到 Serverless,就像我們買車一樣,如果要買一輛私家車,這個車的車況保險全部要自己關心,然後你要自己開;到了虛擬機器之後,我們把業務 host 到雲上,就像汽車租賃;然後再到網約車,我不用買車,不用關心車況,我們要從 A 點到 B 點,只需要打個車,完全按需付費,按需彈性。
抽象出來其實就是有 3 個核心價值:
- 第一個是彈性伸縮,它比較省事。比如說我們剛才有電商場景,需要彈性、扛大流量,Serverless 能夠及時把資源彈出來。
- 第二個特點,按需付費,我們用多少資源就花多少錢,不用為閒置資源來買單。
- 第三個就是簡化運維,能夠幫使用者省去資源管理的煩惱。
我們可以更直觀來看 Serverless 的價值:首先最上層是業務邏輯,其次是對接的資料庫、儲存、微服務框架等,往下要建立監控系統、日誌系統,以及容災和高可用等,再到底層還要維護各種各樣的 IaaS 資源,如虛擬機器叢集。而 Serverless 幫使用者省掉的是資源層和可觀測層,平臺負責底層彈性資源,包括所有的日誌監控等,使用者就只需要關心業務邏輯。
Serverless 的軟體架構
作為開發者,我們可以直接把映象或者程式碼包部署到 Serverless 計算平臺上來,省去了整個資源的購買和環境部署這個過程。部署上來之後呢,後端可以跟儲存、資料庫進行互動,構成完整的 Serverless 架構。之後通過像 LB 或者 HTT 的方式,直接去訪問到業務程式碼,平臺會根據使用者的請求去做排程和彈性伸縮。Serverless 平臺支援負載均衡,應對各種突發流量,使用者不用去關心後臺資源。
元件架構有點複雜,本次不展開來講。對於開發者,需要關注的是綠色部分,即業務程式碼和服務框架等,以及用什麼樣的工具和後端 BaaS。Serverless 平臺會納管所有基礎設施,會做好訊息快取、流量排程、容災、高可用等。
另一個非常重要的元件架構是 Serverless 應用引擎,它的本質是把 K8S 做了封裝。如果企業有微服務業務,並且需要部署到 K8S 叢集,而維護挑戰比較大的話,就可以用這種形態。把開發好的微服務,或者單體應用直接託管到這個平臺上來,就能夠享受 Serverless 所帶來的彈性伸縮和按需付費的價值。
Serverless 的落地實踐
Serverless 已有多個落地場景,在各個行業,無論是後臺服務,還是 REST API 都可以部署到 Serverless 平臺上。尤其是 Serverless 音視訊處理、輕量 ETL(低門檻資料分析/處理)、事件驅動、任務跑批、應用託管、微服務容器化等場景。
在 Serverless 平臺上有非常多的應用 case,比如,如果想要做微服務或者容器化轉型,期望降低運維複雜度的同時,也能具備彈性伸縮、便捷釋出的能力,就可以直接把服務部署到 Serverless 應用引擎。
再分享一個案例,想必很多人都有看過歐洲盃,國內是愛奇藝體育在做這個賽事直播,其背後的業務就是部署在 Serverless 應用引擎平臺上。
對於愛奇藝體育團隊來講,最大的痛點之一是資源的彈性。因為體育賽事的直播流量有非常大的不確定性,面對流量激增,需要及時能夠對後臺服務進行擴容,如果按照峰值對資源進行保有,又會造成流量預估不準確的風險,以及一定程度上的資源浪費。
所以,Serverless 應用引擎非常好地匹配了客戶痛點問題,不僅解決了彈性擴縮的問題,也提升了資源利用率,同時配套的應用監控,也極大程度上提升了定位問題的效率。
推薦閱讀:愛奇藝體育:體驗 Serverless 極致擴縮容,資源利用率提升 40%
Serverless 的未來暢想
- 大面積取代 Serverful,變為預設的計算正規化:雖然 Serverful 不會完全消失,但隨著 Serverless 存在的不足被逐個攻克,Serverlsss 在雲端計算中所佔的比重將會逐漸提升,變成雲時代預設的計算正規化。
- 擁抱整個容器生態:未來,Serverless 會更多的去擁抱整個容器生態,當下容器是整個業界的一個主流的趨勢,Serverless 會和容器做更多的整合,比如映象部署、映象加速、以及整合 K8S 很多的能力。
- 加速運維關係的變化:Serverless 將會加速運維關係的轉變,運維同學會從資源運維,逐步走向業務運維。
- 複雜任務編排、工具鏈及可觀測等能力提升:Serverless 會加強複雜任務編排、工具鏈和可觀測等方面的能力。因為 Serverless 平臺對底層資源做了高度封裝,所以一定要把很多的監控指標去透露給使用者,通過這些指標來做業務級的管理和管控。
我們希望 Serverless 能夠真正給大家減負,讓業務開發和維護變的更加簡單,給業務帶來更大的價值。
更多內容關注 Serverless 微信公眾號(ID:serverlessdevs),彙集 Serverless 技術最全內容,定期舉辦 Serverless 活動、直播,使用者最佳實踐。