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.
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 containers, Linux containers, virtual machines, and bare metal machines, on public or private clouds.
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:
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 Kubernetes containers, Linux containers, virtual machines, and bare metal machines, on public or private clouds.
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.
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 focus is on the entire system lifecycle, from application deployment and integration to Day 2 operations like backup, upgrades, migrations, or scaling.
Juju integrates well with Terraform, extending our system lifecycle management framework with infrastructure as code capabilities.
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.