跳到主要內容
黯羽輕揚每天積累一點點

FaaS 給前端帶來了什麼?

免費2026-03-05#Front-End#Mind#FaaS#FaaS SSR#前端FaaS化#基于FaaS的SSR#端云一体化

一。Serverless 與 FaaS

Serverless 是一種雲計算理念,即無服務器計算(Serverless Computing):

Serverless suggests that the cloud user simply writes the code and leaves all the server provisioning and administration tasks to the cloud provider.

將服務器相關的配置管理工作統統交給雲供應商去做,用戶不必花很大精力去管理 Server(或雲資源),所以稱之為 Serverless

而 FaaS(Function as a Service)則是 Serverless 的關鍵:

Serverless 的核心是 FaaS(Function as a Service),但雲平台通常還提供 Serverless 框架來滿足 BaaS (Backend as a Service) 等特定應用程序要求。因此,可以簡單理解為:

Serverless computing = FaaS + BaaS

由雲函數(Cloud functions)提供常規計算,輔以特定的 BaaS 產品生態(比如對象存儲、數據庫、消息機制等),用戶專注實現其函數邏輯,極大地簡化了雲編程

聽起來似乎有些玄幻,不知哪年能夠成為現實,事實上,時至今日(2020/7/5)市面上已經有許多相對成熟的 FaaS 產品了

二。已經面市的 FaaS 產品

AWS Lambda

Amazon 早在 2015 年就推出了 AWS Lambda 服務:

AWS Lambda - Run code without thinking about servers. Pay only for the compute time you consume.

直接運行代碼,而無需考慮服務器(的管理和配置),按所使用的計算時間計費的雲計算服務產品

也就是說,開發者只需要上傳代碼,Lambda 能夠自動處理代碼運行以及高可用性擴展所需的一切工作:

Just upload your code and Lambda takes care of everything required to run and scale your code with high availability.

主要應用場景包括:

  • 數據處理

  • 實時文件處理:例如創建縮略圖、轉換視頻代碼、處理日誌等

  • 實時數據流處理:比如跟踪用戶訪問指標

  • 機器學習:在將數據輸入到機器學習模型之前對其進行預處理

  • 後端:處理 Web、移動、物聯網 (IoT) 和第 3 方 API 請求

還提供了小客戶免費試玩套餐:

阿里雲 FC

阿里雲也提供了 FaaS 方案,叫做 函數計算:

函數計算 - 阿里雲函數計算是事件驅動的全託管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼並上傳。函數計算會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,並提供日誌查���、性能監控、報警等功能。借助於函數計算,您可以快速構建任何類型的應用和服務,無需管理和運維。而且,您只需要為代碼實際運行所消耗的資源付費,代碼未運行則不產生費用。

應用場景如下:

  • 低成本跨境文件傳輸:大規模的文件同步

  • 文件處理:例如對上傳至 OSS 的文件進行壓縮/解壓、轉碼、加水印等

  • 前端 CI/CD 系統:Webhook 通知觸發雲函數,將前端代碼庫上傳至 OSS,走 CDN 部署

  • 日誌 ETL 處理:加工、投遞數據

  • 智能家電:智能家居、App 獲取天氣、環境指數

  • 中小網站:例如 基於函數計算 + wordpress 構建 serverless 網站

同樣提供了面向小客戶(1-10 人團隊)的免費套餐:

但免費額度不太透明,並且 不排除日後收取費用的可能

P.S. 另外,阿里雲提供的 OSS 似乎沒有免費額度,試玩需注意

騰訊雲 SCF

騰訊雲提供的 FaaS 產品是 SCF(Serverless Cloud Function):

雲函數 SCF - 雲函數(Serverless Cloud Function,SCF)是騰訊雲為企業和開發者們提供的無服務器執行環境,幫助您在無需購買和管理服務器的情況下運行代碼。您只需使用平台支持的語言編寫核心代碼並設置代碼運行的條件,即可在騰訊雲基礎設施上彈性、安全地運行代碼。SCF 是實時文件處理和數據處理等場景下理想的計算平台。

主推的 4 大應用場景:

  • 實時文件處理:例如音頻/視頻轉碼

  • 數據 ETL 處理:針對大數據集的並發分析處理(ETL 即典型的 Extract-Transform-Load 數據處理過程)

  • 移動及 Web 應用後端:以雲函數的形式實現後端服務

  • AI 推理預測:AI 模型完成訓練後,對外提供推理服務

說是每月有一定的 免費額度,但 外網出流量 不免費,試玩需謹慎

