Serverless 基本概念入門

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

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

爲此,咱們策劃了 Serverless 技術專欄,從基礎概念入門,到先後臺架構設計、應用拓展、最佳實踐等多維度,揭開 Serverless 的面紗,帶你走進無服務器的世界。小程序

▎什麼是 Serverless?

Serverless ,按中文翻譯,稱爲「無服務器」。後端

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

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

  • 在某些場景能夠解讀爲一種軟件系統架構方法,一般稱爲 Serverless 架構
  • 而在另外一些狀況下,又能夠表明一種產品形態,稱爲 Serverless 產品

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

而提及 Serverless 產品時,表明的是無需理解、管理服務器,按需使用,按使用付費的產品。Serverless 產品中,其實也能夠包含存儲、計算等多種類型的產品。而典型的計算產品,就是雲函數這種形態。架構

雲函數,或者稱爲函數即服務 (Function as a Service),它和後端即服務 (Backend as a Service) 一塊兒,均可以稱爲 Serverless 產品。經過組合使用這些產品,開發者能夠構建自身的業務 Serverless 架構。併發

▎Serverless 的價值

Serverless 技術爲何會得到愈來愈多的關注?咱們能夠從幾個角度來看。app

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

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

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

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

1. 下降運維需求

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

2. 下降運營成本

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

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

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

4. 快速試錯

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

▎Serverless 的技術特色

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

1. 事件驅動

  • 雲函數的運行,是由事件驅動起來的,在有事件到來時,雲函數會啓動運行
  • Serverless 應用不會相似於原有的「監聽 - 處理」類型的應用一直在線,而是按需啓動
  • 事件的定義能夠很豐富,一次 http 請求,一個文件上傳,一次數據庫條目修改,一條消息發送,均可以定義爲事件

2. 單事件處理

  • 雲函數由事件觸發,而觸發啓動的一個雲函數實例,一次僅處理一個事件
  • 無需在代碼內考慮高併發高可靠性,代碼能夠專一於業務,開發更簡單
  • 經過雲函數實例的高併發能力,實現業務高併發

3. 自動彈性伸縮

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

4. 無狀態開發

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

▎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 解決方案。

歡迎關注騰訊雲 Serverless 團隊咱們專一於 Serverless 架構的最佳實踐!

相關文章
相關標籤/搜索