HPI Issue #6: Infrastructure as Code (Goodbye, YAML?)
“A long-overdue reaction to verbose YAML is the new allure of Infrastructure-As-Code.” – Archis Gore
Below, we feature stories from companies that are simplifying everything from Kubernetes to serverless with high-level code. There are also tons of open source resources provided by these companies to help you start breaking down the walls of YAML if you desire to (links below).
After checking out the stories, we’d love to hear from you in this Twitter thread about your preference: YAML or infrastructure as code?
A slide from a 2019 Clojure/conj presentation illustrating the benefit of infrastructure as code in Closure over YAML
An introduction to the open source tools, libraries, and playbooks called Pulumi Crosswalk for Kubernetes that help developers bring Kubernetes into their infrastructure and application workloads.
- Applying infrastructure as code to Kubernetes is exciting for developers who have ever struggled with the walls of YAML.
- It often feels like hand-authoring Kubernetes YAML is akin to writing software in assembly language rather than higher level languages.
- Pulumi exposes 100% of the Kubernetes API which means you can use modern language practices to start taming some of this low-level chaos.
- Also, new library constructs available in Crosswalk take this to another level by eliminating common boilerplate patterns.
In their talk at Clojure/conj, Eno Compton & Tyler van Hensbergen present an alternative to getting swamped in YAML when writing infrastructure as code.
- Eno and Tyler’s team wanted to solve business problems and deploy it on [serverless] but a thicket of YAML was getting in the way.
- “YAML has become the assembly language of cloud infrastructure. You could also say that YAML has become the bytecode of cloud infrastructure.”
- “If a developer came to you and said ‘I’m going to write all my application code in bytecode’ you’d probably say “that’s not the best idea.’”
- A new open source library is available that’s created in Closure that allows Eno and Tyler’s team to write all their infrastructure in Clojure.
In this piece from the beginning of 2019, the author proposes a case for having “declarative systems” and “infrastructure-as-code” all in one.
- Pulumi and the AWS CDK offer beautiful, compact, clean parameterized abstractions to solve for YAML’s verbosity but there is discomfort from the declarative camp.
- “Kubernetes YAML is not and never was declarative programming! It was a magic trick you bought into because of all the grandiosity that came with the sales pitch.”
- “Writing a higher level language on top of Kubernete’s alleged ‘assembly language’ makes about as much sense as writing Java using regular expressions.”
- The author wrote a mini-spec on twitter to show what a proper declarative app/infra platform would look like.
Other Worthy Reads
- W3C recommends WebAssembly to push the limits for speed (W3C)
- Edge computing is the new black (Gigaom)
- Optimizing first-frame bitrate for HLS with edge compute (StackPath)
- Coffee analogy for latency and throughput (Medium)
- As gaming moves to the cloud, data centers focus on latency (Data Center Frontier)
- What is YAML? (StackPath)