Serverless 基本概念入門

blank

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 技術為什麼會獲得越來越多的關注?我們可以從幾個角度來看。

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

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

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

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

1.降低運維需求

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

2.降低運營成本

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

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

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

4.快速試錯

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

Serverless的技術特點

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

1.事件驅動

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

2.單事件處理

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

3.自動彈性伸縮

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

4.無狀態開發

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

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 Framework 30 天試用計劃

我們誠邀您來體驗最便捷的Serverless 開發和部署方式。在試用期內,相關聯的產品及服務均提供免費資源和專業的技術支持,幫助您的業務快速、便捷地實現Serverless!

詳情可查閱: Serverless Framework試用計劃

One More Thing

3 秒你能做什麼?喝一口水,看一封郵件,還是——部署一個完整的Serverless應用?

複製鏈接至PC瀏覽器訪問: serverless.cloud.tencent.com

3秒極速部署,立即體驗史上最快的Serverless HTTP實戰開發!

傳送門:

歡迎訪問: Serverless中文網,您可以在最佳實踐裡體驗更多關於Serverless應用的開發!

What do you think?

Written by marketer

blank

App內網頁啟動加速實踐:靜態資源預加載視角

blank

可能是你見過最完善的微前端解決方案