Serverless簡介


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

介紹 Serverless的概念,歷史及其現狀與未來的思考。

Serverless Container的概念及現狀。

一、聊聊Serverless

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

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

AWS Lambda 作為Serverless最早的框架產品由亞馬遜在2014年推出,但最早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 Functions, Azure Funcions, IBM OpenWhisk,阿里雲函數計算,短短數年時間Serverless產品已遍地開花。

未來已來

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

雲計算發展看Serverless

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

 

 

 

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

IaaS

 

 

 

__IaaS(Infrastructure as a Service) 基礎設施即服務,__服務商提供底層/物理層基礎設施資源(服務器,數據中心,環境控制,電源,服務器機房),用戶需要通過IaaS提供的服務平台購買虛擬資源,選擇操作系統,安裝軟件,部署程序,監控應用。

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

PaaS

 

 

 

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等,客戶不需考慮任何形式的專業技術知識,只需要通過服務商平台獲取軟件使用即可。

 

 

 

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

 

 

 

大致流程如下:

UI驅動,通過模擬鼠標點擊觸發事件

當觸發事件增多時lambda實例自動擴容

當觸發事件減少時lambda實例自動縮容

阿里雲函數計算

 

 

 

流程大致如下:

UI/Event/Message Driven觸發事件

用戶Function會package為一個docker鏡像

事件調度系統配合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以及集團內的產品Sigma。無疑這些優秀的集群管理系統尤其是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容器!



作者:阿里雲雲棲社區
鏈接:https://www.jianshu.com/p/c847bc77e027
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM