DEV Community

Cover image for Klotho - a new infrastructure deployment way
Paweł Piwosz
Paweł Piwosz

Posted on

Klotho - a new infrastructure deployment way

I was asked to check and review the new tool in the town, Klotho. I took a look on the tool and it looks quite interesting. So, I decided to check it out and share with you what I think.

Introduction of the tool

What is Klotho? According the their webpage:

Klotho is a new development model enabling large-scale organizations and teams to write and operate cloud applications at the fraction of the effort, while maintaining all the benefits and capabilities of monoliths, microservices and serverless architectures.

Klotho is compatible with Infrafree approach. There is not much information to read, but the concept of agnostic approach to deployments is quite interesting. And... challenging.

We are dancing here around noOps or even noArch approaches too. And being honest and clear with you - I am not convinced, politely speaking. In the same way, as I am not convinced by noCode. Although I see places and solutions where it can be useful. I say it to show, how my thinking influence this review :)

What does Klotho do?

By annotating the application's code with Capabilities, Requirements and Directives and compiling the code using Klotho CLI, we receive 'prebaked' IaC templates, ready to be deployed.

By using Capabilitites the code is splitted to functional elements, like APIs and microservices.

With Requirements the code can be instrumented with developer's expectations for specific behavior. Klotho will take into consideration what developer wants to focus (for example latency), and with defined metric(s) it will prepare the compiled project with proper approach (for example scalability, or type of resources).

Directives give the possibility to overwrite default behavior of Klotho. For example, if Klotho be default will create microservice based on Docker, developer can force it to use EC2.

Important

At this moment Klotho is available in early access, it is not officially released. So I expect a lot will change in nearest future.

High-level specification

I said that Klotho works on annotated application code. So, what languages can we use?

At this moment the integration is with Javascript. After check of the documentation and placeholders for snippets, the Klotho team works on Java and Go integrations. Personally, I am waiting for Python one.

Klotho works with monolithic applications as well as with microservices and Serverless. This should give a lot of potential usecases and should fit many organization's needs.

Where we can deploy our compiled project? AWS, Azure and GCP seems to be obvious. Additionally we have Heroku.

Compiled material is prepared in Terraform, Pulumi or CDK.

Well, I should say it will be. At this point only AWS and Pulumi is available. GCP is there, but still 'under construction'.

The crowning feature

And now the most interesting feature of Klotho. The use of IaC in the process, is not the main functionality. Another words, it is not a tool like CDK, no. Klotho, based on provided directives, build the infrastructure to fulfill the requirements. This include scalability, reliability, performance, etc.

Together with growing consumption of resources by the application, we have to take care about the underlying infrastructure. Sometimes this activity requires a lot of work. Klotho addresses this case.

So, what is Klotho?

Klotho is a tool which through the instrumentation of the code allows us to create, maintain and scale the application. Also, when Klotho creates the project, it tries to 'architect' the application, using available services and patterns.

Top comments (3)

Collapse
 
roeniss profile image
Roeniss Moon

What is differences between plumni and klotho? A little confused.

Collapse
 
pawelpiwosz profile image
Paweł Piwosz

Pulumi is a SDK tool which allows you to manage IaC from application code (more or less). Khloto is a framework on higher level. You have your app code, some requirements and Khloto will "inject" Pulumi code into your app code, based on your expectations regarding resources, behavior, etc

Collapse
 
roeniss profile image
Roeniss Moon

Now I get it. Thank you.