Serverless 時代前端避坑指南


本篇文章分享來自淘系Node架構團隊--張挺

每一個時代,歷來不缺機會。前端

雲原生的浪潮席捲而來,從 14 年到如今,上雲的聲音就沒有停歇過,而現在到了 2020,雲廠商都已經準備好了,而前端,是否也準備好踏入這紛爭的領域,去擁抱時代給予的蜜糖,亦或者是帶刺的玫瑰?git

你們都或多或少的在如今的雲戰場上接收到信息,也難免的去學習,對比各家雲平臺的功能,甚至還會實際調研,考慮用在本身的產品或者業務中,而阿里在內部通過一年的實踐和總結,將 Serverless 和現有框架有機的整合到了一塊兒,同時,但願能簡化現有社區的雲函數開發。github

本篇文章就是交給你們如何避(快)免(速)踩(上)坑(手)。後端

PS.文末福利大放送,7天玩轉雲端開發,免費開發還有多重好禮!瀏覽器

避坑第一招

而 Web 棧開發框架, 阿里的 Midway 體系也早早在去年就開始了新的嘗試。從傳統 Web 到 Serverless 體系的轉換,沒有那麼容易,看起來很乾淨整潔的代碼,在 Severless 體系中甚至變爲了枷鎖,步步桎梏。架構

俗話說,聚是一團火,散是滿天星,就拿簡單的 Web 請求來講,你們想的是,我一個接口變爲一個函數,很是簡單。我一個應用,根據路由,可能會分爲 1,2,3,4 ... 100 個接口吧。而事實是,一個 Web 請求,從接到數據的那一刻,坑就已經挖好了,等着跳呢。框架

第一個坑來了,我該選擇哪一個平臺呢?打開搜索引擎,各家雲平臺的廣告接踵而至,爲了不提早選擇平臺,midway faas 使用的是固定的模板代碼,要使用它,須要安裝咱們的 CLI 工具。less


midway faas 的 CLI "f" 也是 Node.js 寫的,大部分前端開發者第一次使用 Serverless 即將從它開始。同時還集成了阿里雲、騰訊雲等衆多雲廠商雲服務發佈,並支持的開發、調試、部署等能力。前後端分離

咱們能夠用 "f" 建立咱們的第一個函數示例。運維

它的 CLI 也是 Node.js 寫的,因此極可能大部分前端開發者第一次使用 Serverless 都從它開始。

midway faas 的代碼文件是以 class 的形式,這樣全部的方法均可以是一個可複用的函數,而且還能夠享受到傳統 OO 的能力。

避坑第二招

各個雲平臺以下的代碼宣傳深刻人心。

這些簡單的宣傳函數,類似又有着細微的不一樣(不建議你們去嘗試了), hello world 基本上是經過 callback 或者標準的格式來返回(還有 HTTP response)。

對於前端來講,先後端分離,到 DevOPS,到全棧開發的洗禮,已經相對比較熟悉相似 Koa/Egg 等這一套 Web 開發的套路,到了 Serverless 下,個人代碼怎麼辦呢?

別急,midway faas 已經作好了一切。

你們會發現,整個寫法和傳統的 koa 接口如出一轍,只要你會 koa,那麼,在瞬間便可上手。用上你熟悉的 API,快速的進入開發節奏。

除此以外,你能夠用上大部分 Midway Web 開發的裝飾器,甚至直接把業務代碼拷貝過來便可,整個 midway faas 框架會幫你完成整合和運行。

避坑第三招

這個時候,咱們的代碼寫完了,按照 Serverless 傳統的開發模式,要麼本地裝一個 Docker,按照平臺的方式去測試,要麼直接打包發佈到平臺去測試和調試。

在咱們的調研中,本地裝 Docker 對前端來講太不友好了,每當咱們提出要經過 Docker 作一點事情,試用方就會提出能不能輕量一些,開發 Web 能不能像以前的傳統開發同樣啓動服務,刷新瀏覽器。

爲此咱們的回答是「能」,經過 invoke 命令,既能夠直接調用,也能夠啓動服務。



你熟悉的 http://127.1:3000 已經啓動,開發和調試,一切都隨你心意。

避坑第四招

代碼開發完成,也測試完成,咱們就能夠發佈到平臺啦,這個時候,阿里雲,騰訊雲,其實就看你喜愛啦。

你想發佈到哪一個平臺,直接配置便可。

而後執行部署。

咱們廣告看的很是多,無運維,按請求收費,低成本,簡化邏輯,讓 Serverless 走進千家萬戶。本質和傳統應用開發是有 Gap 的,Serverless 經過 yml 配置聚合資源,由平臺提供資源服務,而業務只須要編寫單一的邏輯代碼,而因爲邏輯的簡化以後,再也不須要考慮複用,迭代,乃至維護和管理。

雖然咱們的代碼能夠在編寫時不須要考慮多個接口了,可是還有最開始的那個問題沒有回答, 「接口多了發佈、管理怎麼辦?」。


midway faas 採用的是接口自定義聚合的模式,根據流量模型,用戶能夠本身決定部署模式,咱們的 f.yml 中能夠進行自由配置,你能夠決定將全部接口匯聚到一塊兒,部署到一個函數容器中享受總體的擴縮,也能夠將熱點的接口隨意移出單獨部署,這一切都不須要修改代碼,只須要動 yml 配置文件便可。

最後的指南

咱們總結了下,避坑指南告訴了你幾個事情:

  • 一、避免提早選擇平臺,專一於開發

  • 二、避免新造輪子,複用傳統能力

  • 三、避免平臺測試,提早本地調試

  • 四、避免額外收費,儘量使用免費方案

就這樣,最後咱們避開了各類坑,也沒有花特別額外的錢(16塊買了個域名),就完成了一些簡單的 Web 接口(應用),下降了成本(走上了褥社會主義平臺羊毛的道路)。

midway faas 是一個幫前端入門 Serverless 的框架,也是將來能力協同,生產上雲的框架,這些避坑的處理只是其中的一小部分,他的完整能力其實更強,提供了更多傳統的依賴注入,裝飾器自定義,業務配置管理,組件化等能力,甚至還有自定義運行時,私有化部署等方案,將來也將一一展示給你們。

咱們但願 "Midway will always be with you"。

倉庫:https://github.com/midwayjs/midway-faas <-- 戳戳 Star

文檔:https://www.yuque.com/midwayjs/faas

最近阿里云云工做臺已經將 midway faas 的一些示例作成了雲上版本,也對開發進行了深度定製,既有 Web 棧應用,也有 SSR 示例,都只須要點選便可搭建完成,用傳統方式開發,支持擴展能力,又有函數接口的靈活,還不花錢,你們還在等什麼呢。

地址:https://workbench.aliyun.com/camp


文末福利

玩轉雲端開發 7 天訓練營


提早享受雲時代的原生開發環境,Serverless 研發從入門到精通,連續 7 天,天天一個直播,阿里專家手把手教你利用阿里云云開發平臺 get 雲端開發新技能。0 門檻打開瀏覽器就能夠開發,最快 1 分鐘搭建我的網站,免費開發還送代金券、天貓精靈等多重好禮!

識別下方二維碼立刻入羣學習

相關文章
相關標籤/搜索