深入淺出FE(十)Serverless初探

目錄

一、Serverless 簡介

二、Serverless 的主要特點

1、事件驅動

三、Serverless 服務中的前端解決方案架構圖

框架(Framework)

Web IDE

命令行工具

四、基於 Serverless 的前端開發模式

五、Serverless 的應用場景

WEB 及移動後端

消息處理

對象存儲文件處理

物聯網

運維及集成

六、參考資料


一、Serverless 簡介

根據 CNCF 的定義,Serverless 是指構建和運行不需要服務器管理的應用程序的概念。(serverless-overview)

Serverless computing refers to the concept of building and running applications that do not require server management. --- CNCF

其實 Serverless 早已和前端產生了聯繫,只是我們可能沒有感知。比如 CDN,我們把靜態資源發佈到 CDN 之後,就不需要關心 CDN 有多少個節點、節點如何分佈,也不需要關心它如何做負載均衡、如何實現網絡加速,所以 CDN 對前端來說是 Serverless。再比如對象存儲,和 CDN 一樣,我們只需要將文件上傳到對象存儲,就可以直接使用了,不需要關心它如何存取文件、如何進行權限控制,所以對象存儲對前端工程師來說是 Serverless。甚至一些第三方的 API 服務,也是 Serverless,因爲我們使用的時候,不需要去關心服務器。

從技術角度來說,Serverless 就是 FaaS 和 BaaS 的結合。

Serverless = FaaS + BaaS。

簡單來講,FaaS(Function as a Service) 就是一些運行函數的平臺,比如阿里雲的函數計算、AWS 的 Lambda 等。

BaaS(Backend as a Service)則是一些後端雲服務,比如雲數據庫、對象存儲、消息隊列等。利用 BaaS,可以極大簡化我們的應用開發難度。

Serverless 則可以理解爲運行在 FaaS 中的,使用了 BaaS 的函數。

二、Serverless 的主要特點

1、事件驅動

2、函數在 FaaS 平臺中,需要通過一系列的事件來驅動函數執行。

3、無狀態

4、因爲每次函數執行,可能使用的都是不同的容器,無法進行內存或數據共享。如果要共享數據,則只能通過第三方服務,比如 Redis 等。

5、無運維

6、使用 Serverless 我們不需要關心服務器,不需要關心運維。這也是 Serverless 思想的核心。

7、低成本

8、使用 Serverless 成本很低,因爲我們只需要爲每次函數的運行付費。函數不運行,則不花錢,也不會浪費服務器資源

三、Serverless 服務中的前端解決方案架構圖

上圖是當前主要的一些 Serverless 服務,以及對應的前端解決方案。

從下往上,分別是基礎設施和開發工具。

基礎設施主要是一些雲計算廠商提供,包括雲計算平臺和各種 BaaS 服務,以及運行函數的 FaaS 平臺。

前端主要是 Serverless 的使用者,所以對前端來說,最重要的開發工具這一層,我們需要依賴開發工具進行 Serverless 開發、調試和部署。

框架(Framework)

如今還沒有一個統一的 Serverless 標準,不同雲計算平臺提供的 Serverless 服務很可能是不一樣的,這就導致我們的代碼,無法平滑遷移。Serverless 框架一個主要功能是簡化 Serverless 開發、部署流程,另一主要功能則是屏蔽不同 Serverless 服務中的差異,讓我們的函數能夠在不改動或者只改動很小一部分的情況下,在其他 Serverless 服務中也能運行。

常見的 Serverless 框架有 Serverless FrameworkZEIT NowApex 等。不過這些基本都是國外公司做的,國內還沒有這樣的平臺。

Web IDE

和 Serverless 緊密相關的 Web IDE 主要也是各個雲計算平臺的 Web IDE。利用 Web IDE,我們可以很方便地在雲端開發、調試函數,並且可以直接部署到對應的 FaaS 平臺。這樣的好處是避免了在本地安裝各種開發工具、配置各種環境。常見的 Web IDE 有 AWS 的 Cloud9、阿里雲的函數計算 Web IDE、騰訊雲的 Cloud Studio。從體驗上來說,AWS Cloud9 最好。

命令行工具

當然,目前最主要的開發方式還是在本地進行開發。所以在本地開發 Serverless 的命令行工具也必不可少。

命令行工具主要有兩類,一類是雲計算平臺提供的,如 AWS 的 aws、 Azure 的 az、阿里雲的 fun;還有一類是 Serverless 框架提供的,如 serverlessnow

大部分工具如 serverlessfun 等,都是用 Node.js 實現的。

