Serverless 基本概念入門

從行業趨勢看,Serverless 是雲計算必經的一場革命

2019 年,Serverless 被 Gartner 稱為最有潛力的雲計算技術發展方向,並被賦予是必然性的發展趨勢。Serverless 從底層開始變革計算資源的形態,為軟件架構設計與應用服務部署帶來了新的設計思路。

Serverless 基本概念入門



什麼是 Serverless?

Serverless ,按中文翻譯,稱為無服務器。

這究竟是一種什麼樣的形態或產品呢?無服務器,就是真的沒有服務器嗎?

其實,在行業內,目前對於 Serverless 有幾種解讀方法:

  • 在某些場景可以解讀為一種軟件系統架構方法,通常稱為 Serverless 架構;
  • 而在有些情況下,又可以代表一種產品形態,稱為 Serverless 產品。

在說起 Serverless 架構時,Serverless 代表的是利用 Serverless 形態的產品實現的應用架構,這種架構完全依託於雲廠商或雲平臺提供產品完成系統的組織及構建。在這種架構中,用戶無需關注支撐應用服務運行的主機,而將關注點投入在系統架構,業務開發,業務支撐運維上。

而說起 Serverless 產品時,代表的是無需理解、管理服務器,按需使用,按使用付費的產品。Serverless 產品中,其實也可以包含存儲、計算等多種類型的產品,而典型的計算產品,就是雲函數這種形態。

雲函數,或者稱為函數即服務 Function as a Service,它和後端即服務 Backend as a Service 一起,都可以稱為 Serverless 產品;而通過組合使用這些產品,開發者可以構建自身的業務 Serverless 架構。


Serverless 的價值

Serverless 技術為什麼會獲得越來越多的關注?我們可以從幾個角度來看。

首先,從開發者使用的來說,不用更多的去考慮服務器的相關內容,無需再去考慮服務器的規格大小、存儲類型、網絡帶寬、自動擴縮容問題;同時,也無需再對服務器進行運維了,無需不斷的打系統補丁、應用補丁、無需進行數據備份、軟件配置等工作了。

其次,Serverless 產品是完全自動化的彈性擴縮容的;在業務高峰時,產品的計算能力、容量自動擴容,承載更多的用戶請求,而在業務下降時,所使用的資源也會同時收縮,避免資源浪費。

再次,跟隨著完全自動化的彈性所帶來的,是全新的計量計費模式;開發者僅需根據使用量來付費,而在深夜無業務量的情況下,不會有空閒資源佔用,因此也不會有費用產生。

隨著如上提到的特性,Serverless 給開發者或用戶帶來了具體的商業價值:

1、降低運維需求:

  • Serverless 使得應用與服務器解耦,業務上線前無需預估資源,無需進行服務器購買、配置;
  • Serverless 也使得底層運維工作量進一步降低,業務上線後,也無需擔憂服務器運維,而是全部交給了雲平臺或雲廠商;

2、降低運營成本:

  • Serverless 的應用是按需執行的。應用只在有請求需要處理或者事件觸發時才會被加載運行,在空閒狀態下 Serverless 架構的應用本身並不佔用計算資源;
  • 而在使用 Serverless 產品時,用戶只需要為處理請求的計算資源付費,而無須為應用空閒時段的資源佔用付費;

3、縮短迭代週期、上線時間:

  • Serverless 架構帶來的是進一步的業務解耦,應用功能被解構成若干個細顆粒度的無狀態函數,開發可以聚焦在單功能的快速開發和上線上;
  • 同時拆解後的雲函數,也都可以進行獨立的迭代升級,更快速的實現業務迭代,縮減功能的上市時間;

4、快速試錯

  • 利用 Serverless 架構的簡單運維、低成本及快速上線能力,可以來快速嘗試業務的新形態、新功能;
  • 利用 Serverless 產品的強彈性擴容能力,在業務獲得成功時,也無需為資源擴容而擔心;

Serverless 的技術特點

這裡提到的技術特點的對象,特指 Serverless 產品中的計算產品,也就是雲函數。雲函數包含了如下的技術特性:

1、事件驅動

  • 雲函數的運行,是由事件驅動起來的,在有事件到來時,雲函數會啟動運行
  • Serverless 應用不會類似於原有的監聽-處理類型的應用一直在線,而是按需啟動
  • 事件的定義可以很豐富,一次 http 請求,一個文件上傳,一次數據庫條目修改,一條消息發送,都可以定義為事件
Serverless 基本概念入門

2、單事件處理

  • 雲函數由事件觸發,而觸發啟動的一個雲函數實例,一次僅處理一個事件
  • 無需在代碼內考慮高併發高可靠性,代碼可以專注於業務,開發更簡單
  • 通過雲函數實例的高併發能力,實現業務高併發
Serverless 基本概念入門

3、自動彈性伸縮

  • 由於雲函數事件驅動及單事件處理的特性,雲函數通過自動的伸縮來支持業務的高併發
  • 針對業務的實際事件或請求數,雲函數自動彈性合適的處理實例來承載實際業務量
  • 在沒有事件或請求時,無實例運行,不佔用資源
Serverless 基本概念入門

4、無狀態開發

  • 雲函數運行時根據業務彈性,可能伸縮到0,無法在運行環境中保存狀態數據
  • 分佈式應用開發中,均需要保持應用的無狀態,以便於水平伸縮
  • 可以利用外部服務、產品,例如數據庫或緩存,實現狀態數據的保存
Serverless 基本概念入門



Serverless 的應用場景

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

1、WEB 及移動後端

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

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

2、消息處理

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

3、對象存儲文件處理

在 Serverless 應用場景中,由對象存儲中的文件上傳事件,來觸發雲函數的運行,也是一種常見場景。

針對圖片文件的上傳,可以藉助雲函數完成圖片的縮略圖生成、二維碼或水印標記、圖片優化處理;而針對數據文件的上傳,可以啟動數據的自動化分析,

4、物聯網

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

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

5、運維及集成

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


Serverless — 雲原生時代的應用架構

雲計算已經進入了新的時期,目前上雲已經不是應不應該,而是如何上雲的問題。在這種情況下,雲原生的概念也隨之而生。雲原生的架構或應用,是基於雲而設計的,充分的利用現代雲計算平臺所具備的彈性和分佈式特性來實現應用架構。

而 Serverless 架構、產品、以及應用,均是完全依託於雲而構建的,是典型且完全的雲原生的架構、產品或應用。Serverless 產品所具備的產品特性優勢、技術優勢、費用優勢,將成為新一代雲產品的發展方向;而基於 Serverless 架構推進完成開發的應用或架構,將充分享受到雲時代帶來的強大助力,使得雲計算能真正成為業務的助推器。

Serverless 的計算產品-雲函數,作為雲虛擬機、容器技術之後的下一代計算形態,將引來雲計算中新的熱潮。

圍繞著雲函數而建設的產品能力、工具、生態、以及應用開發,也將引來新的一輪發展。隨著無服務器的產品和生態走向成熟,將逐步承載起企業核心業務。在這個持續向前高速發展的過程中,騰訊雲的雲函數,將作為騰訊云云原生的重點發力領域,跟隨客戶需求、行業發展、技術發展,為用戶提供完整全套的 Serverless 解決方案。

傳送門:

GitHub: github.com/serverless

官網:serverless.com

社區:china.serverless.com


分享到:


相關文章: