Categories
程式開發

Serverless風起雲湧:表面上是技術升級,背後其實是錢的事情


回看大前端領域的2019年,Serverless是其中不可忽視的一股技術浪潮。相比後端工程師,前端工程師對Serverless的態度要積極得多,是因為Serverless天生對前端開發更友好嗎?從前端和雲廠商的視角來看,Serverless最大的價值在哪裡?當前Serverless是不是概念吹得更多、實踐卻落不了地?為了搞清楚這些問題,InfoQ記者在 GMTC 全球大前端技術大會(深圳站)2019 期間跟阿里巴巴前端四大技術方向之一Serverless的負責人杜歡聊了聊,結合阿里巴巴的思考探討Serverless的價值、局限和未來發展趨勢。

杜歡(風馳),高級前端技術專家,曾就職於雅虎、思科等公司。目前在阿里雲“戰略&合作部”負責阿里雲開發者業務,是阿里巴巴經濟體前端技術委員會委員,並負責阿里巴巴經濟體前端 Serverless 研發升級項目

舉阿里集團之力趟坑Serverless

作為阿里巴巴經濟體前端Serverless研發升級項目的負責人,杜歡過去兩年花了大量時間推進集團內部的Serverless研發模式升級工作。這是一項牽涉整個阿里集團層面的技術升級工作。阿里2018年正式啟動內部Serverless資源底座的準備工作,2019年基於搭建好的底座建設上層前端框架,到2019年雙十一,阿里已經在部分電商導購業務上開始實踐這套新的研發模式。

Serverless興起於2017年,在最近兩年伴隨著雲原生概念的推廣愈發火爆。在這波Serverless浪潮裡,阿里是國內走得最前面、說得也最多的一個。但為什麼阿里會上升到整個集團的高度來推進Serverless研發模式升級,我們仍然感到好奇。對此,杜歡表示:“這件事本身好像是一件技術的事情,但其實它背後就是錢的事情,都是跟錢相關的。

杜歡告訴InfoQ記者,為了保障業務的穩定性和可用性,阿里對每一個應用上線都有相應的規範和規則。哪怕是一個很小的內部應用,一天可能只有一兩個訪問量,上線也需要遵守既有的規範,這勢必會消耗一些固定資源。單個應用消耗的資源可能很有限,但所有應用消耗的資源累積起來也是一個不小的數字。阿里內部自己做了分析發現,除了主要的核心應用之外,已經上線的應用中超過80%都是非核心的中長尾應用。目前阿里經濟體的體量和業務量已經達到非常大的量級,在現有的研發模式下,這些中長尾應用會帶來比較大的資源浪費。

其次,現有的研發形態並不能最大化地發揮部分工作崗位的價值,這同樣是一種浪費。以導購類型的業務為例,開發這樣一個業務通常需要前端開發工程師和後端開發工程師一起配合,但這兩個開發崗位在該業務形態下並不能很好地發揮自己的全部價值。對於後端工程師來說,他在這個業務裡要做的事情更多只是把現有的一些服務能力、數據組合在一起,變成一個新的數據提供給前端;而前端開發工程師負責把這個數據在頁面上展示出來。這樣的工作比較機械化,也沒有太大的挑戰,並不利於後端工程師的個人成長和崗位價值發揮;但在現有的研發模式下,由於缺乏前後端的連接點,前端工程師又不能去做這些比較簡單的後端工作,業務上線也不可能給到前端工程師時間和機會去學習再實踐。

而Serverless既可以滿足資源最大化利用的需求,也能夠調優行業內的開發崗位分層結構,讓每個開發崗位都能夠在最適合自己的地方發揮最大的價值。杜歡表示,阿里正是因為看到了經濟體內存在的上述問題,在嘗試尋找相應解決方案的過程中發現Serverless可能是一個好的解決方案,才開始研究Serverless,研究後認為確實可行,才啟動了“阿里巴巴經濟體前端Serverless 研發升級項目”這樣一個項目,拉上大家一起來共建。

那麼Serverless是只對阿里這樣的公司才適用嗎?什麼樣的公司、應用或場景應該選用Serverless的架構模式?

在杜歡看來,這是一個“偽問題”。他直言,並不存在什麼樣的場景和模式適合Serverless,Serverless應該被廣泛地運用在不同的場景和實際開發需求中。從雲廠商的角度來看,雲計算未來一定會成為整個社會和商業的基礎設施,屆時使用雲計算就應該像現在我們使用水電煤一樣簡單,不需要了解水從哪裡來、怎麼過濾、怎麼鋪設管道等一系列問題,只需要打開水龍頭接一杯水而已。而Serverless的概念正好可以幫助雲計算朝這個方嚮往前走一步,它提倡的是人們不需要關心應用邏輯以外的服務相關的事情,包括管理、配置、運維等,用多少就付多少。從這個角度來看,Serverless是真正讓雲計算變成社會商業基礎設施的一個實現路徑,也更接近現在業內提倡的雲原生的方式,因此人們在使用雲計算的過程中自然就應該按照Serverless的方式來使用。

杜歡認為,大家今天對是不是該用Serverless還有疑問,主要是因為還沒有看到足夠多Serverless成功應用的案例。這也是阿里巴巴先從自己內部實踐Serverless研發模式升級的另外一個原因,希望通過這件事達成兩個目的,一是向大家普及Serverless的概念,二是從自己的實踐過程中總結出一套好的實踐方式並共享出來,幫助大家更好地了解應該怎麼落地Serverless。

