Skip to content
  1. We help small teams achieve big things.
  2. Our Technical Fellow just became a Microsoft MVP!
  3. We run the Azure Weekly newsletter.
  4. We just won 2 awards.
  5. We just published Programming C# 8.0 book.
  6. We run the Power BI Weekly newsletter.
  7. Our NDC London 2020 talk is now available online!
  8. We are school STEM ambassadors.
Howard van Rooijen By Howard van Rooijen Co-Founder
An Overview of the Azure CNAB Quickstarts Library

As Mike Larah posted yesterday, we were very pleased to announce the Azure CNAB Quickstarts Library. When we started the project nine months ago. We soon realized that we, at endjin, were the perfect target persona of the users we were trying to help; as although we've been using Azure for over a decade, we primarily use its PaaS services to deliver the maximum amount of value to our customers. The world of containers, Docker and Kubernetes were all fairly new to us, and the main questions we kept asking ourselves were "why do we need CNAB? Why do we need Porter? And what problems do these tools solve?"

If you have a PaaS mindset, many of the CNAB features seem surplus to requirements. It was only when we realized that we're the exception: most other organisations have not jumped directly from "On Prem" to PaaS, they have evolved slowly from physical servers, to virtualized servers, to IaaS, and now container based architectures were their logical next step.

A few weeks into the project I had a major epiphany. Mike & I would have long daily conversations, where we'd share our discoveries, thoughts & musings. One of the popular topics was how best to describe CNAB and the value it delivers. The whole of the company was interested in what we were doing, and lots of interesting, and what we thought of as stereotypical questions, were being asked. But we were never 100% happy with our answers & explanations. The problem of being at the bleeding edge is that there often isn't a lot of documentation to help you out.

The more we explored the container ecosystem and the existing approaches for building complex architectures, the more we realized that it was a wild west frontier of differing ideas & opinions all fighting it out for mass adoption. There were lots of competing standards, lots of competing approaches, that all looked vaguely similar, and yet were not compatible.

It suddenly struck me; the container ecosystem looked very much like the JavaScript ecosystem. The epiphany I had was that CNAB is to containers as TypeScript is to JavaScript. By that I mean TypeScript creates an abstraction over JavaScript that introduces missing higher level concepts and features, such as static typing, that makes it much easier to build tooling, such as IntelliSense, that is nigh on impossible with JavaScript. CNAB introduces concepts such as typed parameters, which allow you to perform basic validation against inputs.

This was the turning point in creating our mental model for the value of CNAB and Porter. Over the next few months that model evolved towards one of CNAB enabling the creation of Lego-like building blocks – units of functional composition & reuse. We created CNAB quickstarts that created a barebones Azure Kubernetes Services, and another that created a nginx ingress controller, and another that created an OAuth2 Proxy into this barebones AKS cluster, configured with Azure Active Directory. Suddenly we'd merged Cloud Native and Azure Native services. We could start to see the vision of building full solution architecture from these building blocks and then using the same Porter bundles to upgrade the various dependencies over time.

Ralph Squillace (our stakeholder on the project, who took over from Simon Davies, who kicked off the initiative) delivered a great talk at Ignite called "GitOps at the edge of the envelope: Radical app deployment at the edge with Porter" where he says that Porter Bundles allow you to "zip up your brain" in that you can package your deployment process (or runbook), your deployment tools, and their runtime, into a single container that you invoke through a well described API.

The Azure CNAB Quickstarts Library contains (at the point of release) 11 Porter Bundles, which you can deploy either via Cloud Shell, or via our new Deploy from Azure Button. The entire aim of the project was to remove the initial learning "hump" so that you could get up and running with CNAB & Porter and realize the benefits in a few minutes. You can even contribute your own bundles and share them with the community. It's my hope that the Azure CNAB Quickstarts library becomes the DefinitelyTyped of the container world.

We took all our learnings from the past 9 months and Mike Larah turned them into a 10 minute video which explains all the key concepts. We hope this video helps accelerate your own CNAB & Porter epiphanies.

Once you've watched the video, take a look at the Azure CNAB Quickstarts Library, and try out a bundle, and make sure that you check out the other posts we're publishing this week about CNAB, Porter & WSL2.

Howard van Rooijen

Co-Founder

Howard van Rooijen

Howard spent 10 years as a technology consultant helping some of the UK's best known organisations work smarter, before founding endjin in 2010. He's a Microsoft ScaleUp Mentor, and a Microsoft Azure MVP, and helps small teams achieve big things using data, AI and Microsoft Azure.