四、基於 Serverless 的前端開發模式

在開始具體的案例之前,先看一下傳統開發流程。

在傳統開發流程中,我們需要前端工程師寫頁面,後端工程師寫接口。後端寫完接口之後,把接口部署了,再進行前後端聯調。聯調完畢後再測試、上線。上線之後,還需要運維工程師對系統進行維護。整個過程涉及多個不同角色,鏈路較長,溝通協調也是一個問題。

而基於 Serverless,後端變得非常簡單了,以往的後端應用被拆分爲一個個函數,只需要寫完函數並部署到 Serverless 服務即可,後續也不用關心任何服務器的運維操作。後端開發的門檻大幅度降低了。因此,只需要一個前端工程師就可以完成所有的開發工作。

 

 

當然,前端工程師基於 Serverless 去寫後端,最好也需要具備一定的後端知識。涉及複雜的後端系統或者 Serverless 不適用的場景,還是需要後端開發,後端變得更靠後了。

五、Serverless 的應用場景

Serverless 架構或者技術,可以用在什麼樣的場景下,來充分發揮它的優勢呢?如下的場景,都適合使用 Serverless 架構或產品,來實現所需的業務邏輯。

WEB 及移動後端

通過結合使用雲函數和 API 網關或 HTTP 觸發器,可以對外提供 URL 訪問地址,成爲 Web、小程序、或移動應用等的後端服務。Serverless 架構既可以直接用於構建後臺來服務應用,也可以通過類似 BFF 模式,構建中臺和應用間的橋樑。

Serverless 架構提供的強彈性能力,使得可以支撐業務或應用的暴漲;而提供的低運維需求,使得開發者可以專注於業務實現和優化;同時,按實際使用量的付費方式,使得開發者無需預配置資源,無需擔心預配置資源的浪費。

消息處理

Serverles 架構的應用本身是由事件觸發的,因此極其適合於進行消息處理。無論是消息隊列中傳遞的業務消息,還是 Kafka 中採集應用日誌,均可以對接到雲函數上,進行實時的消息處理、分析。

對象存儲文件處理

在 Serverless 應用場景中,由對象存儲中的文件上傳事件,來觸發雲函數的運行,也是一種常見場景。針對圖片文件的上傳,可以藉助雲函數完成圖片的縮略圖生成、二維碼或水印標記、圖片優化處理;而針對數據文件的上傳,可以啓動數據的自動化分析,

物聯網

物聯網意味着成千上萬的設備會連入網絡,時刻在不斷的產生數據,這對數據的分析、處理的及時性提出了很高的挑戰。通過使用 Serverless 架構,物聯網設備所採集的數據將可以作爲雲函數的觸發事件,而實現數據的實時處理、分析和應用。

隨着物聯網設備計算能力的進一步提升,雲函數作爲最小粒度的計算單元,有機會被調度到設備端運行,實現邊緣計算,達到端 - 雲聯合的 Serverless 架構。

運維及集成

通過對接雲函數以及雲上的各個產品、日誌服務、監控告警系統,雲時代的運維也都可以用雲函數來構建。定時觸發的雲函數,將可以方便的替代需要在主機上來運行的定時任務;而日誌或告警觸發的雲函數,將可以對雲中的事件作出立刻迴應及處理。

六、參考資料

經驗分享:真正的完整的無服務器架構是什麼樣子?Serverless最佳實踐和核心模式

無服務器Serverless架構(Martin Fowler) 

中立觀點:無服務器架構的特點 | ThoughtWorks

無服務器使用場景舉例

什麼是雲原生cloud native應用?

雲計算與無服務器有什麼區別?

幽默:容器派與無服務器派的爭鬥

無服務器是一種學說,而不是技術

雲原生是一個營銷詞語!

營銷謊言:微信小程序目前並不是Serverless!

中臺是一個營銷概念!

#Serverless無服務器

#Kubernetes    #Docker #服務網格 

微服務專題 雲計算專題 EDA事件驅動架構

Serverless 掀起新的前端技術變革

Serverless 入門資料推薦

基礎篇

一圖讀懂無服務器雲函數

Serverless 初探

SCF 快速入門

SCF CLI 使用指南

進階篇

騰訊雲無服務器雲函數架構精解

使用騰訊雲 SCF 雲函數壓縮 COS 對象存儲文件

SCF:雲產品業務告警功能

高級篇

SCF 場景下的 DevOps 實現–Jenkins 篇

SCF 與自然語言處理爲你的網站賦能

SCF: 深度學習之目標檢測

前端學 Serverless 系列–性能調優

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章