前端開發者看好、後端開發者觀望,Serverless為何如此?

過去這一年Serverless在前端領域被頻繁提及,很多開發者非常看好,並認為它一定是未來前端大趨勢之一,相比之下非前端領域還是觀望態度居多。杜歡告訴記者,之所以會出現熱度差,是因為Serverless的概念天然彌補了前端開發工程師的不足,但卻跟現在很多後端開發工程師的能力有一定程度的重疊。

在杜歡看來,絕大多數後端開發工程師的成長路徑是先做後端業務邏輯,慢慢了解應用的每個環節,再逐步成長為後端架構師,能Hold住整個應用架構。但云原生Serverless的出現,一定程度上會使這種後端架構能力變得普及,並且是以平台或服務的方式,而不是以人的方式。這乍看起來對於整個後端崗位可能是一種衝擊,但杜歡認為Serverless並不會完全取代後端。當前整個開發生態依然缺少優秀的架構服務,尤其是低成本、可持續發展、針對特定行業優化的架構服務。未來後端工程師還是會成長為架構師,但是可能不是通用架構師,而是偏業務解決方案的行業架構師。此外,雲廠商也需要專門構建Serverless方案的架構師,這是後端工程師的另一個新機會。

杜歡告訴InfoQ記者,Serverless對前端和後端帶來的影響總體都是正向的。對於前端來說,Serverless不僅補足了前端工程師現有的能力,還可能使整個前端行業的定位發生變化。原來經常有人會認為前端的工作很簡單,面向UI做好開發就行,剩下的工作可以交給後端。但是雲端的應用開發模型出來之後,也就是前端和Serverless結合之後,大家對前端的訴求就不僅僅是開發一個頁面了,而是要能交付整個應用的開發。前端工程師除了要保持在UI、交互邏輯方面的優勢,還要理解整個業務和業務背後的意圖,這意味著未來前端行業的思考模式會變成面向業務的思考模式。與此同時,前端的協同和開發模式、上下游流程也會發生變化,原來前端可能很少跟產品經理、設計打交道,未來前端要對整個應用負責,就需要天天跟產品經理、設計打交道。後端則要在最底層提供更深的能力付出,比如如何按照一億流量的支出支撐十億流量,這是更大的挑戰。

目前Serverles最佳實踐模式尚未出現

當前談Serverless,很多人會提函數計算、FaaS,但杜歡認為當前Serverless尚未出現一個最佳實踐模式。在他看來,現在已經有一些Serverless的框架開始湧現,雲廠商對Serverless的支持也越來越完善,確實是時候去嘗試實踐Serverless了。但要說最佳實踐,就必須有足夠多的人去實踐過並表示認同,而現在實踐Serverless的人本來就很少、實現的業務也很少,因此還沒有哪一種方式談的上是最佳實踐。不過杜歡提到Serverless實踐過程中有一點需要重點關注——學習曲線是否足夠平緩。要成為最佳實踐模式,至少要做到能讓開發者以一種方式專注於業務代碼的開發,無需關注運行平台的差異性,一處編寫可以處處運行,開發者只要掌握一種方式就可以在不同業務之間沒有學習成本地切換。阿里巴巴近期開源的函數運行時框架Midway FaaS Run Time就是朝著這樣的目標設計出來的,但還需要更多人嘗試並認可,才有可能在未來變成最佳實踐。

杜歡表示,目前Serverless在國內的發展和採用依然處於初期階段,經過這兩年的概念普及,大部分人都已經註意到並接受了Serverless,但業務實踐偏少,仍在不斷探索之中。相比之下,國外整體要領先1-2年,國外幾個大的雲廠商前期對整個研發生態的教育和佈道做的比較多,應用也比較早。現在國外已經出現不少Serverless框架,比較知名包括Serverless.com和Zeit.com。

但對於Serverless未來的發展,杜歡信心十足。在他看來,未來雲計算的普惠,一定是通過Serverless的方式去放大和落地實現的,而基於雲端的應用模式也一定會是未來創新創業的選擇。問題在於如何做好從傳統開發模式到雲開發模式的遷移。其中非技術層面的挑戰主要來自於開發者,前後端工程師對Serverless的態度可能不一致,有的後端工程師會覺得Serverless搶了自己的工作很難接受,他沒有看到更深層次對自己有收益的地方;有的前端工程師認為Serverless只是增加了自己要做的事情,而不能看到這個東西對自己提出了更高的要求,那他未來也未必能夠勝任這項工作。

而技術層面的挑戰主要包括兩塊:首先,雲廠商自身要提供更多的Serverless能力,或者說現有云計算的能力要有更多被轉換成能以Serverless的方式提供服務,未來雲廠商要越來越多地提供這方面的支持;其次是研發模式,未來對於雲時代的原住民來說,所有東西都在雲上,開發方式必然會發生變化,如何去解決這些問題,讓一個新人加入一項新業務之後可以更快地寫下第一行代碼,這是另一項挑戰。

展望2020年Serverless的發展趨勢,杜歡說道:“2020年Serverless會進入初步實踐階段,還不能稱之為大規模實踐,可能到2021年才會進入大規模實踐階段。在這個過程當中,雲廠商會進一步補充更多的Serverless服務,包括一些後端的BaaS服務,把基礎打得更牢一點。”