入門 Serverless——簡介與實踐

Serverless,即無服務架構。是指由第三方雲計算供應商以服務的方式爲開發者提供所需功能,例如數據庫、消息,以及身份驗證等。它的核心思想是讓開發者專一構建和運行應用,而無需管理服務器。前端

Serverless 技術的應用通常有兩種:Faas(Function as a Service) 函數即服務和 Baas(Backend as a Service) 後端即服務。git

優勢

Serverless 最大的優勢就是自動擴展伸縮、無需本身管理。github

在以往部署一個應用時,須要經歷購買服務器、安裝操做系統、購買域名等等一系列步驟,應用才能真正的上線。後來有了雲服務器,咱們就省去了購買服務器、安裝操做系統這些操做步驟。只須要在雲服務器上搭建環境、安裝數據庫就能夠部署應用了。數據庫

可是這仍然有個問題,當網站訪問量過大時,你須要增長服務器;訪問量太小時,須要減小服務器。若是使用 Serverless,你就不須要考慮這些,雲服務商會幫你管理這一切。雲服務商會根據你的訪問量自動調整所需的資源。後端

缺點

當應用部署在雲上,而且使用雲存儲或雲數據庫,那可能會讓咱們的應用訪問速度變得比較慢。由於網絡的訪問速度比內存和硬盤差了一到兩個數量級。性能優化

Faas

什麼是函數即服務?服務器

一個函數一般用於處理某種業務邏輯,例如一個 abs() 函數,它將返回所傳參數的絕對值。咱們能夠把這個函數託管到 Faas 平臺,由平臺提供容器並運行這個函數。當執行函數時,只須要提供函數所需的參數,就能夠在不部署應用的狀況下獲得函數的執行結果。網絡

無狀態

Faas 運行函數的容器是無狀態的,上一次的運行效果和下一次的運行效果是無關的。若是須要存儲狀態,則須要使用雲儲存或者雲數據庫。架構

冷啓動

Faas 函數若是長時間未使用,容器就會對其進行回收。因此函數在首次調用或長時間未使用時,容器就須要從新建立該函數的實例,這個過程稱爲冷啓動,通常耗時爲數百毫秒。框架

既然有冷啓動,就有熱啓動。例如容器剛剛調用完函數,過一會又有新的事件觸發。這時因爲函數仍未被回收,因此能夠直接複用原有的函數實例,這被稱爲熱啓動。

事件驅動

Faas 函數須要經過觸發事件來運行。咱們能夠指定不一樣的觸發器:

  • HTTP 觸發器
  • 對象存儲
  • 定時觸發
  • CDN 觸發

...

其中 HTTP 觸發器是最多見的,即經過 HTTP 請求觸發。

低成本、按需收費

像以往咱們購買的雲服務器通常是採起包月、包年的計費方式,即便你買了不用也要收取費用。Faas 採起的是按需付費的方式,雲服務商會根據你的實際使用量來收取費用,不使用不收費(通常來講,Baas 可按需付費,也可包年包月)。

須要配合 Baas 使用

Faas 若是單獨使用的話,那它只適合部署一些工具類函數。由於它是無狀態的,每次運行均可能是在不一樣的容器上,它不知道上一個函數的運行結果。因此若是要使用 Serverless 來部署整個應用,還得額外購買 OSS 雲存儲或者雲數據庫來提供數據存儲服務(也就是須要配合 Baas 來使用)。

Baas

什麼是後端即服務?

假設你是一個前端,如今要開發一個網站。前端部分你能夠本身完成,但後端部分怎麼辦呢?這個時候就可使用 Baas 了。也就是說,你只需編寫和維護前端頁面。其餘的一切,例如數據庫、身份驗證、對象存儲等等都由雲服務商提供。你只須要在前端經過 API 調用它們就可使用所需的服務。

Faas 和 Baas 的區別

Faas 實際上是一個雲計算平臺,用戶能夠將本身寫的函數託管到平臺上運行。而 Baas 則是提供一系列的服務給用戶運用,用戶經過 API 調用。

其餘不一樣點:

  • Faas 無狀態,Baas 有狀態。
  • Faas 運行的是函數,由開發者本身編寫;Baas 提供的是服務,不須要開發者本身開發。

能夠說 Faas 和 Baas 是兩個不一樣的東西,但它們有一個共同點,就是無需本身管理服務器和資源的分配、整理,因此都屬於 Serverless。

阿里雲 Faas 實踐

如今的阿里雲、騰訊雲均可以避免費體驗 Faas,下面以阿里云爲例,演示一下如何使用 Faas。

打開阿里雲 serverless,點擊當即開通:

開通後(阿里雲每月提供必定額度的免費流量,能夠利用這一點來學習如何使用 Serverless)若是沒打開函數計算頁面,請點擊控制檯搜索函數計算:

而後會提示是否受權,受權成功後,就能夠查看剛纔建立的函數。

箭頭所指處是一個 API 地址,調用它能夠觸發你設置的函數。

使用 Serverless 框架

從剛纔的示例能夠發現,要想編寫 Faas 函數只能在線編寫,或者提早寫好複製到阿里雲。爲了改善這種狀況,如今有不少 Serverless 框架,可讓你在本地進行開發,開發完後再部署到阿里雲或其餘雲上。

在這裏推薦一下 midway 框架,主要是國人開發,具備很是詳細的中文文檔。根據文檔的快速指引,就能夠成功將函數部署到阿里雲或其餘雲上。

小結

Serverless 最大的優勢就是彈性擴容和無需親自管理服務器。即便它也有很多缺點,但相對於優勢來講,是能夠忽略的,近幾年來 Serverless 技術的火熱程度也證明了這一點。目前 Serverless 技術仍有很大的發展空間值得咱們去探索,畢竟仍是一門「出生」不久的新技術。

參考資料

帶你入門前端工程 全文目錄:

  1. 技術選型:如何進行技術選型?
  2. 統一規範:如何制訂規範並利用工具保證規範被嚴格執行?
  3. 前端組件化:什麼是模塊化、組件化?
  4. 測試:如何寫單元測試和 E2E(端到端) 測試?
  5. 構建工具:構建工具備哪些?都有哪些功能和優點?
  6. 自動化部署:如何利用 Jenkins、Github Actions 自動化部署項目?
  7. 前端監控:講解前端監控原理及如何利用 sentry 對項目實行監控。
  8. 性能優化(一):如何檢測網站性能?有哪些實用的性能優化規則?
  9. 性能優化(二):如何檢測網站性能?有哪些實用的性能優化規則?
  10. 重構:爲何作重構?重構有哪些手法?
  11. 微服務:微服務是什麼?如何搭建微服務項目?
  12. Severless:Severless 是什麼?如何使用 Severless?
相關文章
相關標籤/搜索