當我們在聊 Serverless 時你應該知道這些

芊寶寶最可愛發表於2019-10-14

當我們在聊 Serverless 時你應該知道這些


作者 | 楊澤強(竹澗)阿里雲技術專家

說起當前最火的技術,除了最新的區塊鏈、AI,還有一個不得不提的概念是 Serverless。Serverless 作為一種新型的網際網路架構,直接或間接推動了雲端計算的發展,從 AWS Lambda 到阿里雲函式計算,Serverless 一路高歌,同時基於 Serverless 的輕量計算開始登入雲端計算的舞臺,本文將從兩個部分展開:

  1. 介紹 Serverless 的概念,歷史及其現狀與未來的思考;
  2. Serverless Container 的概念及現狀。

一、聊聊 Serverless

前文講到 Serverless 是一種新型的網際網路架構,目前尚沒有官方權威的定義,可以認為:

Serverless 無伺服器架構是基於網際網路的系統,其中應用開發不使用常規的服務程式。相反,它們僅依賴於第三方服務(例如 AWS Lambda 服務),客戶端邏輯和服務託管遠端過程呼叫的組合。

AWS Lambda 作為 Serverless 最早的框架產品,在 2014 年由亞馬遜推出,但最早的 Serverless 概念並不是由亞馬遜提出,下面我們來簡單聊聊 Serverless 的歷史。

Serverless 歷史


當我們在聊 Serverless 時你應該知道這些


發軔之始

2012 年雲基礎設施服務提供商  Iron.io  的副總裁 Ken 提出 軟體的未來 , 首次提出來 Serverless 概念, 以下是原文的一段摘錄:

Even with the rise of cloud computing, the world still revolves around servers. That won’t last, though. Cloud apps are moving into a serverless world, and that will bring big implications for the creation and distribution of software and applications.

初出茅廬

AWS Lambda 產品的釋出可以認為是 Serverless 的里程碑,在此之前 Serverless 幾乎是停留在概念期,直到 14 年 Lambda 釋出,讓“Serverless”提高到一個全新的層面,為雲中執行的應用程式提供了一種全新的系統體系架構,**Serverless 開始正式走向雲端計算的舞臺。

嶄露頭角

在 AWS 釋出 Lambda 之後,眾多 IaaS 及 Pass 廠商爭相入市, Google Cloud FunctionsAzure FuncionsIBM OpenWhisk阿里雲函式計算短短數年時間 Serverless 產品已遍地開花。

未來已來

隨著容器技術、IoT、5G、區塊鏈等技術的快速發展, 技術上對去中心化,輕量虛擬化,細粒度計算等技術需求愈發強烈,而 Serverless 必將借勢迅速發展, 未來 Serverless 將在雲端計算的舞臺上大放異彩!

雲端計算發展看 Serverless

首先,拋一個總結性觀點:雲端計算的發展從IaaS、PaaS、SaaS,到最新的 BaaS、FasS,在這個趨勢中 serverless (去伺服器化)越來越明顯,而 Serveless 的完善帶給雲端計算將會是一次完美進化!

當我們在聊 Serverless 時你應該知道這些


眾所周知,雲端計算經歷了從 IDC -> IaaS -> PaaS -> Serverless/FaaS 的發展歷程,下面對這些概念做一些基本介紹。

IaaS


當我們在聊 Serverless 時你應該知道這些


IaaS(Infrastructure as a Service) 基礎設施即服務,服務商提供底層/物理層基礎設施資源(伺服器,資料中心,環境控制,電源,伺服器機房),使用者需要透過 IaaS 提供的服務平臺購買虛擬資源,選擇作業系統、安裝軟體、部署程式、監控應用。

目前知名的 IaaS 平臺有 AWS、Azure、Google Cloud Plantform、阿里雲以及開源的 OpenStack 等。

PaaS


當我們在聊 Serverless 時你應該知道這些


PaaS (Platform as a Service) 平臺即服務,服務商提供基礎設施底層服務,提供作業系統(Windows,Linux)、資料庫伺服器、Web 伺服器、負載均衡器和其他中介軟體,相對於 IaaS 客戶僅僅需要自己控制上層的應用程式部署與應用託管的環境。

目前知名的 PaaS 平臺有 Amazon Elastic Beanstalk,Azure,Google App Engine,VMware Cloud Foundry 等。

SaaS

SaaS (Software as a Service) 軟體即服務, 服務商提供基於軟體的解決方案,如 OA、CRM、MIS、ERP、HRM、CM、Office 365、iCloud 等,客戶不需考慮任何形式的專業技術知識,只需要透過服務商平臺獲取軟體使用即可。


當我們在聊 Serverless 時你應該知道這些


BaaS

BaaS (Backend as a Service) 後端即服務,服務商為客戶(開發者)提供整合雲後端的服務,如提供檔案儲存、資料儲存、推送服務、身份驗證服務等功能,以幫助開發者快速開發應用。

FaaS

FaaS (Function as a Service) 函式即服務,服務商提供一個平臺,允許客戶開發、執行和管理應用程式功能,而無需構建和維護基礎架構。 按照此模型構建應用程式是實現“無伺服器”體系結構的一種方式,通常在構建微服務應用程式時使用。

IaaS、PaaS、FaaS 對比

舉個例子,比如小明想開一個水果店:

  • IDC:如果蓋房子,裝修、上架水果這些工作都是小明自己來做;
  • IaaS:如果小明房子是租的,裝修、上架水果是自己做;
  • PaaS: 如果小明房子是租的,可是房子已經裝修好了,但是上架水果要自己來做;
  • FaaS:如果有一個商家提供裝修好的水果店,小明只負責把水果送過來,其餘上架工作都由商家來做。

總結

從 IDC → IaaS,使用者不用關注真實的物理資源。
從 IaaS → PaaS,使用者不再關注作業系統,資料庫,中介軟體等基礎軟體。

從 PaaS → BaaS/FaaS, 使用者可以很少甚至不用關注 backend,app 可以簡化為一個單頁面程式。

可以說,Serverless 是雲端計算發展到一定階段的必然產物,雲端計算作為普惠科技,發展到最後一定是綠色科技(最大程度利用資源,減少空閒資源浪費)、大眾科技(成本低,包括學習成本及使用成本)的產品,而 Serverless 將很好的詮釋這些!

Serverless/FaaS 模型

Serverless 是基於事件驅動的程式設計範型,其底層的計算平臺一般為輕量計算,比如容器計算 Docker。

針對該模型本文不再贅述, 下面以 AWS Lambda 及阿里雲函式計算為例,簡單介紹該模型。

AWS Lambda


當我們在聊 Serverless 時你應該知道這些


大致流程如下:

  1. UI 驅動,透過模擬滑鼠點選觸發事件;
  2. 當觸發事件增多時,lambda 例項自動擴容;
  3. 當觸發事件減少時,lambda 例項自動縮容。

阿里雲函式計算


當我們在聊 Serverless 時你應該知道這些


流程大致如下:

  1. UI/Event/Message Driven 觸發事件;
  2. 使用者 Function 會 package 為一個 docker 映象;
  3. 事件排程系統配合 Docker 叢集執行 Docker 容器來執行 Function

Serverless 價值與影響

低成本

  • 運營成本,Serverless 將使用者的伺服器、資料庫、中介軟體委託於 BaaS/FaaS,使用者將不再參與基礎設施及軟體的維護,尤其在大規模的叢集運營上成本大幅度降低;
  • 開發成本,對比 IaaS 或者 PaaS 平臺的伺服器或者作業系統,Serverless 的架構中,使用者操作的是服務化的元件比如儲存服務,授權服務等,可以縮短開發週期,降低開發難度。

真正的按需計費

Serverless/FaaS 區別於 IaaS/PaaS 預先分配計算資源的計費方式,其計費方式通常是按請求次數及執行時間,一方面可以最大程度利用資源,另一方面真正的按需計費降低使用者的資源成本。

高擴充套件

Serverless 架構一個顯而易見的優點即“橫向擴充套件是完全自動的、有彈性的、且由服務提供者所管理”。

“綠色”計算

據統計,商業和企業資料中心的典型伺服器僅提供 5%~15% 的平均最大處理能力的輸出,本質上這是對社會資源的一種浪費。而在 Serverless 架構下,提供商將提供更細力度的計算能力,最大限度滿足實時需求,資源利用率將大幅度提升,可以認為相對 IaaS 與 PaaS,Serverless/FaaS 是一種 “綠色” 計算。

NoOps

運維的發展經歷了人肉運維、自動化運維、DevOps、AiOps 等,而 Serverless 帶來一種新的運維模式,這種模式下使用者需要管理的只有 Code 可以認為 NoOps。

Serverless 應用場景

  • 事件驅動以及響應式架構
    • IoT 物聯網場景中低頻請求
    • 請求對及時響應需求不夠
    • 固定時間觸發計算資源利用低的業務


  • 流量突發場景
    • 比如短時間大流量影片轉碼
    • 短週期內的流量峰值


  • 跨雲與混合雲場
  • 邊緣計算
  • 其它 ...

