摘要:導(dǎo)讀近期靈雀云技術(shù)專家邵明岐翻譯了所著的一書的部分內(nèi)容,可以說是對(duì)科普與觀察的上佳素材。的另一半是是的另一種形式,概念上容易混淆的地方在于,有時(shí)候?qū)⒆约旱姆?wù),,稱為。
導(dǎo)讀:近期靈雀云技術(shù)專家邵明岐翻譯了Mike Roberts & John Chapin所著的《What is serverless》一書的部分內(nèi)容,可以說是對(duì)Serverless科普與觀察的上佳素材。本文為第1篇,他首先通過回溯云計(jì)算的發(fā)展史,來找出是什么原因?qū)е逻M(jìn)化出了 Serverless,然后解釋 Serverless 到底為何物,最后總結(jié)為什么 Serverless 是云計(jì)算成長(zhǎng)的必然產(chǎn)物,同時(shí)也是應(yīng)用交付方式的巨大飛躍,非常值得一讀!
原著:《What is serverless : understand the latest advances in cloud and service-based architecture》
作者:Mike Roberts & John Chapin
譯文來源:深入淺出談架構(gòu)(ID:deep-easy-arch)
譯者:靈雀云邵明岐
讓我們回到2006年, 那時(shí)候還沒有 iPhone 和移動(dòng)互聯(lián)網(wǎng),Ruby on Rails 是一個(gè)非常熱門的編程框架,Web 2.0 在當(dāng)時(shí)是互聯(lián)網(wǎng)最火熱的名詞。那時(shí)候大部分應(yīng)用程序的后端服務(wù),都是運(yùn)行在托管或者自建的數(shù)據(jù)中心和物理服務(wù)器上。
云的誕生
2006年8月發(fā)生的事情將從根本上改變這種模式。 亞馬遜新的IT部門 AWS 宣布推出Elastic Compute Cloud(EC2),EC2是眾多基礎(chǔ)架構(gòu)即服務(wù)(IaaS)產(chǎn)品中的第一個(gè), IaaS允許公司租用計(jì)算資源 (主要是面向互聯(lián)網(wǎng)應(yīng)用的虛擬主機(jī)),而不是購(gòu)買自己的服務(wù)器, 它還允許人們?cè)趲追昼娭畠?nèi)就可以獲取到主機(jī)資源。 EC2的五個(gè)主要優(yōu)勢(shì)是:
1.降低人工成本
在 IaaS 出現(xiàn)之前,公司需要雇傭有專門技能的人來管理數(shù)據(jù)中心和里面的物理服務(wù)器,他們需要管理從電源和網(wǎng)絡(luò),到貨架和安裝,到修復(fù)機(jī)器的磁盤等物理問題,到設(shè)置操作系統(tǒng)(OS)。 通過IaaS,所有這些都消失了,而是都交給 IaaS 服務(wù)提供商,比如 AWS 或者阿里云。
2.降低風(fēng)險(xiǎn)
在管理自己的物理服務(wù)器時(shí),經(jīng)常會(huì)遭遇一些意外事件,比如硬件故障,從而導(dǎo)致系統(tǒng)不穩(wěn)定或者長(zhǎng)時(shí)間宕機(jī),因?yàn)橛布栴}很難預(yù)測(cè),并且可能需要很長(zhǎng)時(shí)間才能解決。 通過IaaS,客戶雖然仍需要做一些工作來對(duì)抗硬件故障發(fā)生的風(fēng)險(xiǎn),但不再需要知道如何修復(fù)硬件, 相反,可以簡(jiǎn)單地在幾分鐘內(nèi)申請(qǐng)到新機(jī)器實(shí)例,并重新安裝應(yīng)用程序,從而限制了這些問題的風(fēng)險(xiǎn)。
3.降低基礎(chǔ)設(shè)施成本
在大部分情況下,當(dāng)您考慮電源、網(wǎng)絡(luò)等成本的時(shí)候,EC2實(shí)例的成本比運(yùn)行自己的硬件便宜,尤其是當(dāng)您只想臨時(shí)需要運(yùn)行主機(jī)幾天或幾周而不是幾個(gè)月時(shí)。
4.靈活擴(kuò)展
考慮到IaaS帶來的擴(kuò)展優(yōu)勢(shì),基礎(chǔ)設(shè)施成本顯著下降,通過IaaS,公司在擴(kuò)展其運(yùn)行的服務(wù)器的數(shù)量和類型方面具有更大的靈活性, 不再需要提前幾個(gè)月預(yù)先購(gòu)買10臺(tái)高端服務(wù)器,相反,您可以從一個(gè)或兩個(gè)低功耗,廉價(jià)的實(shí)例開始,然后隨著時(shí)間的推移逐漸擴(kuò)展您的實(shí)例數(shù)量和類型。
5.交付時(shí)間短
在托管服務(wù)器的舊時(shí)代,為新應(yīng)用程序采購(gòu)和配置服務(wù)器可能需要數(shù)月時(shí)間。 如果你想出新的想法,并且希望盡快嘗試一下,在傳統(tǒng)的方式下很難辦到。 使用IaaS,交付時(shí)間從幾個(gè)月縮短到幾分鐘。
基礎(chǔ)設(shè)施外包
使用 IaaS,本質(zhì)上我們可以認(rèn)為是基礎(chǔ)設(shè)施外包的技術(shù)。 當(dāng)我們開發(fā)和運(yùn)營(yíng)軟件時(shí),我們需要做的工作大致可以分為兩類:一類是針對(duì)需求需要定制的工作。另外一類是和其他公司都差不多,比較通用的工作。
基礎(chǔ)設(shè)施就是屬于第二種,其范圍包括物理的設(shè)備,例如運(yùn)行我們機(jī)器,電路,網(wǎng)絡(luò)等,也包括一些通用的軟件功能,比如用戶認(rèn)證。
基礎(chǔ)設(shè)施外包通常可以由服務(wù)提供商(SP)提供。 例如,電力由電力供應(yīng)商提供,并且網(wǎng)絡(luò)由互聯(lián)網(wǎng)服務(wù)提供商(ISP)提供,他們通過 2 種模式來減低成本和提高效率:規(guī)?;图夹g(shù)創(chuàng)新。
規(guī)?;?/strong>
幾乎所有形式的基礎(chǔ)設(shè)施外包都通過規(guī)?;哪J絹斫档统杀?,把大量工作打包在一起批量做,成本比多帶帶一件一件做,效率大大提高。例如,AWS 可以以遠(yuǎn)低于小公司的價(jià)格購(gòu)買相同規(guī)格的服務(wù)器,因?yàn)?AWS 一次性購(gòu)買成千上萬的服務(wù)器,而不是購(gòu)買幾十臺(tái)服務(wù)器。 同樣,AWS 的每臺(tái)服務(wù)器運(yùn)營(yíng)成本遠(yuǎn)低于自建 IDC 的公司。
技術(shù)創(chuàng)新
基礎(chǔ)設(shè)施外包通常也部分歸因于技術(shù)創(chuàng)新。比如 EC2,是通過硬件虛擬化的技術(shù)來實(shí)現(xiàn)的。在IaaS出現(xiàn)之前,一些IT供應(yīng)商已經(jīng)開始允許公司來按月租用物理服務(wù)器。顯然,EC2 的按小時(shí)租用主機(jī)的方式更具吸引力,而且,虛擬化技術(shù)可以將物理服務(wù)器細(xì)分為許多更小的,快速啟動(dòng)和關(guān)閉的虛擬機(jī)(VM),這樣 IaaS 才變得可行。
基礎(chǔ)設(shè)施外包與 IaaS 的五大好處完全一致:
? 降低人工成本 :減少人員,減少維護(hù)基礎(chǔ)設(shè)施工作所需的時(shí)間;
? 降低風(fēng)險(xiǎn) :消除了一部分對(duì)特殊技能專家的需求,并且能夠獲得及時(shí)的運(yùn)營(yíng)支持能力;
? 降低資源成本 :同樣功能的成本更低;
? 提高擴(kuò)展的靈活性:可以訪問更多資源和不同類型的類似資源,而不會(huì)造成重大損失或浪費(fèi);
? 縮短交付周期:縮短從新想法到生產(chǎn)可用性的交付時(shí)間;
當(dāng)然,基礎(chǔ)設(shè)施外包也有其缺點(diǎn)和局限性,我們將在后面的部分介紹。
云計(jì)算的發(fā)展
云計(jì)算的發(fā)展是從IaaS開始的,比如EC2和AWS Simple Storage Service(S3), AWS是云計(jì)算早期的推動(dòng)者,緊隨其后的還有微軟、谷歌、阿里云等。當(dāng)我們談?wù)摗霸啤睍r(shí),我們通常指的是公共云,但是,我們也看到了私有云的市場(chǎng)發(fā)展的也不錯(cuò),比如OpenStack。
公共云之后的另外一個(gè)潮流是PaaS,Heroku是當(dāng)時(shí)最受歡迎的PaaS廠商之一, PaaS層面置于IaaS之上,將操作系統(tǒng)(OS)添加到外包的基礎(chǔ)架構(gòu)中,使用PaaS,您只需部署應(yīng)用程序,云平臺(tái)負(fù)責(zé)操作系統(tǒng)安裝、補(bǔ)丁升級(jí)、系統(tǒng)級(jí)監(jiān)控、服務(wù)發(fā)現(xiàn)等。
Heroku是公有云服務(wù),Cloud Foundry是PaaS的一個(gè)私有云版本, 由于PaaS位于現(xiàn)有虛擬化解決方案之上,因此您可以在企業(yè)內(nèi)部部署或者在IaaS公共云服務(wù)上部署“私有PaaS”,同時(shí)使用公共云和私有云通常被稱為混合云, 能夠在混合云環(huán)境中實(shí)現(xiàn)一個(gè)統(tǒng)一的PaaS平臺(tái)對(duì)企業(yè)特別有用。
在虛擬機(jī)之上使用PaaS的最新方式是使用容器,Docker在過去幾年中變得非常非常受歡迎,因?yàn)樗梢詮牟僮飨到y(tǒng)開始,更清楚地描述應(yīng)用程序的系統(tǒng)需求,而管理/編排容器的云服務(wù),通常稱為容器服務(wù)(CaaS),比如Google的Container Engine和AWS的ECS。 一些私有云的CaaS是Kubernetes和Mesos,您也可以把它們搭建在公共IaaS或者私有IaaS之上運(yùn)行。
就像IaaS一樣,PaaS和CaaS都是基礎(chǔ)設(shè)施外包的另外一種更加高級(jí)的形式,它們和IaaS的主要不同之處是,有更高級(jí)別的抽象性,允許我們將運(yùn)行應(yīng)用的更多技術(shù)細(xì)節(jié)交給云平臺(tái),因此,PaaS和CaaS帶給我們的好處,與我們之前列出的IaaS的五個(gè)好處完全一樣,所以,我們可以將所有這三個(gè)(IaaS,PaaS,CaaS)組合為計(jì)算即服務(wù)(Compute as a Service)。
Serverless時(shí)代到來
前面解釋了半天云計(jì)算的發(fā)展史,主要就是想引入主題——Serverless。它將會(huì)是云計(jì)算演進(jìn)的下一個(gè)重要技術(shù),也是另外一種形式的基礎(chǔ)設(shè)施外包,它同樣具有我們已經(jīng)看到的云計(jì)算的五大優(yōu)勢(shì),云廠商同樣也是通過規(guī)模化和技術(shù)創(chuàng)新來提供這些優(yōu)勢(shì)。
Serverless 并不等于 FaaS
大部分人開始了解Serverless時(shí),會(huì)有一個(gè)誤區(qū),以為Serverless就是FaaS,比如AWS的Lambda,Google的Cloud Function。但深入研究就會(huì)發(fā)現(xiàn),Serverless實(shí)際上涵蓋了一系列技術(shù),我們將這些技術(shù)分為兩類:Backend as a Service(BaaS)和Functions as a Service(FaaS),所以,簡(jiǎn)單來說Serverless=BaaS+FaaS。
BaaS
BaaS就是用現(xiàn)成的第三方服務(wù)替換原來自己編碼實(shí)現(xiàn)或者自己搭建的服務(wù)器端組件,它在概念上更接近于Software as a Service(SaaS),不同之處在于SaaS通常是關(guān)于外包業(yè)務(wù)流程,比如人力資源或銷售工具,或者像Github這樣的服務(wù)技術(shù)工作者的產(chǎn)品。然而對(duì)于BaaS來說,實(shí)際上是將應(yīng)用程序分解成更小的組件,并將其中一部分組件用第三方提供的服務(wù)來完成,這個(gè)第三方服務(wù)通常就叫做BaaS。
BaaS服務(wù)是通過API遠(yuǎn)程調(diào)用的組件,而不是SDK,或者Library,我們通過遠(yuǎn)程API的調(diào)用,來完成應(yīng)用程序的一部分功能。這里有一個(gè)很好的例子是身份驗(yàn)證,許多應(yīng)用程序通過自己的代碼來實(shí)現(xiàn)注冊(cè)、登錄、密碼管理等功能,但是這些代碼在很多應(yīng)用程序中非常相似,同樣的事情無數(shù)的公司和團(tuán)隊(duì)做過了無數(shù)遍,已經(jīng)非常成熟了,可以把它們抽象出來變成一個(gè)第三方公共服務(wù)再好不過,這正是Auth0和亞馬遜的Cogono等產(chǎn)品的目標(biāo),這兩種產(chǎn)品都允許任何人,不需要寫一行代碼的情況,就可以在移動(dòng)應(yīng)用程序和Web應(yīng)用程序上實(shí)現(xiàn)非常完善的身份驗(yàn)證和用戶管理功能。
BaaS最早的時(shí)候,在移動(dòng)應(yīng)用程序開發(fā)中特別受歡迎,一開始人們甚至把它叫做Mobile Backend as a Service(MBaaS),但是實(shí)際上,BaaS除了被用作移動(dòng)應(yīng)用的后端服務(wù)之外,還可以應(yīng)用到非常多的場(chǎng)景,比如我們可以不需要自己搭建和維護(hù)Mysql實(shí)例,而是使用亞馬遜的RDS服務(wù),或者可以用Kinesis替換自己搭建和管理的Kafka消息隊(duì)列,其他數(shù)據(jù)基礎(chǔ)設(shè)施服務(wù)包括文件系統(tǒng)、對(duì)象存儲(chǔ)和數(shù)據(jù)倉(cāng)庫(kù)、語音分析、以及我們之前提到的身份驗(yàn)證,這些服務(wù)都是BaaS,都可以作為一個(gè)應(yīng)用的后端服務(wù)的一部分。
FaaS
Serverless的另一半是FaaS, FaaS是Compute as a Service的另一種形式,概念上容易混淆的地方在于,AWS有時(shí)候?qū)⒆约旱腇aaS服務(wù),Lambda,稱為Serverless Compute。
FaaS是一種構(gòu)建和部署服務(wù)器端軟件的新方法,只不過粒度更細(xì),能夠獨(dú)立的部署某一個(gè)函數(shù),許多人認(rèn)為Serverless就是FaaS,但是實(shí)際上并不完全正確。
我們通過傳統(tǒng)方式部署服務(wù)器端軟件時(shí),從主機(jī)實(shí)例開始,通常是虛擬機(jī)(VM)實(shí)例或容器(參見下圖), 然后我們?cè)谥鳈C(jī)中部署應(yīng)用程序,如果主機(jī)是VM或容器,那么應(yīng)用程序是一個(gè)操作系統(tǒng)進(jìn)程, 通常我們的應(yīng)用程序中的代碼實(shí)現(xiàn)了一些不同功能的操作,例如,Web服務(wù)提供檢索和更新資源的操作。
FaaS改變了這種部署模式(如下圖), 部署模型中少了主機(jī)實(shí)例和應(yīng)用程序進(jìn)程,我們只關(guān)注實(shí)現(xiàn)應(yīng)用程序邏輯的各個(gè)操作和函數(shù),將這些函數(shù)代碼多帶帶上傳到云供應(yīng)商提供的FaaS平臺(tái)。
但是,這些函數(shù)在云服務(wù)托管的服務(wù)器進(jìn)程中缺省處于空閑狀態(tài),直到需要它們運(yùn)行的時(shí)候才會(huì)被激活(如下圖), 通過配置FaaS平臺(tái)來監(jiān)聽每個(gè)函數(shù)的激活事件。 當(dāng)該事件發(fā)生時(shí),F(xiàn)aaS平臺(tái)實(shí)例化函數(shù),然后使用觸發(fā)事件調(diào)用它。
一旦該函數(shù)執(zhí)行結(jié)束了,理論上FaaS平臺(tái)可以銷毀掉實(shí)例,不過,通常為了優(yōu)化性能,會(huì)將函數(shù)實(shí)例保留一段時(shí)間,可以被下一個(gè)事件復(fù)用。
FaaS本質(zhì)上是一種事件驅(qū)動(dòng)的模型,除了提供托管和執(zhí)行代碼的平臺(tái)之外,F(xiàn)aaS平臺(tái)還集成了各種同步和異步事件源,HTTP API網(wǎng)關(guān)就是一種同步事件源,消息總線、對(duì)象存儲(chǔ)或類似于(cron)的定時(shí)器就是一種異步源。
AWS在2014年就推出了Lambda,到目前為止成熟度和接受度已經(jīng)獲得大幅的提高,一些公司每天在使用Lambda處理數(shù)十億的事件,到目前為止,Lambda集成了超過20種不同類型的事件源,可以支持各種不同類型的應(yīng)用程序。
除了AWS Lambda之外,還有其他一些來自Microsoft,IBM,Google廠商的商業(yè)FaaS產(chǎn)品,正如我們之前討論的各種其他計(jì)算即服務(wù)平臺(tái)(IaaS,PaaS,CaaS)一樣,也有可以運(yùn)行在私有云上開源FaaS項(xiàng)目,私有的FaaS領(lǐng)域目前比較早期,沒有絕對(duì)的領(lǐng)先者,一些比較活躍的項(xiàng)目有OpenWhisk、Fission、IronFuncions、Serverless、Nuclio等。
為什么FaaS和BaaS都叫Serverless?
從表面上看,BaaS和FaaS完全不同,BaaS是托管應(yīng)用程序的一部分依賴組件,F(xiàn)aaS托管應(yīng)用程序的代碼,那么為什么我們把它們放在一起,都叫做Serverless呢?
這里的關(guān)鍵就是不需要管理自己的服務(wù)器主機(jī)或服務(wù)器進(jìn)程,完全使用Serverless架構(gòu)的應(yīng)用程序,將不再需要考慮服務(wù)器或者進(jìn)程,應(yīng)用程序的所有邏輯。無論您是自己編寫的,還是與第三方服務(wù)集成的部分,都運(yùn)行在完全彈性的環(huán)境中,狀態(tài)也采用以類似彈性的形式存儲(chǔ),無服務(wù)器并不意味著服務(wù)器已經(jīng)消失,這只是意味著著您不再需要關(guān)心它們了。
Serverless帶給云計(jì)算的重大變化
在云計(jì)算過去十年的發(fā)展中,我們已經(jīng)將應(yīng)用程序的運(yùn)行環(huán)境和通用組件,越來越多的外包給云廠商。Serverless也同樣符合這一趨勢(shì),主機(jī)管理、操作系統(tǒng)管理、資源分配、擴(kuò)展、甚至應(yīng)用邏輯的整個(gè)組件,都外包給云廠商,在成本和運(yùn)營(yíng)效率方面獲得了顯著的提升。
但是,在應(yīng)用程序架構(gòu)方面,Serverless有很大的變化。之前的云計(jì)算服務(wù),并沒有從根本上改變?cè)O(shè)計(jì)應(yīng)用程序的方式,例如,當(dāng)使用Docker這樣的工具時(shí),我們?cè)趹?yīng)用程序周圍放置了一個(gè)更薄的“盒子”,但它仍然是一個(gè)盒子,邏輯架構(gòu)不會(huì)發(fā)生顯著的變化,在云中托管MySQL實(shí)例時(shí),我們?nèi)匀恍枰紤]工作負(fù)載所需的虛擬機(jī)資源,而且仍需要考慮故障切換。
這種情況隨著Serverless而發(fā)生變化,并且是非常大的變化,F(xiàn)aaS本質(zhì)上是和傳統(tǒng)架構(gòu)非常不一樣的架構(gòu)類型——事件驅(qū)動(dòng)模型。它的部署方式更加細(xì)粒度,以及需要將狀態(tài)保存到FaaS組件之外,BaaS使我們無需編寫完整的邏輯組件,但需要將應(yīng)用程序與云廠商提供的特定接口和模型集成。
那么,Serverless的應(yīng)用程序架構(gòu)到底有什么不同之處,它看起來到底長(zhǎng)什么樣子? 這是我們接下來要討論的內(nèi)容。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/25503.html
摘要:前端框架總是帶入后端思維,而則是把前端思維帶入了后端運(yùn)維。前端同學(xué)對(duì)應(yīng)該尤為激動(dòng)。而帶來了進(jìn)一步優(yōu)化的空間。當(dāng)服務(wù)器面臨攻擊重啟磁盤故障時(shí),打開復(fù)雜的工作臺(tái)或登陸后一通操作才能恢復(fù)。 1. 引言 Serverless 是一種 無服務(wù)器架構(gòu),讓用戶無需關(guān)心程序運(yùn)行環(huán)境、資源及數(shù)量,只要將精力 Focus 到業(yè)務(wù)邏輯上的技術(shù)。 現(xiàn)在公司已經(jīng)實(shí)現(xiàn) DevOps 化,正在向 Serverles...
摘要:年月,騰訊云宣布推出總價(jià)值超過億元的小程序云開發(fā)資源扶持計(jì)劃,對(duì)超過一百萬個(gè)小程序開發(fā)者提供免費(fèi)資源扶持,全面助力開發(fā)者打造優(yōu)秀小程序。 『 作為一個(gè)不斷發(fā)展的新興技術(shù), Serverless 熱度的制高點(diǎn)已然到來?!?或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價(jià)值超過億元的小程序云開發(fā)資源扶持計(jì)劃,對(duì)超過一百萬個(gè)小程序開發(fā)者提供免費(fèi)資源扶持,全面助力開發(fā)者打造優(yōu)秀小程序。 『 作為一個(gè)不斷發(fā)展的新興技術(shù), Serverless 熱度的制高點(diǎn)已然到來。』 或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價(jià)值超過億元的小程序云開發(fā)資源扶持計(jì)劃,對(duì)超過一百萬個(gè)小程序開發(fā)者提供免費(fèi)資源扶持,全面助力開發(fā)者打造優(yōu)秀小程序。 『 作為一個(gè)不斷發(fā)展的新興技術(shù), Serverless 熱度的制高點(diǎn)已然到來?!?或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度。 showI...
摘要:年月,騰訊云宣布推出總價(jià)值超過億元的小程序云開發(fā)資源扶持計(jì)劃,對(duì)超過一百萬個(gè)小程序開發(fā)者提供免費(fèi)資源扶持,全面助力開發(fā)者打造優(yōu)秀小程序。 『 作為一個(gè)不斷發(fā)展的新興技術(shù), Serverless 熱度的制高點(diǎn)已然到來?!?或許,Google Trends 所顯示的 3 年猛增 20 倍的 Serverless 搜索量,可以佐證 Serverless 在整個(gè)行業(yè)中的火爆程度。 showI...
閱讀 2804·2021-09-01 10:30
閱讀 1691·2019-08-30 15:52
閱讀 983·2019-08-29 18:40
閱讀 1138·2019-08-28 18:30
閱讀 2407·2019-08-23 17:19
閱讀 1335·2019-08-23 16:25
閱讀 2715·2019-08-23 16:18
閱讀 2992·2019-08-23 13:53