阿里自研開源框架 Midway Serverless ,如何讓前端提效 50%?
分類:互聯(lián)網(wǎng)熱點
編輯:小新
瀏覽量:7
2020-07-10 11:21:32
###Midway Serverless
Midway 之前是傳統(tǒng)的 Web ??蚣埽蜆I(yè)界現(xiàn)有的 EggJS,NestJS 等解決的是類似的問題,從中后臺到移動端應(yīng)用,前端都廣泛采用了這些框架來構(gòu)建自己的業(yè)務(wù)系統(tǒng)。阿里也不例外,Node.js 應(yīng)用非常多,但是這些系統(tǒng)有一個共性,大多數(shù)
服務(wù)器的 CPU 使用率非常低,這無疑是一種資源的巨大浪費。
這種資源浪費的常態(tài)以及應(yīng)用的規(guī)?;瘞缀伪稊?shù)的增產(chǎn),讓應(yīng)用治理的人員頭疼不已。于是,阿里把目光轉(zhuǎn)向 Serverless 架構(gòu),他們開始去思考,如何有效去減少研發(fā)人員使用基礎(chǔ)設(shè)施的效率和運維的成本。
###Serverless 和 FaaS
FaaS 是 Serverless 架構(gòu)的其中一種形態(tài),也是這次 Midway 希望解決的場景。在 Midway Serverless 1.0 之前,我們在 FaaS 上投入了許多,但是事實上,Serverless 架構(gòu)非常龐大,F(xiàn)aaS 只是其中的一小部分,基于事件驅(qū)動的模型,從微服務(wù)(MicroService)這種專注于單一職責與功能的小型功能塊演進而來。如今這種更加“代碼碎片化”的軟件架構(gòu)范式,相比微服務(wù)更加細小的程序單元,給業(yè)務(wù)代碼提供了無與倫比的靈活性。
按照《福布斯》雜志的統(tǒng)計,在商業(yè)和企業(yè)數(shù)據(jù)中心的典型服務(wù)器僅提供 5%~15% 的平均最大處理能力的輸出,這無疑是一種資源的巨大浪費。而隨著 Serverless 架構(gòu)的出現(xiàn),讓服務(wù)提供商提供我們的計算能力最大限度滿足實時需求,這將使我們能更有效地利用計算資源。
阿里目前使用了 FaaS 來作為業(yè)務(wù)的落地容器,希望能進一步減少容器的規(guī)格,降低成本。集團機器的成本當前是按 CPU Core 算的,以 4C8G(4 核 8G)的機器為例,一個中后臺應(yīng)用最少需要 2 臺機器,而上了 FaaS,能減少到 1C,乃至 0.5C,這個成本下降的非??捎^。
###落地前端
在阿里“大中臺小前臺”的趨勢下,前端是最接近用戶且活力迸發(fā)的團隊。前端一直希望能夠有機會擺脫“資源”的困境,對整體工種的職能、邊界有更廣泛而清晰的拓展需求,造就了如今前端的范圍不斷衍生,從端側(cè)到智能化,無一不是職能擴大的體現(xiàn)。
對前端開發(fā)者而言,Node.js 賦予了開疆拓土的能力,自前后端分離開始,從端到全棧,Node.js 已經(jīng)成為前端學習的標配,而 DevOPS 的提出,也讓前端逐步走向開發(fā)自治,運維自驅(qū)的路子。而阿里在實際實踐中發(fā)現(xiàn),大部分前端的確在朝著那個方向走,但是更多的是在業(yè)務(wù)和自治之間產(chǎn)生了一些迷惘,這兩者的關(guān)系其實很不容易平衡,時間一久也會對業(yè)務(wù)的規(guī)?;a(chǎn)生一些影響。
而 Serverless 的出現(xiàn),正好讓前端有機會減少整個 OPS 環(huán)節(jié),更加聚焦于業(yè)務(wù)本身;同時,由于整體的代碼量減少以及輕量化開發(fā)理念、部署平臺能力的增強,讓整個業(yè)務(wù)的規(guī)?;杀驹絹碓降?。
之前,有人把 Serverless 比作前端的 3.0,這不無道理。Node.js 的輕量、快速已經(jīng)得到了業(yè)界技術(shù)人員的廣泛認可,在 Serverless 時代,容器的快速調(diào)度、代碼的快速啟動,都是非常重要的指標,而 Node.js 在這方面的優(yōu)勢非常明顯。
###前端提效 50%
這個數(shù)值在我們看來,Serverless 帶來的效能變化的數(shù)值可能更大。其中分為規(guī)?;杀竞徒桓端俣葍蓚€方面。
###降低規(guī)?;杀?**首先是服務(wù)器成本。**
從容器本身的角度來看,上文已經(jīng)簡單演算過,從傳統(tǒng)容器到函數(shù),整個容器資源從固定規(guī)格到更加細粒度的規(guī)格去逐步演進,這將更加符合場景的訴求。經(jīng)過我們一年的跟蹤,中后臺應(yīng)用的機器成本能降低 70% 以上,而實際移動端業(yè)務(wù),也達到了 30% 左右。
**其次是治理成本。**
越是大的公司,歷史包袱越是嚴重,今年的阿里集團內(nèi)部,還存留著 Node.js V6 乃至 V4 的代碼。每年的 Node.js 版本升級、框架升級、庫升級都要至少長達幾個月,甚至幾年。
而如今,函數(shù)運行時(Runtime)是前端自己編寫的,我們可以將需要治理的 Node.js 版本、框架,乃至中間件都埋入其中,這就需要定制整個運行時及其通用化的能力。
阿里的內(nèi)的函數(shù)服務(wù)有多種,提供了不一樣的基建和網(wǎng)關(guān)服務(wù)。今天淘系前端能夠使用一套代碼部署在不同的平臺之上,就得益于 Midway Sererless 底層的多平臺適配能力。同時,這套代碼的防腐層能力也正好能抹平社區(qū)的平臺差異性。
針對每個平臺,Midway Serverless 提供了不同的運行時啟動器,用于抹平各個平臺的差異,并且通過這些啟動器,將各個平臺的出入?yún)?,以及各個 event 結(jié)構(gòu),網(wǎng)關(guān)的返回格式進行規(guī)則化,讓用戶盡可能不感知底層容器以及協(xié)議的差異。
阿里通過這套方案,將一套代碼部署在不同的函數(shù)服務(wù)之上,提供出不同協(xié)議的服務(wù)。所以到社區(qū),阿里開源的方案也同樣適用于多個平臺,比如
阿里云、騰訊云或者是未來的 AWS Lambda、Azure 等。
經(jīng)過這層防腐和定制,整個運行時的更新變的簡單,將傳統(tǒng)應(yīng)用需要半年起的版本推平工作,在短短一周內(nèi)就完成了。舉個例子,底層有個和平臺的連接協(xié)議庫有安全性漏洞,從接到安全報告開始,我們就需要做以下兩件事,一是從平臺數(shù)據(jù)拉取受影響的函數(shù)范圍,給所有業(yè)務(wù)方進行了安全性郵件推送,并告知在一定時間之內(nèi)不做主動申報的,將默認統(tǒng)一自動更新。二是在流量低谷期進行滾動更新,并以告知業(yè)務(wù)及時關(guān)注和測試。經(jīng)過這樣的流程,整個安全性更新在極短的時間內(nèi)就統(tǒng)一處理完畢,這在以往的應(yīng)用場景下,幾乎是不可能的。
最后是安全生產(chǎn)成本,這塊在阿里內(nèi)部的訴求較大,但是中小型公司應(yīng)該不多,這里就不再詳述了。
通過這三塊的管控和治理,使得在 Serverless 架構(gòu)下,集團業(yè)務(wù)規(guī)?;杀緲O速降低。
###交付速度
除了規(guī)模化成本外,另外一塊就是業(yè)務(wù)交付的情況。前端面向的移動端和中后臺兩大場景都需要快速的交付,以現(xiàn)在的情況來看,前端依舊是研發(fā)的瓶頸,在使用了 Serverless 之后,原有的復(fù)雜流程已經(jīng)無法滿足現(xiàn)有的訴求。
去年我們團隊在 GMTC 及 D2 分享中說過,前端自建了一套研發(fā)流程和平臺,用于滿足在新的場景的測試、灰度和回滾。整個研發(fā)流程,節(jié)點比以往更少,更容易聚焦。
**而另一邊,整個研發(fā)的效率,也有了不小的提升。**
前端開發(fā)的效率,得益于前后端的融合,一體化開發(fā)和交付的速度。傳統(tǒng)的前端研發(fā),需要在前端倉庫和 Node.js 端倉庫多處進行開發(fā),發(fā)布流程也是分離的。而在 Serverless 場景下,Midway Serverless 設(shè)計了一體化開發(fā)和發(fā)布的方案,這讓前端能將業(yè)務(wù)在同一個倉庫開發(fā),同一個流程發(fā)布。特別是那些維護多業(yè)務(wù)的同學,感觸會更深。
除了一體化的開發(fā)、調(diào)試,部署之外,從代碼角度看,原有的編碼習慣被保留,無需再度學習新的編程 API 也是一個方面。Midway Serverless 除了提供基于 TypeScript 和裝飾器的編碼風格之外,也提供了一些傳統(tǒng)應(yīng)用 Egg 應(yīng)用遷移的方案,在不同的 BU 中也進行了落地嘗試,效果非常不錯。
經(jīng)過一年我們在平臺測的統(tǒng)計和業(yè)務(wù)開發(fā)方的走訪,新的研發(fā)模式對業(yè)務(wù)整體的交付效率有一定的提升,這個提升是普適性的。
以前端完成需求為例,傳統(tǒng)完成業(yè)務(wù)需求需要后端的介入以及聯(lián)調(diào),而新的研發(fā)模式在代碼層面會開發(fā)更快,雖然單人來看工作量增加了,但是整體的交付時間,投入人員以及聯(lián)調(diào)成本都有明顯的降低。
除了業(yè)務(wù)感性的交付數(shù)據(jù)外,我們還統(tǒng)計了整體的研發(fā)代碼量,提交的代碼頻次以及需求的迭代周期和發(fā)布。經(jīng)過一年業(yè)務(wù)跟蹤和數(shù)據(jù)的測算,我們得出整體前端人效的提升約為 48%,整個核心的算法牽扯到很對內(nèi)部的數(shù)據(jù),抱歉無法提供,歡迎大家入職觀摩。
###Serverless 的弊端
任何事物都有兩面性。Serverless 優(yōu)勢固然的大,但是畢竟是新東西,特別是在企業(yè)中落地的時候,難免會遇到一些問題。
一是基建的缺失,傳統(tǒng)的各種客戶端、日系投遞、鏈路追蹤等能力都非常的完善,而函數(shù)這些新的事物還需要時間逐步沉淀,加上彈性容器的影響,整個鏈路都還是新生事物,需要時間去驗證穩(wěn)定性和可靠性。
二是業(yè)務(wù)同學的整體理念還是停留在傳統(tǒng)應(yīng)用的層面,對函數(shù)的運作機制,事件觸發(fā)的行為了解不深,加上框架做了很多屏蔽的工作,很容易出現(xiàn)某些代碼編寫錯誤或者前期需求評估不到位,能力無法實現(xiàn)的情況。這些都需要慢慢的打磨,相信在不斷的實踐下,整體都會越變越好。
###最后
我們可以看到,50% 的計算方式是一個相對感性的數(shù)字,但是 Serverless 在其中實實在在的體現(xiàn)出了它的魅力和價值。最后慶祝一下 Midway Serverless v1.0 發(fā)布。通過整個 Midway Serverless 新體系,我們將阿里的 Serverless 能力逐步開放,希望整個前端能有不同的思路去承擔更大的業(yè)務(wù)職能,進入一個嶄新的時代。
> 【云棲號在線課堂】每天都有產(chǎn)品技術(shù)專家分享!
> 課程地址:https://yqh.aliyun
.com/live
> 立即加入社群,與專家面對面,及時了解課程最新動態(tài)!
> 【云棲號在線課堂 社群】https://c.tb
.cn/F3.Z8gvnK
原文發(fā)布時間:2020-07-09
本文作者:陳仲寅
本文來自:“”,了解相關(guān)信息可以關(guān)注“”
聲明:免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)
送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時
需注明出處:新網(wǎng)idc知識百科