Shift from configuration management to distributed system management

Applications never run in isolation. Adding a workload to production requires adding essential services like observability, patching, identity, secret management, and many more

But it doesn’t stop there. 1000 days from now this complex system needs to work just as well as it does today. This means that lifecycle events like upgrades, migrations or scaling have to work seamlessly without downtime.

Without a comprehensive understanding of how to deploy, integrate and operate software, there is often too much perceived risk to adopt it in large scale, production settings. This is especially true for open source software, where operational knowledge is concentrated in a small number of hard-to-recruit individuals.


It’s time to open source the operations code

To unlock the true potential of open source, we must normalise open sourcing not just the application code, but also the operational frameworks required to take the most out of it

That’s where Juju and charms come in.

Charms take all the domain knowledge required to operate software effectively and distil it into clean, maintainable, testable Python code that can be used across clouds.

Juju is the orchestrator that helps to deploy, manage and integrate that software across Kubernetes, VMs, bare metal and public clouds.


What are Juju and Charms?


Juju, the orchestrator engine

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


Charms, the software operators

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

Charms are developed with the Charm SDK which comprises the:


  • Ops library: a Python framework for developing and testing charms
  • Charmcraft: a tool for building, packaging and publishing charms.

What makes juju and charms different?


Automate operations across cloud, metal, VMs and Kubernetes

Charms allow you to use a single codebase to automate the lifecycle management of your system across public clouds, Kubernetes, virtual (VM) and bare metal machines.


Seamless integrations across different clouds

Integrations simplify the process of connecting two applications by automatically applying required networking and configuration changes, even if the workloads are deployed across different clouds (e.g. Openstack and AWS).


Lifecycle management for your system, not individual applications

Because applications integrations are a first class citizen in Juju, the system knows how to optimise the lifecycle management of the entire system, rather than individual applications.


How does Juju compare to similar tools

Juju’s focus is on system lifecycle management

Most existing tools are focused on solving the problem of deployment or configuration management, while juju’s main focus is on Day 2 operations like backup, upgrades, migrations, or scaling.

Juju integrates well with Terraform, extending its infrastructure as code capabilities to our application modelling framework.


Read about these next:


Juju provides tools to design, deploy and manage large distributed systems across infrastructures at scale with high availability, visibility, access control and cross-cloud functionality.


Charm architecture encapsulates app management, with charms automating lifecycle actions via a controller, responsive to both admin commands and system events.

Get started with Juju today

Read Docs