消息隊(duì)列和任務(wù)處理平臺(tái)提供商Iron.io宣布了Kratos項(xiàng)目,該項(xiàng)目使AWS Lambda函數(shù)可以運(yùn)行在多個(gè)云上。Lambda函數(shù)在Iron.io的容器中執(zhí)行,而這些容器可以運(yùn)行在任何底層基礎(chǔ)設(shè)施上。
AWS Lambda是一個(gè)允許開發(fā)人員運(yùn)行代碼響應(yīng)特定事件(如上傳一張圖片)的服務(wù)。這些代碼中的函數(shù)充當(dāng)事件處理程序。當(dāng)事件發(fā)生時(shí),AWS負(fù)責(zé)啟動(dòng)運(yùn)行代碼所需的實(shí)例,并根據(jù)需要進(jìn)行擴(kuò)展。開發(fā)人員完全不知道操作細(xì)節(jié)。
Kratos項(xiàng)目在代碼和基礎(chǔ)設(shè)施之間另外引入了一層,旨在提供一個(gè)云平臺(tái)無關(guān)的平臺(tái)。該層由Iron.io自定義的容器構(gòu)成。現(xiàn)有的Lambda函數(shù)可以運(yùn)行在這些容器中。Iron.io計(jì)劃針對(duì)谷歌“云函數(shù)(Cloud Functions)”做相同的事情。Iron.io首席執(zhí)行官兼聯(lián)合創(chuàng)始人Chad Arimura是這樣介紹Kratos容器的作用的:
容器打包了所有必要的組件,使代碼平臺(tái)無關(guān),用戶可以控制和選擇如何及在哪里運(yùn)行工作負(fù)載。我們發(fā)現(xiàn),這就是現(xiàn)代企業(yè)希望采用的應(yīng)用架構(gòu)方式。
Kratos項(xiàng)目已經(jīng)創(chuàng)建了工具,用于將Lambda函數(shù)封裝和打包到容器中。據(jù)Iron.io首席技術(shù)官Travis Reeder介紹,雖然它可能不支持實(shí)際的Lambda API,但這些函數(shù)可以使用Kratos端點(diǎn)完成相同的事情。
AWS Lambda于2014年11月發(fā)布,支持Java、Python和node.js。事件可以由各種數(shù)據(jù)源產(chǎn)生,如Amazon S3(比如新增或修改一個(gè)對(duì)象)、Amazon Kinesis(比如記錄流數(shù)據(jù))和Amazon DynamoDB(比如記錄表更新)。AWS負(fù)責(zé)自動(dòng)擴(kuò)展運(yùn)行事件處理程序代碼的基礎(chǔ)設(shè)施。Lambda處理程序代碼可以在AWS控制臺(tái)的編輯器中編輯,也可以打包為zip文件上傳。代碼使用AWS特有的結(jié)構(gòu),因此,如果要運(yùn)行在AWS之外的基礎(chǔ)設(shè)施上就需要修改。谷歌最近宣布了一個(gè)類似的產(chǎn)品,名為云函數(shù)。
在Kratos項(xiàng)目中,容器會(huì)運(yùn)行專有組件,那這是否會(huì)導(dǎo)致客戶被Iron.io的平臺(tái)鎖定?對(duì)此,Arimura解釋說:
我們也可以使用webhook(比如SNS/PubSub)連接到所有的AWS/谷歌服務(wù),但是之后,你就可以控制在哪里運(yùn)行工作負(fù)載,包括使用vSphere或OpenStack的私有數(shù)據(jù)中心。
Arimura進(jìn)一步補(bǔ)充道,“我們提供了導(dǎo)入程序,可以簡化Lambda函數(shù)的打包和運(yùn)行,但將來,我們也會(huì)包含API兼容性,真正實(shí)現(xiàn)工具重用”,從而將現(xiàn)有的Lambda函數(shù)遷移到Kratos。Kratos將提供一個(gè)CLI工具,負(fù)責(zé)打包及向Iron.io的平臺(tái)推送和注冊(cè)函數(shù)。
Kratos尚未正式發(fā)布,歡迎感興趣的開發(fā)人員在他們的首頁上參與Beta測試。
查看英文原文:Project Kratos Enables AWS Lambda Code to Run on Multiple Clouds