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.
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 :)
By annotating the application's code with
Directives and compiling the code using Klotho CLI, we receive 'prebaked' IaC templates, ready to be deployed.
Capabilitites the code is splitted to functional elements, like APIs and microservices.
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.
At this moment Klotho is available in early access, it is not officially released. So I expect a lot will change in nearest future.
I said that Klotho works on annotated application code. So, what languages can we use?
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'.
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.
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.