小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

費良宏 | 從IaaS到FaaS:Serverless架構(gòu)的前世今生

 昵稱34195792 2018-01-14

前言


Serverless(無服務(wù)器)架構(gòu)的提出與云計算密不可分。由于其優(yōu)點突出,故而發(fā)展極為迅猛。今天,我們就邀請亞馬遜AWS首席云計算技術(shù)顧問費良宏老師,為大家解讀Serverless架構(gòu)的的前世今生。

費良宏

亞馬遜AWS首席云計算技術(shù)顧問

在過去的20多年他一直從事軟件架構(gòu)、程序開發(fā)以及技術(shù)推廣等領(lǐng)域的工作。他的興趣主要是研究軟件架構(gòu)的演進(jìn),尤其是云計算方面的架構(gòu)實踐。費良宏經(jīng)常在各類技術(shù)會議上發(fā)表演講進(jìn)行分享,他還是多個技術(shù)社區(qū)的熱心參與者。他擅長Web領(lǐng)域應(yīng)用、移動應(yīng)用以及機器學(xué)習(xí)等的開發(fā),也從事過多個大型軟件項目的設(shè)計、開發(fā)與項目管理。目前他專注與云計算以及互聯(lián)網(wǎng)等技術(shù)領(lǐng)域,致力于幫助中國的開發(fā)者構(gòu)建基于云計算的新一代的互聯(lián)網(wǎng)應(yīng)用。

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

什么是Serverless

如同許多新的概念一樣,Serverless目前還沒有一個普遍公認(rèn)的權(quán)威的定義。最新的一個定義是這樣描述的:“無服務(wù)器架構(gòu)是基于互聯(lián)網(wǎng)的系統(tǒng),其中應(yīng)用開發(fā)不使用常規(guī)的服務(wù)進(jìn)程。相反,它們僅依賴于第三方服務(wù)(例如AWS Lambda服務(wù)),客戶端邏輯和服務(wù)托管遠(yuǎn)程過程調(diào)用的組合?!?/p>

 

最開始,“無服務(wù)器”架構(gòu)試圖幫助開發(fā)者擺脫運行后端應(yīng)用程序所需的服務(wù)器設(shè)備的設(shè)置和管理工作。這項技術(shù)的目標(biāo)并不是為了實現(xiàn)真正意義上的“無服務(wù)器”,而是指由第三方云計算供應(yīng)商負(fù)責(zé)后端基礎(chǔ)結(jié)構(gòu)的維護(hù),以服務(wù)的方式為開發(fā)者提供所需功能,例如數(shù)據(jù)庫、消息,以及身份驗證等。簡單地說,這個架構(gòu)的就是要讓開發(fā)人員關(guān)注代碼的運行而不需要管理任何的基礎(chǔ)設(shè)施。程序代碼被部署在諸如AWS Lambda這樣的平臺之上,通過事件驅(qū)動的方法去觸發(fā)對函數(shù)的調(diào)用。很明顯,這是一種完全針對程序員的架構(gòu)技術(shù)。其技術(shù)特點包括了事件驅(qū)動的調(diào)用方式,以及有一定限制的程序運行方式,例如AWS Lambda的函數(shù)的運行時間默認(rèn)為3秒到5分鐘。從這種架構(gòu)技術(shù)出現(xiàn)的兩年多時間來看,這個技術(shù)已經(jīng)有了非常廣泛的應(yīng)用,例如移動應(yīng)用的后端和物聯(lián)網(wǎng)應(yīng)用等。簡而言之,無服務(wù)器架構(gòu)的出現(xiàn)不是為了取代傳統(tǒng)的應(yīng)用。然而,從具有高度靈活性的使用模式及事件驅(qū)動的特點出發(fā),開發(fā)人員/架構(gòu)師應(yīng)該重視這個新的計算范例,它可以幫助我們達(dá)到減少部署、提高擴展性并減少代碼后面的基礎(chǔ)設(shè)施的維護(hù)負(fù)擔(dān)。

Serverless的歷史

Serverless這個概念并不容易理解。乍見之下,很容易讓人混淆硬件服務(wù)器及軟件上的服務(wù)與其所謂的“服務(wù)器”差別。在這里強調(diào)的所謂“無服務(wù)器”指的是我們的代碼不會明確地部署在某些特定的軟件或者硬件的服務(wù)器上。運行代碼托管的環(huán)境是由諸如AWS這樣的云計算廠商所提供的。

 

Serverless這個詞第一次被使用大約是2012年由Ken Form所寫的一篇名為《Why The Future of Software and Apps is Serverless》的文章。這篇文章談到的內(nèi)容是關(guān)于持續(xù)集成及源代碼控制等內(nèi)容,并不是我們今天所特指的這一種架構(gòu)模式。但Amazon在2014年發(fā)布的AWS Lambda讓“Serverless”這一范式提高到一個全新的層面,為云中運行的應(yīng)用程序提供了一種全新的系統(tǒng)體系結(jié)構(gòu)。至此再也不需要在服務(wù)器上持續(xù)運行進(jìn)程以等待HTTP請求或API調(diào)用,而是可以通過某種事件機制觸發(fā)代碼的執(zhí)行,通常這只需要在AWS的某臺服務(wù)器上配置一個簡單的功能。此后Ant Stanley 在2015年7月的名為《Server are Dead…》的文章中更是圍繞著AWS Lambda及剛剛發(fā)布的AWS API Gateway這兩個服務(wù)解釋了他心目中的Serverless,“Server are dead…they just don't know it yet”。到了2015年10月份,在那一年的AWS re:Invent大會上,Serverless的這個概念更是反復(fù)出現(xiàn)在了很多場合。印象中就包括了“(ARC308)The Serverless Company Using AWS Lambda”及“(DVO209)JAWS: The Monstrously Scalable Serverless Framework”這些演講當(dāng)中。隨著這個概念的進(jìn)一步發(fā)酵,2016年10月在倫敦舉辦了第一屆的Serverlessvconf。在兩天時間里面,來自全世界40多位演講嘉賓為開發(fā)者分享了關(guān)于這個領(lǐng)域進(jìn)展。

 

在Serverless的世界里面,AWS扮演了一個非常重要的角色。但是AWS并不是唯一的Serverless架構(gòu)服務(wù)的供應(yīng)商。其他廠商,例如Google Cloud Functions、Microsoft Azure Functions、IBM OpenWhisk、Iron.io和Webtask等各種開源平臺都提供了類似的服務(wù)。

Serverless與FaaS

微服務(wù)(MicroService)是軟件架構(gòu)領(lǐng)域業(yè)另一個熱門的話題。如果說微服務(wù)是以專注于單一責(zé)任與功能的小型功能塊為基礎(chǔ),利用模組化的方式組合出復(fù)雜的大型應(yīng)用程序,那么我們還可以進(jìn)一步認(rèn)為Serverless架構(gòu)可以提供一種更加“代碼碎片化”的軟件架構(gòu)范式,我們稱之為Function as a Services(FaaS)。而所謂的“函數(shù)”(Function)提供的是相比微服務(wù)更加細(xì)小的程序單元。例如,可以通過微服務(wù)代表為某個客戶執(zhí)行所有CRUD操作所需的代碼,而FaaS中的“函數(shù)”可以代表客戶所要執(zhí)行的每個操作:創(chuàng)建、讀取、更新,以及刪除。當(dāng)觸發(fā)“創(chuàng)建賬戶”事件后,將通過AWS Lambda函數(shù)的方式執(zhí)行相應(yīng)的“函數(shù)”。從這一層意思來說,我們可以簡單地將Serverless架構(gòu)與FaaS概念等同起來。

FaaS與PaaS的比較

乍看起來,F(xiàn)aaS與PaaS的概念在某些方面有許多相似的地方。人們甚至認(rèn)為FaaS就是另一種形式的PaaS。但是Intent Media的工程副總裁Mike Roberts有自己的不同看法:“大部分PaaS應(yīng)用無法針對每個請求啟動和停止整個應(yīng)用程序,而FaaS平臺生來就是為了實現(xiàn)這樣的目的。”

 

