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