三。FaaS 給前端帶來了什麼?

有了 FaaS,意味着能夠:

直接運行後端代碼,而無需考慮服務器等計算資源以及服務的擴展性、穩定性等問題,甚至連日誌、監控、報警等配套設施也都開箱即用

也就是說,上線一個簡單的後端服務(比如接口聚合、數據編排),不再需要經驗豐富的專業後端工程師幫忙:

  • 選擇技術棧

  • 考慮高並發下的擴展機制

  • 估算峰值流量,預配資源(申請機器)

  • 走 CI/CD 流程

  • 接入監控、運維體系

我們只需要提供一段代碼,由雲供應商精心研製的 FaaS 方案幫我們選擇該編程語言對應的技術棧最佳實踐,基於內置的擴展機制按實際需要動態擴展計算資源,輕鬆部署服務到公網,並提供可靠的監控、報警保障

餵給 FaaS 一個函數,就能上線一個高可用的服務。(簡單)服務接口開發的專業性要求降低了,前端有了更大的發揮空間,包括但不限於:

  • BFF(Backend For Frontend)

  • SSR(Server-Side Rendering)

  • 端雲一體化開發

BFF

Backend For Frontend (BFF)(用戶體驗適配層)的理念已經不新鮮了:

給每種用戶體驗對應一個後端(one backend per user experience)

也就是說:

BFF 是面向特定用戶體驗的,由實現這部分 UI 的前端團隊負責實現及維護(即 UI 與對應的 BFF 由同一個團隊負責)

在 2018 年(甚至更早)就有一些團隊基於 Node.js 展開了 BFF 的探索和實踐,由前端模塊的開發者負責完成對應的 BFF 層上的一些接口開發工作

有了 BFF 層,後端工程師能夠專注於業務領域,但對前端工程師提出了更高的要求:需要前端型全棧工程師,並且隨著 BFF 層的發展,要求越來越高(擴展性、穩定性等)

FaaS 的出現很好地解決了這個問題,BFF 概念升級為 SFF(Serverless For Frontend),將專業性要求較高的後端服務框架部分封裝到了 FaaS 解決方案中,將 BFF 中業務邏輯之外的可用性保障工作從前端工程師轉交給了雲供應商的後端領域專家,彼此更加專業高效

SSR

SSR(Server-Side Rendering)(服務端渲染)同樣不是什麼新奇的概念:

在服務端生成完整的 HTML 頁面

省去了客戶端二次請求數據的網絡開銷,以及渲染視圖模板的性能負擔,有助於加速首屏加載。但 SSR 也面臨著與 BFF 類似的問題,起一個 Demo 級的 SSR 渲染服務不難,而要上線一個高可用的 SSR 渲染引擎絕非易事

FaaS 讓服務的高可用要求變得觸手可及,無狀態的模板渲染工作尤其適合用雲函數來完成

P.S. 社區已經出現了一些 Serverless Side Rendering 方案,如 ykfe/ssr

端雲一體化開發

即前後端一體化開發,在單一項目中,既能完成前端展現需求,也能搞定數據服務

與之前 PHP、Java Web 整站開發有什麼區別?兜兜轉轉又回到了起點麼?

顯然不是,主要區別在於:

  • 前後端分層解耦:前後端一體,但並不過分耦合

  • 以前端項目為主體:不像 PHP、Java Web 以後端部分為主體

  • 不僅限於 Web,在移動端同樣適用

一體化體現在:

  • 一套基於雲 IDE 的開發/調試環境,無縫的開發體驗

  • 專注前端部分,(幾乎)不用關心後端服務的部署、運維

P.S. 目前也出現了 FaaS+React/Vue 的一體化開發框架,如 midwayjs/midway

四。未來的可能性

面向未來,FaaS 還可能會帶來這些變化:

  • 面向小客戶的免費/廉价方案越來越多:例如小程序雲、IoT 開發套餐等

  • 基於 FaaS 的 Web 服務框架與傳統 Web 服務框架趨於統一:基於傳統 Web 服務框架的應用能夠低成本遷移過來

  • SSR、CSR/NSR 等不同的前端渲染方式 成為 Web 前端框架的配置選項:能夠在不同渲染模式之間靈活切換、甚至混用

  • 前端進入全雲研發模式:FaaS 的普及和 BaaS 生態的成熟,加速 SSR、BFF 的流行,將前端開發從本地環境拉上雲端

你,準備好了嗎?

評論

暫無評論,快來發表你的看法吧

提交評論