FaaS和PaaS在運維方面最大的差異在于縮放能力。對于大部分PaaS平臺,用戶依然需要考慮縮放。但是對于FaaS應(yīng)用,這種問題完全是透明的。就算將PaaS應(yīng)用設(shè)置為自動縮放,依然無法在具體請求的層面上進(jìn)行縮放,而FaaS應(yīng)用在成本方面效益就高多了。AWS云架構(gòu)戰(zhàn)略副總裁Adrian Cockcroft曾經(jīng)針對兩者的界定給出了一個簡單的方法:“如果你的PaaS能夠有效地在20毫秒內(nèi)啟動實例并運行半秒,那么就可以稱之為Serverless”。

Serverless架構(gòu)的優(yōu)點

降低運營成本

Serverless是非常簡單的外包解決方案。它可以讓您委托服務(wù)提供商管理服務(wù)器、數(shù)據(jù)庫和應(yīng)用程序甚至邏輯,否則您就不得不自己來維護(hù)。由于這個服務(wù)使用者的數(shù)量會非常龐大,于是就會產(chǎn)生規(guī)模經(jīng)濟效應(yīng)。在降低成本上包含了兩個方面,即基礎(chǔ)設(shè)施的成本和人員(運營/開發(fā))的成本。

降低開發(fā)成本

IaaS和PaaS存在的前提是,服務(wù)器和操作系統(tǒng)管理可以商品化。Serverless作為另一種服務(wù)的結(jié)果是整個應(yīng)用程序組件被商品化。

擴展能力

Serverless架構(gòu)一個顯而易見的優(yōu)點即“橫向擴展是完全自動的、有彈性的、且由服務(wù)提供者所管理”。從基本的基礎(chǔ)設(shè)施方面受益最大的好處是,您只需支付您所需要的計算能力。

更簡單的管理

Serverless架構(gòu)明顯比其他架構(gòu)更簡單。更少的組件,就意味著您的管理開銷會更少。

“綠色”的計算

按照《福布斯》雜志的統(tǒng)計,在商業(yè)和企業(yè)數(shù)據(jù)中心的典型服務(wù)器僅提供5%~15%的平均最大處理能力的輸出。這無疑是一種資源的巨大浪費。隨著Serverless架構(gòu)的出現(xiàn),讓服務(wù)提供商提供我們的計算能力最大限度滿足實時需求。這將使我們更有效地利用計算資源。

Serverless的架構(gòu)范式

移動應(yīng)用后臺Serverless參考架構(gòu)如圖2所示。

圖2  移動應(yīng)用后臺Serverless參考架構(gòu)

實時文件處理Serverless參考架構(gòu)如圖3所示。

圖3  實時文件處理Serverless參考架構(gòu)

Web應(yīng)用Serverless參考架構(gòu)如圖4所示。

圖4  Web應(yīng)用Serverless參考架構(gòu)

物聯(lián)網(wǎng)應(yīng)用后臺參考架構(gòu)如圖5所示。

圖5  物聯(lián)網(wǎng)應(yīng)用后臺參考架構(gòu)

實時流處理Serverless參考架構(gòu)如圖6所示。

圖6  實時流處理Serverless參考架構(gòu)

美麗新世界

技術(shù)上不可能有應(yīng)用程序可以不依賴于服務(wù)器,必須要有某種硬件來支持應(yīng)用程序。但是以AWS Lambda為代表的Serverless架構(gòu)可以使得開發(fā)人員專注于程序功能本身,而讓AWS處理與服務(wù)器部署、存儲和數(shù)據(jù)庫相關(guān)的所有復(fù)雜性工作。這聽起來很簡單,但是實現(xiàn)起來卻并不簡單。這種新的架構(gòu)打破了人們的習(xí)慣思維,它讓服務(wù)器不可見,并提供了一個極具成本效益的服務(wù)。


Serverless架構(gòu)僅有兩年的歷史,仍處于起步階段。未來,這個領(lǐng)域還會有更大的進(jìn)步,這將是非常有趣的。它給所有開發(fā)人員帶來的是軟件架構(gòu)和應(yīng)用程序部署的美麗新世界。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多