Iron.io, provider of a message queue and a task processing platform, announced Project Kratos which can run AWS Lambda functions on multiple clouds. The functions execute inside Iron.io’s containers which can be run on any underlying cloud infrastructure.
AWS Lambda is a service which allows developers to run code that runs in response to certain events like an image being uploaded. The code consists of functions which act as event handlers. When the event occurs, AWS takes care of launching the instance required to run the code and scaling it as required. The developer is completely shielded from the operational details.
Project Kratos provides a platform which aims to be cloud-agnostic by introducing another layer between the code and the infrastructure. This layer consists of containers that are customized by Iron.io. Existing Lambda functions can run inside the containers. Iron.io plans to do the same for Google’s Cloud Functions. Chad Arimura, Iron.io CEO and Co-Founder, had this to say about the role of containers in Kratos:
Containers package up all the necessary components and makes the code platform agnostic, adding both control and choice over how and where you run your workloads. We're finding that this is how the modern enterprise wants to architect their applications.
Project Kratos has created tooling to wrap and package Lambda functions inside a container. Even though it may not support the exact Lambda APIs the functions can accomplish the same thing using Kratos endpoints, according to Travis Reeder, CTO of Iron.io.
Supporting Java, Python and node.js, AWS Lambda has been around since November 2014. The events can be generated from various data sources like Amazon S3 (e.g. adding or changing an object), Amazon Kinesis (e.g. logging the data from the stream) and Amazon DynamoDB (e.g. logging the updates made to tables). AWS takes care of automatically scaling the infrastructure that runs the handler code. The handler code for Lambda can be written either in an editor in the AWS console or uploaded as a zip file. The code uses AWS specific constructs and hence needs modifications to run on infrastructure other than AWS. Google recently announced a similar offering called Cloud Functions.
In Project Kratos, the containers will be running proprietary components, so wouldn't this lead to a lock-in with Iron.io’s platform? Arimura explained that:
We can still wire up to all the AWS/Google services using webhooks (i.e. SNS/PubSub) but then you have runtime control over where the workloads run, including in your own private datacenter with vSphere or OpenStack.
Arimura further added that "importers will be available to easily package up and run Lambda functions, but in the future we'll also include API compatibility for true tooling reuse" to migrate existing Lambda functions to Kratos. Kratos will provide a CLI tool that takes care of packaging, pushing and registering the functions with Iron.io's platform.
Project Kratos is not generally available yet and is inviting interested developers to participate in the beta on their homepage.