1. The foundations: Juju, charms and rocks

The 12-factor web application solution uses and combines capabilities from the following Canonical products:

  • Juju is an open source orchestration engine for software operators that enables the deployment, integration and lifecycle management of applications at any scale and on any infrastructure.

  • A charm is an operator - business logic encapsulated in reusable software packages that automate every aspect of an application’s life.

  • Charmcraft is a CLI tool that makes it easy and quick to initialize, package, and publish charms.

  • Rockcraft is a tool to create rocks – a new generation of secure, stable and OCI-compliant container images, based on Ubuntu.

  • A rock is an Ubuntu LTS-based container image. The official entrypoint for the image is Pebble, a service manager that enhances container experience.

A Rockcraft framework is initially used to facilitate the creation of a well structured, minimal and hardened container image, called a rock. A Charmcraft profile can then be leveraged to add a software operator (charm) around the aforementioned container image.

Encapsulating the original 12-factor application in a charm allows your application to benefit from the entire charm ecosystem, meaning that the app can be connected to a database, e.g. an HA Postgres, observed through a Grafana based observability stack, add ingress and much more.