消息队列和任务处理平台提供商 Iron.io 宣布了Kratos项目,该项目使 AWS Lambda 函数可以运行在多个云上。Lambda函数在Iron.io的容器中执行,而这些容器可以运行在任何底层基础设施上。
AWS Lambda是一个允许开发人员运行代码响应特定事件(如上传一张图片)的服务。这些代码中的函数充当事件处理程序。当事件发生时,AWS负责启动运行代码所需的实例,并根据需要进行扩展。开发人员完全不知道操作细节。
Kratos项目在代码和基础设施之间另外引入了一层,旨在提供一个云平台无关的平台。该层由Iron.io自定义的容器构成。现有的Lambda函数可以运行在这些容器中。Iron.io计划针对谷歌“云函数(Cloud Functions)”做相同的事情。Iron.io首席执行官兼联合创始人Chad Arimura是这样介绍Kratos容器的作用的:
容器打包了所有必要的组件,使代码平台无关,用户可以控制和选择如何及在哪里运行工作负载。我们发现,这就是现代企业希望采用的应用架构方式。
Kratos项目已经创建了工具,用于将Lambda函数封装和打包到容器中。据Iron.io首席技术官Travis Reeder介绍,虽然它可能不支持实际的Lambda API,但这些函数可以使用Kratos端点完成相同的事情。
AWS Lambda于2014年11月发布,支持Java、Python和node.js。事件可以由各种数据源产生, 如Amazon S3 (比如新增或修改一个对象)、 Amazon Kinesis (比如记录流数据)和 Amazon DynamoDB (比如记录表更新)。AWS负责自动扩展运行事件处理程序代码的基础设施。Lambda处理程序代码可以在AWS控制台的编辑器中编辑,也可以打包为zip文件上传。代码使用AWS特有的结构,因此,如果要运行在AWS之外的基础设施上就需要修改。 谷歌最近宣布了一个类似的产品 ,名为云函数。
在Kratos项目中,容器会运行专有组件,那这是否会导致客户被Iron.io的平台锁定?对此,Arimura解释说:
我们也可以使用webhook(比如SNS/PubSub)连接到所有的AWS/谷歌服务,但是之后,你就可以控制在哪里运行工作负载,包括使用vSphere或OpenStack的私有数据中心。
Arimura进一步补充道,“我们提供了导入程序,可以简化Lambda函数的打包和运行,但将来,我们也会包含API兼容性,真正实现工具重用”,从而将现有的Lambda函数迁移到Kratos。Kratos将提供一个CLI工具,负责打包及向Iron.io的平台推送和注册函数。
Kratos尚未正式发布,欢迎感兴趣的开发人员 在他们的首页上参与Beta测试 。
查看英文原文: Project Kratos Enables AWS Lambda Code to Run on Multiple Clouds