Serverless 未來的一些思考

細粒度的計算資源

目前主流的 Serverless/FaaS 技術底層的計算環境通常是容器比如 Docker,容器技術是一種比硬體虛擬化更輕量的實現,使用者可以在虛擬機器上執行大量的容器,可以更大程度的利用計算資源。

而Serverless 的需求可能是更細粒度的計算資源,比如最近華為釋出的 CCI 產品容器的規格已經支援千分之一核,相信千分之一核只是開始,未來 Serverless 在細粒度資源使用上將發揮無限可能。

統一的容器排程模型

從當前 Serverless/FaaS 及容器生態的發展來看,容器基本都是執行在雲主機之上比如 aws 的 ec2,阿里雲的 ecs。
由於雲廠商實現方式及不同產品的差異性,容器的排程框架選擇不盡相同,比如有的廠商其 Serverless 產品是基於 Kubernetes 管理雲主機叢集進行容器編排及排程(比如華為的 CCI),而有的產品如阿里雲的函式計算產品是基於自研的 Agent 進行容器排程。那麼為什麼沒有一種產品可以為不同的 Serverless 服務提供通用的容器排程能力呢?

生態圈多樣化

Serverless 的發展必然會帶動其周邊生態的完善,比如 BaaS 及 FaaS 產品的形態將多樣化輸出,舉個例子:
Serverless 架構下使用者的 Code 是沒有服務端的,而這些服務將由雲廠商以 BaaS 的服務形態提供,隨著 Serverless 的發展,必然會催生多樣化的 BaaS 服務。

產品抽象輸出

Serverless 是雲端計算普惠科技的重磅技術!Serverless 的出現將開發者從複雜的硬體及軟體環境中解脫出來,未來可以想象 Serverless 的產品將會以更加簡單的方式呈現給使用者。舉個例子:大家熟知的樂高積木,不同的小零件按照不同的方式組裝,最終得到的作品是多樣化的。
而 Serverless 天生具備這種優勢,可以想象如果 Function 以服務化的方式抽象,開發者開發一個 Cloud App 需要做的事情就是在無數的 Function 裡面挑選自己需要的“積木”,然後透過一種視覺化的工具進行"積木"組合!

二、Serverless Container

前文講了一些 Serverless 生態的概念及現狀,從當前主流的 Serverless/FaaS 框架,如 AWS Lambda、IBM OpenWhisk、 Iron.io 、阿里雲函式計算分析來看,其底層的計算資源通常是 Docker 容器。可以認為 Serverless 構建於容器 (Docker) 之上!

什麼是 Serverless Container

Serverless Container(無伺服器容器),意味著使用者不再需要關注容器叢集和伺服器,只需關注 Docker 容器或者 Docker Image 即可。

透過分析業界主流的的 Serverless Container 產品如  AWS Fargate Azure ACI,  華為 CCI,可以看出:

  • Serverless Container 提供了更為簡單的體驗,使用者不再需要理解容器編排技術如 K8s,Swarm;
  • Serverless Container 提供了更細粒度的的能力,比如微核粒度的 CPU 資源和 MB 粒度的記憶體資源;
  • Serverless Container 提供了將容器作為基礎計算單元的思路。

Serverless Container VS Kubernets

Kuberntes (K8s) 是谷歌開源的容器管理系統,類似的產品還有 Docker Swarm、Apache Mesos。這些優秀的叢集管理系統,尤其是 K8s 已經在生成得到了充分驗證,從使用角度來說,K8s 需要使用者具備容器及容器編排、叢集管理等多方面的專業知識,而 Serverless Container 對使用者遮蔽了容器叢集管理,使用者使用起來將更簡單!

結論:Serverless Container 在容器產品形態上是高於 Kubernetes 的,事實上大部分的 Serverless Container 產品都基於或者相容 Kubernetes。

Serverless Container VS Serverless/FaaS

根據上文的分析:

  • Serverless Container 對使用者提供的是一種容器計算資源,使用者不需要關心容器叢集,只需要定製 vCpu、mem 及 Docker Image;
  • Serverless/FaaS 提供的是一種服務化的計算能力,使用者同樣不用關心計算叢集,只需指定 vCpu,mem 及 Code。

結論:FaaS 及 Serverless Container 的底層計算資源都是 Docker 容器!

原文連結

本文為雲棲社群原創內容,未經允許不得轉載。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949601/viewspace-2659906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章