騰訊雲工程師一文讓你迅速讀懂Serverless

cloudking000發表於2017-08-17

什麼是 Serverless

Serverless架構,或者稱為無伺服器架構,是最近幾年新冒出來的一種架構風格。這究竟是一種什麼樣的架構?無伺服器,就是真的沒有伺服器了麼?其實,對於Serverless來說,只是使用者不用更多的去考慮伺服器的相關內容了,無需再去考慮伺服器的規格大小、儲存型別、網路頻寬、自動擴縮容問題了;同時,也無需再對伺服器進行運維了,無需不斷的打系統補丁、應用補丁、無需進行資料備份、軟體配置等工作了。

但是沒有伺服器,如何來將程式、應用執行起來呢?這裡要介紹的是Serverless下包含的兩個概念:函式即服務,Function as a Service FaaS,後端即服務,Backend as a Service BaaS。

函式即服務 FaaS

函式即服務 FaaS,作為一種新的計算能力提供方式,讓使用者拋棄了對伺服器的配置和管理,僅需編寫和上傳核心業務程式碼,交由平臺完成部署、排程、流量分發、彈性伸縮等能力。FaaS的出現,會從底層開始變革計算資源的形態,提供了一種新的方式來提供計算資源,同時也會給軟體架構與應用服務部署帶來新的設計思路,進一步降低雲端計算的使用門檻,推動全行業在服務架構上的創新步伐。

後端即服務 BaaS

後端即服務 BaaS,其實大家已經使用很久了,這裡的後端,指的就是各種雲產品和雲服務,例如物件儲存COS,訊息佇列CMQ,雲資料庫CDB、TDSQL,雲快取CRedis、CMemcached,甚至到各種以 API 形式提供的服務如永珍優圖 CI,視訊處理 VC。這些產品或服務,使用者直接開通即可使用,無需考慮部署、擴容、備份、優化、安全等各種運維工作,做到了開箱即用,無需自己去進行伺服器或應用的維護和管理,因此同樣也是Serverless的一部分。

為什麼要 Serverless

介紹了什麼是Serverless,但是為什麼會出現 Serverless,或者為什麼要使用 Serverless 呢?我們這裡可以從三個方面來看看,這三個方面可以類比為:天時,地利,人和。

天時,這裡突出的時,即時間。傳統的伺服器模式,應用上線前,還得完成伺服器準備,環境部署,資料庫準備,儲存準備等各種工作;上線後,還得面臨計算擴容,儲存擴容,資料庫維護和擴容等各種運維工作。這這個過程中,應用上線和迭代的時間、節奏,受限於各種準備和維護工作。而利用Serverless,通過使用SCF產品,專注於完成業務相關的核心程式碼,通過直接使用COS,CDB,CMQ,CRedis等產品,解決資料儲存,資料庫,訊息佇列,快取等問題,不再費心運維,而專注在業務開發和迭代上,能更快的完成應用上線,在這個網際網路加速發展的時代,做到一步領先,步步領先。

地利,這裡突出的利,即費用支出。傳統的伺服器模式,無論有沒有使用者正在訪問,應用始終要保持執行,而在有使用者訪問時,又要關注伺服器的資源使用率,在使用率達到一定程度時就要考慮擴容,避免突發訪問量導致的資源不足。在這個過程中的費用,始終是有一部分為未使用的計算資源而支付。而 Serverless 架構,能確保所有的費用,都是用在了實際的程式執行、資料儲存、使用者訪問中。SCF 雲函式的計費方式,就是通過函式的呼叫次數和執行時間來統計費用,有使用者訪問或事件產生,才會有函式執行,才會有費用計算;相反,沒有函式執行時,則沒有費用支出。同理,其他的相關雲產品,也是類似,例如 COS 僅收取儲存、外網流量的費用,CMQ 僅收取請求次數、外網流量費用,CRedis 僅按實際使用記憶體大小收費。據測算,根據不同使用者的應用壓力情況,SCF 能為使用者帶來 30%~70% 的費用節省程度。

人和,這裡突出的是人。傳統的伺服器模式,運維人員要投入大量的精力去維護伺服器、資料庫、儲存等各種基礎設施,解決各種叢集、分散式系統的搭建問題,而實際運維解決自身應用問題的時間,可能只會佔到很小一部分,而開發人員除了對自身業務應用的開發外,也需要投入時間,解決可能存在的各種外圍系統的問題。而 Serverless 架構,無需運維人員再投入到基礎設施中去了,而開發人員也可以全面關注業務系統的開發。SCF 產品,可以讓開發人員直接編寫業務邏輯核心程式碼,利用微服務架構,快速上線應用。CMQ,CDB,COS,CRedis 各種雲產品,無需搭建配置,開通即可使用,而將基礎運維工作交由雲來完成。在這種情況下,脫離了基礎運維的運維人員,可以提升自身視野,從更高角度來看待運維工作,實現業務運維;而開發人員,可以充分利用 CICD、DevOps能力,提升整個應用或業務的整合能力。

怎麼用 Serverless

COS、CMQ、CDB、CRedis 這類 BaaS 型雲產品,由於面世的時間已經很長,對其使用的方式,基本和原有使用 MySQL、Redis等產品相同,或者通過產品提供的 API、SDK直接訪問使用。而 SCF 雲函式,作為 FaaS 產品,有著稍有不同的使用方式。

事件觸發:SCF 的工作模式為事件觸發,因此要考慮好觸發方式。例如,利用 SCF 來處理圖片生成縮圖,就可以利用 COS 事件,在圖片檔案上傳 COS 後,上傳事件就能自動觸發函式執行,來生成新的縮圖並再次存入 COS 中。

無狀態服務:函式需要是無狀態(stateless)的,快取、日誌、資料庫等全部通過CRedis、COS、CDB這類雲產品來支援,這樣才能保證在業務請求突增時服務能迅速擴充套件。

微服務:事件驅動(event-driven)和無狀態(stateless)屬性正是微服務架構所需要的。因此,在一開始就將自身的應用設計為微服務架構,解耦各模組間關聯,使得應用成為可生長可進化的系統。

無伺服器雲函式 SCF 實現獨立開發、簡化測試和加速部署,能夠助力公司在關鍵時期快速上線和迭代,為初創期的產品提供了很好的解決方案。

相關文章