<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【推薦】FaaS 給前端帶來了什么?

          共 3931字,需瀏覽 8分鐘

           ·

          2020-07-20 10:12

          76da852075fb875bcd67467f0b17c8dc.webp


          關(guān)注「前端向后」微信公眾號,你將收獲一系列「用原創(chuàng)」的高質(zhì)量技術(shù)文章,主題包括但不限于前端、Node.js以及服務(wù)端技術(shù)


          一.Serverless 與 FaaS

          Serverless 是一種云計算理念,即無服務(wù)器計算(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.

          將服務(wù)器相關(guān)的配置管理工作統(tǒng)統(tǒng)交給云供應(yīng)商去做,用戶不必花很大精力去管理 Server(或云資源),所以稱之為 Serverless

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

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

          Serverless computing = FaaS + BaaS

          f7abccc43e7712c0d275db258f1c4d34.webp

          由云函數(shù)(Cloud functions)提供常規(guī)計算,輔以特定的 BaaS 產(chǎn)品生態(tài)(比如對象存儲、數(shù)據(jù)庫、消息機制等),用戶專注實現(xiàn)其函數(shù)邏輯,極大地簡化了云編程

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

          二.已經(jīng)面市的 FaaS 產(chǎn)品

          AWS Lambda

          Amazon 早在 2015 年就推出了 AWS Lambda 服務(wù):

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

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

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

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

          主要應(yīng)用場景包括:

          • 數(shù)據(jù)處理

          • 實時文件處理:例如創(chuàng)建縮略圖、轉(zhuǎn)換視頻代碼、處理日志等

          • 實時數(shù)據(jù)流處理:比如跟蹤用戶訪問指標(biāo)

          • 機器學(xué)習(xí):在將數(shù)據(jù)輸入到機器學(xué)習(xí)模型之前對其進(jìn)行預(yù)處理

          • 后端:處理 Web、移動、物聯(lián)網(wǎng) (IoT) 和第 3 方 API 請求

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

          • AWS 中國(寧夏)區(qū)域免費套餐:25GB 的 NoSQL 數(shù)據(jù)庫 + 每月 100 萬請求量的云函數(shù) 永久免費

          • AWS 海外區(qū)域賬戶免費套餐:相同配置,永久免費

          阿里云 FC

          阿里云也提供了 FaaS 方案,叫做函數(shù)計算:

          函數(shù)計算 – 阿里云函數(shù)計算是事件驅(qū)動的全托管計算服務(wù)。通過函數(shù)計算,您無需管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫代碼并上傳。函數(shù)計算會為您準(zhǔn)備好計算資源,以彈性、可靠的方式運行您的代碼,并提供日志查詢、性能監(jiān)控、報警等功能。借助于函數(shù)計算,您可以快速構(gòu)建任何類型的應(yīng)用和服務(wù),無需管理和運維。而且,您只需要為代碼實際運行所消耗的資源付費,代碼未運行則不產(chǎn)生費用。

          應(yīng)用場景如下:

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

          • 文件處理:例如對上傳至 OSS 的文件進(jìn)行壓縮/解壓、轉(zhuǎn)碼、加水印等

          • 前端 CI/CD 系統(tǒng):Webhook 通知觸發(fā)云函數(shù),將前端代碼庫上傳至 OSS,走 CDN 部署

          • 日志 ETL 處理:加工、投遞數(shù)據(jù)

          • 智能家電:智能家居、App 獲取天氣、環(huán)境指數(shù)

          • 中小網(wǎng)站:例如基于函數(shù)計算 + wordpress 構(gòu)建 serverless 網(wǎng)站

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

          • 免費云開發(fā)


          免費額度不太透明,并且不排除日后收取費用的可能

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

          騰訊云 SCF

          騰訊云提供的 FaaS 產(chǎn)品是SCF(Serverless Cloud Function):

          云函數(shù) SCF – 云函數(shù)(Serverless Cloud Function,SCF)是騰訊云為企業(yè)和開發(fā)者們提供的無服務(wù)器執(zhí)行環(huán)境,幫助您在無需購買和管理服務(wù)器的情況下運行代碼。您只需使用平臺支持的語言編寫核心代碼并設(shè)置代碼運行的條件,即可在騰訊云基礎(chǔ)設(shè)施上彈性、安全地運行代碼。SCF 是實時文件處理和數(shù)據(jù)處理等場景下理想的計算平臺。

          主推的 4 大應(yīng)用場景:

          • 實時文件處理:例如音頻/視頻轉(zhuǎn)碼

          • 數(shù)據(jù) ETL 處理:針對大數(shù)據(jù)集的并發(fā)分析處理(ETL 即典型的 Extract-Transform-Load 數(shù)據(jù)處理過程)

          • 移動及 Web 應(yīng)用后端:以云函數(shù)的形式實現(xiàn)后端服務(wù)

          • AI 推理預(yù)測:AI 模型完成訓(xùn)練后,對外提供推理服務(wù)

          說是每月有一定的免費額度,但外網(wǎng)出流量不免費,試玩需謹(jǐn)慎

          三.FaaS 給前端帶來了什么?

          有了 FaaS,意味著能夠:

          直接運行后端代碼,而無需考慮服務(wù)器等計算資源以及服務(wù)的擴展性、穩(wěn)定性等問題,甚至連日志、監(jiān)控、報警等配套設(shè)施也都開箱即用

          也就是說,上線一個簡單的后端服務(wù)(比如接口聚合、數(shù)據(jù)編排),不再需要經(jīng)驗豐富的專業(yè)后端工程師幫忙

          • 選擇技術(shù)棧

          • 考慮高并發(fā)下的擴展機制

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

          • 走 CI/CD 流程

          • 接入監(jiān)控、運維體系

          我們只需要提供一段代碼,由云供應(yīng)商精心研制的 FaaS 方案幫我們選擇該編程語言對應(yīng)的技術(shù)棧最佳實踐,基于內(nèi)置的擴展機制按實際需要動態(tài)擴展計算資源,輕松部署服務(wù)到公網(wǎng),并提供可靠的監(jiān)控、報警保障

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

          • BFF(Backend For Frontend)

          • SSR(Server-Side Rendering)

          • 端云一體化開發(fā)

          BFF

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

          給每種用戶體驗對應(yīng)一個后端(one backend per user experience)

          也就是說:

          BFF 是面向特定用戶體驗的,由實現(xiàn)這部分 UI 的前端團隊負(fù)責(zé)實現(xiàn)及維護(即 UI 與對應(yīng)的 BFF 由同一個團隊負(fù)責(zé))

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

          有了 BFF 層,后端工程師能夠?qū)W⒂跇I(yè)務(wù)領(lǐng)域,但對前端工程師提出了更高的要求:需要前端型全棧工程師,并且隨著 BFF 層的發(fā)展,要求越來越高(擴展性、穩(wěn)定性等)

          FaaS 的出現(xiàn)很好地解決了這個問題,BFF 概念升級為 SFF(Serverless For Frontend),將專業(yè)性要求較高的后端服務(wù)框架部分封裝到了 FaaS 解決方案中,將 BFF 中業(yè)務(wù)邏輯之外的可用性保障工作從前端工程師轉(zhuǎn)交給了云供應(yīng)商的后端領(lǐng)域?qū)<遥舜烁訉I(yè)高效

          SSR

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

          在服務(wù)端生成完整的 HTML 頁面

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

          FaaS 讓服務(wù)的高可用要求變得觸手可及,無狀態(tài)的模板渲染工作尤其適合用云函數(shù)來完成

          P.S.社區(qū)已經(jīng)出現(xiàn)了一些 Serverless Side Rendering 方案,如ykfe/ssr

          端云一體化開發(fā)

          即前后端一體化開發(fā),在單一項目中,既能完成前端展現(xiàn)需求,也能搞定數(shù)據(jù)服務(wù)

          與之前 PHP、Java Web 整站開發(fā)有什么區(qū)別?兜兜轉(zhuǎn)轉(zhuǎn)又回到了起點么?

          顯然不是,主要區(qū)別在于:

          • 前后端分層解耦:前后端一體,但并不過分耦合

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

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

          一體化體現(xiàn)在:

          • 一套基于云 IDE 的開發(fā)/調(diào)試環(huán)境,無縫的開發(fā)體驗

          • 專注前端部分,(幾乎)不用關(guān)心后端服務(wù)的部署、運維

          P.S.目前也出現(xiàn)了 FaaS+React/Vue 的一體化開發(fā)框架,如midwayjs/midway

          四.未來的可能性

          面向未來,F(xiàn)aaS 還可能會帶來這些變化:

          • 面向小客戶的免費/廉價方案越來越多:例如小程序云、IoT 開發(fā)套餐等

          • 基于 FaaS 的 Web 服務(wù)框架與傳統(tǒng) Web 服務(wù)框架趨于統(tǒng)一:基于傳統(tǒng) Web 服務(wù)框架的應(yīng)用能夠低成本遷移過來

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

          • 前端進(jìn)入全云研發(fā)模式:FaaS 的普及和 BaaS 生態(tài)的成熟,加速 SSR、BFF 的流行,將前端開發(fā)從本地環(huán)境拉上云端

          你,準(zhǔn)備好了嗎?




          推薦閱讀




          我的公眾號能帶來什么價值?(文末有送書規(guī)則,一定要看)

          每個前端工程師都應(yīng)該了解的圖片知識(長文建議收藏)

          為什么現(xiàn)在面試總是面試造火箭?


          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美女操逼AV| 北条麻纪一区二区三区在线观看视频 | 乱熟女高潮一区二区在线观看 | 国产伦精品一区二区三区视频痴汉 | 91干在线视频 |