01|定義:到底什麼是Serverless?

本文僅作爲學習記錄,非商業用途,侵刪,如需轉載需作者同意。

一、serverless要解決什麼問題

server less 字面解釋是較少關心服務端。

1、什麼是服務端

在這裏插入圖片描述

服務端的邊界就是上圖中的藍色部分。serverless解決的就是服務端運維的事情。

發展歷程:
a、開發和運維的工作都放在一起做,分工不明確
b、開發和運維分工明確,開發專注業務開發,運維處理線上運維等雜事
c、devops時代,運維開發工具和平臺,提高運維效率
d、平臺化發展的越來越完善,日常的發佈上線,查看問題都可以開發自己在平臺上處理了
e、未來開發對底層服務端的感知越來越弱,運維關注底層和Iaas的事情。

serverless 就是對服務端運維的極端抽象,對開發透明化,簡化服務端運維模型,使得一個新手也可以很快的搭建起來一個web服務。

二、什麼是serverless

  • 第一種:狹義serverless(最常見) = serverless computing架構 = Faas架構 = Trigger(事件驅動) + Faas(函數即服務)+ Baas(後端即服務,持久化或第三方服務)= Faas + Baas
  • 第二種:廣義serverless = 服務端免運維 = 具備serverless的特性的雲服務

在這裏插入圖片描述

1、狹義serverless

Faas:函數即服務,也叫serverless computing 隨時的創建、使用、銷燬一個函數。
通常函數的使用過程:代碼加到內存也就是實例化, 然後被其他函數調用執行。
Faas中也是一樣,函數需要實例化然後被Trigger或者其他函數調用。
二者的最大區別在於runtime,也就是函數的上下文,函數執行時的語境。

Faas的Runtime是預先設置好的,Runtime裏面加載的函數和資源都是雲廠商提供的,我們可以使用卻無法控制。 Faas的runtime是臨時的,函數調用完以後,和函數一起銷燬。
Faas推薦無狀態函數,可以自動擴容和縮容,最小縮小到0。

那需要持久化的數據這麼辦?下面介紹下Baas
Baas是指具備高可用性和彈性,而且免運維的後端服務,專門支撐Faas的。

MVC中的Model層就使用Baas來解決。以Mysql爲例子,後端服務最好將Faas服務操作數據的命令,封裝成HTTP的OPENAPI,自己開控制請求API的頻率和限流降級。後端服務可以通過連接池和集羣的方式進行優化。如下圖:
在這裏插入圖片描述

基於serverless可以把傳統的MVC架構轉換爲 Baas + View + Faas的組合,重構或實現。

這樣狹義的serverless 就好理解了。

2、什麼是廣義的serverless

廣義的serverless具備以下的服務特性:
想想NoOps具備哪些條件
1、無需關注服務端的事情(容錯、容災、安全驗證等)
2、按使用量付費,大多數場景下節省成本
3、快速迭代和試錯能力(多版本控制,CI/CD,灰度等)

廣義serverless就是指服務端免運維,也是未來的趨勢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章