Serverless風暴來襲,前端工程師如何應對?Aceyclee2020-04-08 17:07:43

目前很多前端同學都在學習 Serverless,很多文章和教程對 Serverless 都有不同方式的解讀。

加州大學伯克利分校 2019 年 3 月份發表過一篇論文,名為《Cloud Programming Simplified: A Berkeley View on Serverless Computing》,文中對“Serverless 是什麼”進行了一些描述:

Put simply,serverless computing = FaaS + BaaS。

簡單來理解,Faas+BaaS 是 Serverless 的一種實現方式,這也是主流對 Serverless 的一種理解。那 Serverless 的真正概念是什麼呢?論文最核心的摘要部分,我們可以看到如下圖的一段話,它說出了 Serverless 真正內涵:

Serverless風暴來襲,前端工程師如何應對?

中文大意是:

「無伺服器雲計算(Serverless Computing)幾乎封裝了所有的底層資源管理和系統運維工作,使開發人員更容易使用雲基礎設施。它提供了一個方式,極大地簡化了基於雲服務的程式設計,猶如組合語言到高階程式語言般的轉換。」

這段話中舉了一個例子非常生動:

Assembly Language to high-level programming Languages。

「Serverless 給雲計算帶來的改變,就是相當於從組合語言到高階語言」。組合語言,計算機專業的學生都有了解過。寫彙編的話,首先需要了解 CPU 的結構,知道加法器、暫存器,需要自己管理記憶體、IO 裝置等一些底層資源。但開發者的目的並非如此,開發者應該是以業務為導向的。而高階語言提供了諸多能力和框架支援,可以令開發者專注於更快地完成業務上的事情,這才是高階語言所具備的優點,而不是讓開發者把精力浪費在底層資源管理。

由此可見,Serverless 的內涵就是對全部底層資源和運維工作的封裝,讓開發者專注於業務邏輯。

理解完 Serverless 的內涵,我們再來談一下 FaaS(Function as a Service)的本質。一句話而言,FaaS 就是至今為止最細粒度的算力分配方式,我們先理解下什麼叫算力分配方式。

當我們談論計算機應用科學的時候,共有三個維度:“算力、演算法、資料” 。在「算力」又有兩個方向:一是如何讓算力更強,讓 CPU 執行得更快;二是如何讓算力分配的更合理。傳統計算機,從單任務實時作業系統到多工分時作業系統,是解決算力的分配問題,雲計算誕生的初衷以及要解決問題,也是解決巨大算力資源的合理化分配。雲的算力分配方式主要是以什麼為粒度的呢?

答案是虛擬機器。

比機器再降維一點的分配粒度是什麼?

答案是容器。

那比容器再降一級的功能是什麼?

答案是函式。

最早期的算力分配是物理機為單元,後來是虛擬機器和容器。這個算力分配細化的過程,也基本是雲計算發展的過程。現在雲上可以函式作為一個計算單元,變成每一次業務執行分配一次資源,沒有業務就沒有資源分配。所以,FaaS 是一個以函式(業務)為粒度的算力分配方式。

當我們理解了 Serverless 和 FaaS 的內涵,我們在討論下這一切跟前端有什麼關係。

隨著 Node 的流行,前端工程師一直希望迴歸 Web 工程師的角色,全棧工程師的也在各種場合和文章被提到,最近幾年大前端組織架構也成為超火話題。

第一,從前端工程師自身視角來講,希望擴大自己的業務範圍,進而才能有職業發展,僅僅做前臺展現相關的東西,碰不到核心業務,價值得不到展現。

第二,如果從組織或是技術 leader 視角上來看問題的話,則會更關注技術對業務的貢獻,關注團隊的整體的執行效率、質量控制、角色合作這樣一些問題。大前端的開發模式,會提升業務的迭代效率。

前端和後端都使用 JavasScript,技術棧是統一的。從寫程式碼,到編譯、打包、腳手架、元件化、包管理,再到 CICD,採用同一套都不是問題。

Client Side JavaScript 和 Server Side JavaScript 本身就有很多可複用的程式碼,例如現在行業裡有很多同構程式碼的 CSR 和 SSR 解決方案。

最佳化研發組織結構。大前端的開發模式,讓介面定義、介面聯調、環境模擬等,原來需要兩種不同技術能力棧的工程師互相協作的模式,變為同一種技術技術能力棧的工程師獨立完成的模式,讓溝通和推動的成本降到最低。

因此在 Serverless 的賦能下,前端工程師依舊只需要關注核心的業務邏輯,而底層的技術架構、計算資源、穩定性、系統運維工作,則可以完全由 Serverless 進行支撐。即實現了從前端到真全棧的可能。

Serverless風暴來襲,前端工程師如何應對?碼農朱哲2019-03-17 21:42:44

首先搞清楚serverless,直接理解就是無伺服器,那麼現在serverless的代表就是Faas(Function as a service),即函式即服務。就前端而言呢,serverless影響不是很大,Faas一般都提供有不同語言的sdk呼叫,前端只要結合sdk做資料處理就可以了。但是,最近幾年前端一直在變化,前端工程化,SSR渲染等改變了前端工程師的關注領域,如果要長久的發展,前端工程師需要完善自己的開發套路,追上技術的進步。

Serverless風暴來襲,前端工程師如何應對?菠蘿蘿不憂2019-03-18 12:14:53

不是無服務,而是把基礎服務都託管到雲上,運營也有云端提供,所以後端的影響比較大,前端沒那麼大影響,後端出發,也比較不認可這種模式,因為後端才是最複雜容易出錯的地方,部署上線的簡化,其實複雜了後端的開發,需要對錯誤更要細分類,日誌也要搭建響應系統,而不是簡單從伺服器拉日誌分析即可,諸如此類,要求更深的開發能力