Miscellaneous
Other Tools
Klotho is an Architecture/Infrastructure-from-Code open-source tool that lets developers build evolvable systems that can adapt over time.
What is Klotho?
Klotho is an Architecture/Infrastructure-from-Code open-source tool that lets developers build evolvable systems that can adapt over time.
Profile
Developers use in-code annotations to declaratively add cloud capabilities to existing code while platform teams can re-shape the application architecture by dividing and combining services and selecting/updating the underlying technologies used for each component.
Focus
Klotho’s focus is on reducing the amount of code needed to write and operate cloud applications and systems. It uses static and runtime analysis to infer architecture and generate infrastructure-as-code like Terraform or Pulumi. It’s based on an in-code annotation system that enables developers to declaratively add cloud behaviors to their code and operators can re-shape and adapt the technologies and tools running the cloud applications.
Background
Klotho came out of a research effort in compilers, cloud architecture and applied distributed systems. It builds on a new superset adaptive architecture that combines the characteristics of monoliths, microservices and serverless approaches. The majority of this tool's code is written in Go with support for Go, Python, Javascript/Typescript, C# and Java.
At the core is an adaptive architecture engine that’s able to continuously interchange technologies.For example, moving between Fargate ↔ Lambdas ↔ Kubernetes. gRPC ↔ Linkerd ↔ REST and their equivalents in other cloud solutions.
Klotho main features
Infrastructure-as-code generation
Architecture and Infrastructure are inferred from application code, removing the need to explicitly define infrastructure-as-code.
Technology switching
Configuration YAML allows re-targeting application code to new technologies as they are released and without changing application code.
Local first
Klotho operates on plain applications, therefore the local development experience is that of a plain application and requires no tools or set up.