01.20 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 服務,把基礎打得更牢一點。”


分享到:


相關文章: