很多使用DevOps的企業(yè)在見證了一些積極改變之后,發(fā)現(xiàn)自己仍在高度敏捷的應(yīng)用開發(fā)與仍然笨重的IT運(yùn)維之間掙扎。那么事件驅(qū)動型的計(jì)算能否跨越這道鴻溝呢?
在事件驅(qū)動的世界里,用戶行為、感應(yīng)器或者其他應(yīng)用或服務(wù)的消息都會觸發(fā)工作(流)。這和目前主流的預(yù)定義了一系列要執(zhí)行步驟的程序性編程模型大不相同。
坐落在紐約的一家在線求職網(wǎng)站W(wǎng)ayUp的DevOps架構(gòu)師Jonathan Eunice說:“這簡直就是顛覆了世界。使用程序性編程的時(shí)候,程序驅(qū)動了一切;使用事件驅(qū)動編程的時(shí)候,用戶、結(jié)果以及事件驅(qū)動了一切。”
在最近的幾年,許多云計(jì)算供應(yīng)商開始提供基于事件的自動化服務(wù)。最著名的要數(shù)Amazon Web Services(AWS)的Lambda了,用戶可以在不需要提供服務(wù)器的前提下使用它運(yùn)行代碼。業(yè)界專家相信這種事件驅(qū)動型的服務(wù)可以讓現(xiàn)在的軟件開發(fā)更加敏捷,反應(yīng)更快速并達(dá)到自動化基礎(chǔ)架構(gòu)運(yùn)維。這會使DevOps的天秤達(dá)到一定平衡。
StackStorm是一家事件驅(qū)動軟件制造商,該公司很自豪在自己的客戶(如Netflix)中扮演著很重要的角色。該公司CEO Evan Powell說:“‘事件驅(qū)動型計(jì)算’對于生產(chǎn)力需要提升的公司來說是很基礎(chǔ)的,他們的廠家會告訴他們,‘嘿,快使用Agile吧!’,但是只要運(yùn)維并沒有以Agile方式運(yùn)行,Agile還是遠(yuǎn)遠(yuǎn)不夠的。
Powell還指出,在當(dāng)今閉環(huán)的自動化過程中,使用軟件代碼片段來做基礎(chǔ)架構(gòu)的自動化允許用戶在現(xiàn)實(shí)環(huán)境中開發(fā)應(yīng)用和管理他們的資源時(shí)候更加具有生產(chǎn)力,更加Agile。
Power說:“我想這就是缺失的部分。”
事件驅(qū)動在起作用將自動化產(chǎn)品引入到生產(chǎn)環(huán)境中的IT專家會很同意這個(gè)評價(jià)的。
Seamus James是在線服裝零售商Bentabrand的軟件工程師,他表示,“好的程序員并不總是好的服務(wù)器管理員。”
“我們不希望他們陷于服務(wù)器管理的困難之中。Amazon和Lambda在剔除這些困難,讓程序員專注于寫程序,畢竟這才是我們應(yīng)該做的事情。”
事件驅(qū)動的自動化也讓人力很難實(shí)現(xiàn)的大型計(jì)算資源管理變得更加容易。舉個(gè)例子,Betabrand第一次使用Lambda也是因?yàn)殇N售的合伙企業(yè)擁有一個(gè)很受歡迎的游戲博客,博客產(chǎn)生的流量將Betabrand網(wǎng)站背后的以傳統(tǒng)托管環(huán)境搭建的服務(wù)器沖垮了。
James說:“這個(gè)事情對我們的服務(wù)器造成了損傷,并宕機(jī)了大概20秒。”
與此同時(shí),James和他的團(tuán)隊(duì)將Jaws平臺(現(xiàn)在改名為Serverless了)部署在AWS Lambda函數(shù)上,使用Simple Storage Service(S3),并且利用命令行接口將所有可以Lambda自動化的部分綁在了一起。Betabrand使用這種框架徹底檢查它的Web架構(gòu)來適應(yīng)流量高峰。
具體來說,Betabrand需要做的第一步是將公司頁面設(shè)計(jì)拆解成托管在S3上的靜態(tài)網(wǎng)頁。
然后,為了在某些產(chǎn)品變得可用的時(shí)候通知對這些產(chǎn)品感興趣的用戶,Betabrand設(shè)置了Lambda函數(shù)來收集郵箱地址,并將這些郵箱地址添加到DynamoDB數(shù)據(jù)庫中。這樣子Betabrand可以在網(wǎng)頁達(dá)到了百萬級獨(dú)立用戶訪問的時(shí)候捕獲銷售頭羊,而不至于將服務(wù)器弄垮。
James說:“沒有比配置這個(gè)更簡單的了。”再加上Amazon的免費(fèi)服務(wù)之后,初始的費(fèi)用只需要7美分。
James說:“如果加上了S3帶寬費(fèi)用的話,這個(gè)價(jià)格會上升到200美金。如果同橫向擴(kuò)張Web服務(wù)器來達(dá)到同樣帶寬對比的話,這是微不足道的。”
VidRoll是亞馬遜的另一個(gè)客戶。該公司使用事件驅(qū)動型計(jì)算來滿足大型基礎(chǔ)架構(gòu)的管理。在公司的技術(shù)計(jì)算平臺上每個(gè)月都需要處理數(shù)百萬的事件,而且這個(gè)數(shù)字還在增長。剛開始每個(gè)月處理40億數(shù)據(jù)點(diǎn);在今年的六個(gè)星期內(nèi),這個(gè)數(shù)字上升到400億;幾個(gè)星期后,達(dá)到了2000億。
VidRoll的CTO James Young在Lambda的beta版本的時(shí)候已經(jīng)開始使用Lambda了,他說:“如果你需要加速服務(wù)器并且管理所有高峰的流量,那么你會很難管理大范圍的網(wǎng)絡(luò)影響。”在幾個(gè)月的時(shí)間內(nèi),他們4個(gè)人組成的公司已經(jīng)步入正軌,并且能每個(gè)月處理400億事件。
Young說:“使用Lambda可以讓我們并不需要擔(dān)心如何讓服務(wù)器一直保持可用的狀態(tài)。”因?yàn)楣こ處熆梢酝ㄟ^他們的代碼很快地把問題解決,而不需要協(xié)調(diào)開發(fā)和運(yùn)維團(tuán)隊(duì)。
事件驅(qū)動型計(jì)算對于一些管理員沒辦法到達(dá)服務(wù)器所在地的情況來說很有必要,不過這需要依賴于對事件分析頻繁的更新。這也是Edvan,一家瑞典公司所做的“聰明的”加速。Edeva使用Iron.io提供的軟件即服務(wù)讓位于加速帶的服務(wù)器發(fā)送數(shù)據(jù)到運(yùn)行在AWS的中央分析系統(tǒng)中,并對數(shù)據(jù)進(jìn)行處理。
負(fù)責(zé)在Edeva設(shè)置Iron.io基礎(chǔ)架構(gòu)的咨詢師John Eskilsson說,“集成到Y(jié)ii軟件開發(fā)架構(gòu)的簡易性和它對Python語言的早期支持讓服務(wù)器的遠(yuǎn)程管理對開發(fā)者更加友好,無論這個(gè)服務(wù)器在不在AWS上。”
Eskilsson說:“這樣子使用軟件即服務(wù)是有意義的,因?yàn)檫@樣你就不需要管理所有這些多余的服務(wù)器了。”