Serverless(無服務器)架構知識梳理

前題:

大多數公司在開發應用程序並將其部署在服務器上的時候,無論是選擇公有云還是私有的數據中心,都需要提前瞭解究竟需要多少臺服務器、多大容量的存儲和數據庫的功能等。並需要部署運行應用程序和依賴的軟件到基礎設施之上。如果我們不想在這些細節上花費精力,是否有一種簡單的架構模型能夠滿足我們這種想法?這個答案已經存在,這就是今天軟件架構世界中新鮮但是很熱門的一個話題——Serverless(無服務器)架構。

什麼是Serverless

Serverless(無服務器)架構知識梳理

Serverless這個詞第一次被使用大約是2012年由Ken Form所寫的一篇名爲《Why The Future of Software and Apps is Serverless》的文章。這篇文章談到的內容是關於持續集成及源代碼控制等內容,並不是我們今天所特指的這一種架構模式。目前還沒有一個普遍公認的權威的定義。最新的一個定義是這樣描述的:“無服務器架構是基於互聯網的系統,其中應用開發不使用常規的服務進程。

涉及核心名詞解釋:

FaaS(Function as a Service)就是一些運行函數的平臺,比如阿里雲的函數計算、Lambda 等。
BaaS(Backend as a Service)則是一些後端雲服務,比數據庫、對象存儲、消息隊列等。利用 BaaS,可以極大簡化我們的應用開發難度。

FaaS 函數既服務

什麼是函數既服務? 當我們使用後端服務的時候,不用去關心,後端的IP地址是什麼,也不需要關心域名到底是什麼,我們只需要像調用一個普通的函數那樣去調用就可以了。所以對於後端來說,後端的服務僅僅是一個函數,而函數就是前端代碼的一部分。至於函數到底是前端實現的,還是後端實現的,不需要去關心。
在今天主流的微服務設計裏,每一個領域或者子域都是一個服務。而在 Serverless 應用中,這些領域及子域因爲他們的功能,又可能會進一步切分成一個又一個 Serverless 函數。

Serverless(無服務器)架構知識梳理

Serverless有什麼用

企業中一些長尾應用(調用頻率少或者資源使用輕量的的應用)雖然不常使用或在業務中位置較低,但卻要佔用一臺服務器及SRE的精力來保證其可靠性,甚至還需要主備高可用,投入的人力物力和服務本身的價值不成正比,這時可以選用Serverless來解決上述問題極大的節約資源又可以保證其高可靠的提供服務。

帶來的價值:

  1. 降低運營成本
  2. 降低運維需求
  3. 開發更爲高效、快捷

從資源效能角度看

Serverless(無服務器)架構知識梳理

從業務開發效能角度看

Serverless(無服務器)架構知識梳理

Serverless 適用場景:

  1. 運算密集 — — 如圖片壓縮、數據分析
  2. 定時任務
  3. 瘦容器
  4. WebHook
  5. 輕量級 API
  6. Chat 機器人

缺點

  1. 生命週期短 — — 目前AWS一個 Lambda 最多隻能跑 5 分鐘;
  2. Linux only — — 想做一個 macOS 的 CI 服務目前是不可能的;
  3. 語言限制 — — 除了 NodeJS、Java、Python 以外,其它程序都只能通過 shim 來運行,調試相對麻煩;
  4. 部署操作繁多,搭建無服務底層框架還是挺複雜的。

如何知道Serverless是否適合你的公司

先看下圖
Serverless(無服務器)架構知識梳理

Serverless 有不少平臺底層是結合Docker 和 k8s 集羣實現的,如果一個公司沒有使用過任何沒有任何Docker/Kubernetes的實施經歷。那麼他們就不該從Serverless開始。

來點乾貨

如果你對serverless 感興趣,個人花了點時間簡單更新整理了業界比較火的無服務平臺信息,給大家參考,詳細如下:

Serverless(無服務器)架構知識梳理
更新時間:2020-12-30

平臺沒有絕對的好與壞,可以結合公司實際情況、業務場景並且參考上面的數據進行選擇,搞起!

原文轉載地址:

IT思維

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