做爲一個前端,你可能一直在迷茫,Node.js 的定位是什麼?爲何咱們須要它?前端
尤爲是到了 2019 這個時間點,將來一段時間內,有一個詞 -- Serverless 你會聽到想吐。數據庫
全部人都在說 Serverless 幾乎沒有人知道如何落地 Serverless 但你們都以爲其餘人在大力作 Serverless 因此你們都在宣傳本身在作 Serverless
阿里做爲 Node.js 國內的引航者,在該領域深度實踐多年。後端
在國內第一個引入 BFF 的概念,如今也是第一個提出 SFF(Serverless For Frontend)。前端工程化
筆者過去幾年有幸參與到該演化進程中,在此分享給你們一些心得,拋磚引玉。瀏覽器
鑑古知今,以史明鑑。咱們從哪裏來,通過哪裏,要去到哪裏。安全
1.遠古時代前端框架
天地初開,尚未出現先後端之分,僅有 設計 和 研發 兩種角色:服務器
在 Web 1.0 的時代,大部分的 B/S 系統都採用的是 集中式架構,分爲標準的三層(MVC):架構
比較流行的是 Struts + Spring + Hibernate 框架,還有 Dreamweaver 等前端三劍客。框架
此時的業務開發的套路,基本上是:
此時的主要矛盾在於:如何把那些有像素眼的 『美工』的天馬行空的點子,高還原度的實現出來。
2.石器時代
然而藝術和代碼之間的 Gap,對於不少缺少藝術細胞的直男程序猿來講,是一件很是頭疼的事。如何更好的提高用戶交互體驗,如何像素級的還原設計稿,都須要更高專業度的投入。
同時,因爲互聯網的迅猛增加,集中式架構已經逐漸沒法知足海量的訪問,從而演進出 分佈式架構 ,對研發的能力要求也進一步提高。
所以基於專業度的訴求,逐漸分化出 前端研發 和 後端研發 的角色:
此時的業務開發的套路,變爲:
此時的主要矛盾在於先後端耦合 :
3.青銅器時代
隨着 Web 2.0 的到來,以 Google 推出的 Gmail 爲號角,前端進入富應用時代,各類框架層出不窮,從 AJAX + jQuery,到逐漸造成 Angular、React、Vue 三國鼎立。
此時的業務開發的套路,變爲 先後端分離:
先後端分離 必定程度上解決先後端的耦合問題,約定好接口後,前端能夠直接 Mock 而後進行開發。
前端第一次翻身,如火如荼的投入到 前端框架 和 前端工程化 的建設中,矛盾在必定程度上弱化了。
4.蒸汽時代
隨着後端 微服務化 的演進,開始走向深水區,服務下沉,趨向穩定,業務被劃分爲不少獨立的微服務。
前端框架 和 前端工程化 趨向穩定,同時前端也進入了移動時代,出現了跨平臺、跨終端適配的場景,對用戶體驗提出的更高的要求,對首屏時間等性能指標愈來愈重視,且發佈頻度愈來愈快。
此時的架構演化爲:
隨之而來的新的矛盾:服務下沉與用戶體驗靈活性的矛盾。
此時 Sam Newman 提出了 Backends For Frontends :
此時,研發角色又轉變爲:
其中全棧研發又有兩種來源:
5.電氣時代
BFF 的實踐,在社區的分化嚴重,在大公司和創業公司比較受歡迎,但在話語權不強的中型公司,則舉步維艱。
做爲國內前端的引航者,過去幾年,咱們螞蟻體驗技術部工程產品的同窗,產出了不少效能產品,包括:
但這些大部分還侷限在 Pro Code 領域,離咱們願景中的終局還有很長的路要走。
此時的主要矛盾在於:
幸而阿里開始吹響了 雲通將來 的號角,各集團軍協同做戰,讓咱們能借助兄弟團隊的協做,向將來邁進一大步,參與到『雲通將來』的子戰場。。
就如前言提到的,每一個人對 Serverless 的定義和落地的理解都不同。
咱們依舊聚焦於一直以來的目標 — 提高前端的研發效能,以一當百。
其中 BFF 這個細分領域,咱們將依託 Serverless 繼續探索,簡稱爲 SFF。
咱們的思路以下:專業的人作專業的事,讓業務開發者專一於業務自己的研發。
一句話闡述:讓純前端開發者,只需寫幾個 Function 便可使用到後端相關的能力。
此時的研發角色劃分,彷佛又兜兜轉轉回到最初,但其實歷史是螺旋上升的,表象同樣,內在已然不一樣。
目前該演進正在進行中,更多分享敬請期待。
鑑古知今,咱們一直在前行,與君共勉。
將來已來,與其耳聽八方,不如眼見爲實,一塊兒參與進來把生米煮成熟飯。
螞蟻金服 Serverless 應用服務(https://tech.antfin.com/products/SAS)於近期開始正式內測,進入產品主頁,及時瞭解最新動態。