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