做者 | 楊澤強(竹澗)阿里雲技術專家html
提及當前最火的技術,除了最新的區塊鏈、AI,還有一個不得不提的概念是 Serverless。Serverless 做爲一種新型的互聯網架構,直接或間接推進了雲計算的發展,從 AWS Lambda 到阿里雲函數計算,Serverless 一路高歌,同時基於 Serverless 的輕量計算開始登陸雲計算的舞臺,本文將從兩個部分展開:docker
前文講到 Serverless 是一種新型的互聯網架構,目前尚沒有官方權威的定義,能夠認爲:數據庫
Serverless 無服務器架構是基於互聯網的系統,其中應用開發不使用常規的服務進程。相反,它們僅依賴於第三方服務(例如 AWS Lambda 服務),客戶端邏輯和服務託管遠程過程調用的組合。編程
AWS Lambda 做爲 Serverless 最先的框架產品,在 2014 年由亞馬遜推出,但最先的 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 開始正式走向雲計算的舞臺。app
在 AWS 發佈 Lambda 以後,衆多 IaaS 及 Pass 廠商爭相入市,Google Cloud Functions, Azure Funcions, IBM OpenWhisk,阿里雲函數計算,短短數年時間 Serverless 產品已遍地開花。負載均衡
隨着容器技術、IoT、5G、區塊鏈等技術的快速發展, 技術上對去中心化,輕量虛擬化,細粒度計算等技術需求愈發強烈,而 Serverless 必將借勢迅速發展,將來 Serverless 將在雲計算的舞臺上大放異彩!框架
首先,拋一個總結性觀點:雲計算的發展從IaaS、PaaS、SaaS,到最新的 BaaS、FasS,在這個趨勢中 serverless (去服務器化)愈來愈明顯,而 Serveless 的完善帶給雲計算將會是一次完美進化!
衆所周知,雲計算經歷了從 IDC -> IaaS -> PaaS -> Serverless/FaaS 的發展歷程,下面對這些概念作一些基本介紹。
IaaS(Infrastructure as a Service) 基礎設施即服務,服務商提供底層/物理層基礎設施資源(服務器,數據中心,環境控制,電源,服務器機房),用戶須要經過 IaaS 提供的服務平臺購買虛擬資源,選擇操做系統、安裝軟件、部署程序、監控應用。
目前知名的 IaaS 平臺有 AWS、Azure、Google Cloud Plantform、阿里雲以及開源的 OpenStack 等。
PaaS (Platform as a Service) 平臺即服務,服務商提供基礎設施底層服務,提供操做系統(Windows,Linux)、數據庫服務器、Web 服務器、負載均衡器和其餘中間件,相對於 IaaS 客戶僅僅須要本身控制上層的應用程序部署與應用託管的環境。
目前知名的 PaaS 平臺有 Amazon Elastic Beanstalk,Azure,Google App Engine,VMware Cloud Foundry 等。
SaaS (Software as a Service) 軟件即服務, 服務商提供基於軟件的解決方案,如 OA、CRM、MIS、ERP、HRM、CM、Office 36五、iCloud 等,客戶不需考慮任何形式的專業技術知識,只須要經過服務商平臺獲取軟件使用便可。
BaaS (Backend as a Service) 後端即服務,服務商爲客戶(開發者)提供整合雲後端的服務,如提供文件存儲、數據存儲、推送服務、身份驗證服務等功能,以幫助開發者快速開發應用。
FaaS (Function as a Service) 函數即服務,服務商提供一個平臺,容許客戶開發、運行和管理應用程序功能,而無需構建和維護基礎架構。 按照此模型構建應用程序是實現「無服務器」體系結構的一種方式,一般在構建微服務應用程序時使用。
舉個例子,好比小明想開一個水果店:
從 IDC → IaaS,用戶不用關注真實的物理資源。
從 IaaS → PaaS,用戶再也不關注操做系統,數據庫,中間件等基礎軟件。
從 PaaS → BaaS/FaaS, 用戶能夠不多甚至不用關注 backend,app 能夠簡化爲一個單頁面程序。
能夠說,Serverless 是雲計算髮展到必定階段的必然產物,雲計算做爲普惠科技,發展到最後必定是綠色科技(最大程度利用資源,減小空閒資源浪費)、大衆科技(成本低,包括學習成本及使用成本)的產品,而 Serverless 將很好的詮釋這些!
Serverless 是基於事件驅動的編程範型,其底層的計算平臺通常爲輕量計算,好比容器計算 Docker。
針對該模型本文再也不贅述, 下面以 AWS Lambda 及阿里雲函數計算爲例,簡單介紹該模型。
大體流程以下:
流程大體以下:
Serverless/FaaS 區別於 IaaS/PaaS 預先分配計算資源的計費方式,其計費方式一般是按請求次數及運行時間,一方面能夠最大程度利用資源,另外一方面真正的按需計費下降用戶的資源成本。
Serverless 架構一個顯而易見的優勢即「橫向擴展是徹底自動的、有彈性的、且由服務提供者所管理」。
據統計,商業和企業數據中心的典型服務器僅提供 5%~15% 的平均最大處理能力的輸出,本質上這是對社會資源的一種浪費。而在 Serverless 架構下,提供商將提供更細力度的計算能力,最大限度知足實時需求,資源利用率將大幅度提高,能夠認爲相對 IaaS 與 PaaS,Serverless/FaaS 是一種 「綠色」 計算。
運維的發展經歷了人肉運維、自動化運維、DevOps、AiOps 等,而 Serverless 帶來一種新的運維模式,這種模式下用戶須要管理的只有 Code 能夠認爲 NoOps。
事件驅動以及響應式架構
流量突發場景
目前主流的 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 生態的概念及現狀,從當前主流的 Serverless/FaaS 框架,如 AWS Lambda、IBM OpenWhisk、Iron.io、阿里雲函數計算分析來看,其底層的計算資源一般是 Docker 容器。能夠認爲 Serverless 構建於容器 (Docker) 之上!
Serverless Container(無服務器容器),意味着用戶再也不須要關注容器集羣和服務器,只需關注 Docker 容器或者 Docker Image 便可。
經過分析業界主流的的 Serverless Container 產品如 AWS Fargate, Azure ACI, 華爲 CCI,能夠看出:
Kuberntes (K8s) 是谷歌開源的容器管理系統,相似的產品還有 Docker Swarm、Apache Mesos。這些優秀的集羣管理系統,尤爲是 K8s 已經在生成獲得了充分驗證,從使用角度來講,K8s 須要用戶具有容器及容器編排、集羣管理等多方面的專業知識,而 Serverless Container 對用戶屏蔽了容器集羣管理,用戶使用起來將更簡單!
結論:Serverless Container 在容器產品形態上是高於 Kubernetes 的,事實上大部分的 Serverless Container 產品都基於或者兼容 Kubernetes。
根據上文的分析:
結論:FaaS 及 Serverless Container 的底層計算資源都是 Docker 容器!
本文爲雲棲社區原創內容,未經容許不得轉載。