FaaS 給前端帶來了什麼?

一.Serverless 與 FaaS

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

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 的關鍵:git

Serverless 的核心是 FaaS(Function as a Service),但云平臺一般還提供 Serverless 框架來知足 BaaS (Backend as a Service)等特定應用程序要求。所以,能夠簡單理解爲:

Serverless computing = FaaS + BaaSgithub

由雲函數(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 的流行,將前端開發從本地環境拉上雲端

你,準備好了嗎?

有所得、有所惑,真好

關注「前端向後」微信公衆號,你將收穫一系列「用原創」的高質量技術文章,主題包括但不限於前端、Node.js以及服務端技術

本文首發於 ayqy.net ,原文連接:http://www.ayqy.net/blog/faas...

相關文章
相關標籤/搜索