Helium3 Tech recently launched Heighliner, an open-source and cloud-native application development platform that enables you to deliver your application stack as code. Developers can abstract complicated infrastructure details into human-readable configuration files that you can implement version control, reuse, and share.
With a developer-centric mind, Heighliner provides many pre-configured stacks covering popular programming languages and frameworks. Meanwhile, it uses Dagger under the hood, and developers can customize every aspect of their stack.
InfoQ interviewed Wei Wang, the founding team member of Heighliner, explaining the overview and vision for Heighliner Stack.
InfoQ: What challenges and pain points do you foresee in the application development and delivery? How can Heighliner resolve them?
Wei Wang: Application development and delivery is a highly general term that encompasses almost the complete lifecycle of software engineering. Terraform has solved the problem of infrastructure operations and maintenance to a great extent with its IaC (Infra as Code) approach. However, developers still face huge challenges in building scalable, elastic, and secure applications in a cloud-native era. Most development teams are struggling with building their own application development and delivery system and transforming different tools into a unified layer.
Let's look at a table of the popular technology stack when building a cloud-native application:
The toolchain makes it difficult to combine them, which is often the responsibility of the infrastructure team or the SRE team in the enterprise, and the high cost of architects makes it difficult to implement these tools in small and medium-sized companies.
Stack-as-Code is a brand-new definition to describe the complete application development and delivery workflow with code in a simple manner. It includes application definition, CI/CD, registry, remote development debugging, logging, monitoring, alerting, and dashboard. With just a few simple parameters, a complete set of cloud-native development and delivery best practices can be initialized.
InfoQ: How to understand the definition of Stack-as-Code?
Wei Wang: To understand Stack-as-Code, we need to figure out the definition of Stack. When we initialize the Stack, it creates the language framework and the complete toolchain we described above and connects them with pre-configuration. Once the Stack completes initialization, an end-to-end workflow for development and delivery workflow is set up.
Using the Stack-as-Code, these toolchains are encapsulated as modules in Heighliner. Considering scalability, Heighliner uses CUE lang which Google invented to define these modules. In this way, the building blocks can be assembled and described in a declarative way without concerning specific details of the tools. Meanwhile, it is easy to customize new Stacks.
See a Stack example for details. Then let's dig into how to use Heighliner to declare and link these tools with CUE:
scaffold: scaffoldfactory.#Instance & { input: scaffoldfactory.#Input & { ...... repository: [ { name: "shop-backend" type: "backend" framework: "spring" ci: "github" registry: "github" }, { name: "shop-frontend" type: "frontend" framework: "vue" ci: "github" registry: "github" }, { name: "shop-deploy" type: "deploy" framework: "helm" }, ] addons: [ { name: "prometheus" }, { name: "loki" }, { name: "nocalhost" }, { name: "istio" }, ] } } cd: cdfactory.#Instance & { input: cdfactory.#Input & { provider: "argocd" ...... } }
In this example, it initializes a backend repository for the Spring framework and a frontend repository for the VUE framework, using Helm to deploy two services.
In addition, it also declares the application using GitHub Action as CI, using Github Packages as image registry, using Prometheus and Loki as the monitoring and logging system, using Nocalhost for remote development and Istio as Service Mesh respectively. Finally, it declares using ArgoCD to create the GitOps workflow. All of these tools can be replaced by any other tools in a declarative manner. For example, you can replace Github Packages with Harbor as an image registry.
You don't need to think about the details of how to build a CI/CD flow or a GitOps workflow, how to create monitoring metrics and dashboards, etc. The Stack will take care of everything and implement it for you. Once the initialization is completed, the only thing you need to do is write business code.
InfoQ: Heighliner Stack has some similarities with KubeVela: InfoQ also interviewed the KubeVela team before. Could you explain the differences and interoperability between them?
Wei Wang: KubeVela is built on OAM and is designed to make deploying and operating applications across hybrid, multi-cloud environments easier. Heighliner Stack has a broader vision and is aiming to solve developers’ problems in application development, delivery, and operations. At its core, it provides many pre-configured stacks covering popular programming languages and frameworks. Heighliner is not an alternative to KubeVela; users can use KubeVela as an application definition tool in Heighliner Stack.
InfoQ: Can you tell us the mission and vision of Heighliner Stack?
Wei Wang: To reduce the barrier of cloud-native developers and provide ease of use for cloud-native application development.
In the early days of web development, LAMP significantly lowered the barrier to developing web applications. If you compare Kubernetes to an operating system, the cloud-native space still lacks SDK in the application layer. Heighliner Stack provides an SDK for all the application layers in the cloud-native operating system. Developers can spin a cloud-native application up in minutes without the complexity of configuration.
You can learn more about Heighliner from this blog. Get started with Heighliner by following the Quick Start and demo.