What is Juju?
Canonical Juju, commonly referred to as just “Juju”, is an open-source software tool for deploying, configuring, managing, and scaling complex applications and services in cloud environments. Juju was created by Canonical, the company behind Ubuntu, and is written in the Go programming language.
What is modeling software deployment?
Juju is a solution to automate software deployment. The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur on the producer side, on the consumer side, or both. Because every software system is unique, the precise processes or procedures within each activity can hardly be defined. Therefore, “deployment” should be interpreted as a general process that has to be customized according to specific requirements or characteristics.
What do you use Juju for?
The main idea behind Juju is to provide a simple and intuitive way to manage the complexity of deploying and scaling cloud applications. With Juju, users can describe their applications in a declarative way using “Charms,” which are pre-configured deployment scripts that automate the process of setting up and configuring the necessary components of the application. Charms are available for a wide range of applications and services, including databases, web servers, load balancers, and more.
Juju provides both a graphical user interface (GUI) and a command-line interface (CLI) for managing the deployment and scaling of applications. It supports a wide range of cloud environments, including public clouds like Amazon Web Services (AWS) and Microsoft Azure, as well as private clouds like OpenStack and Kubernetes.
In other words, by using facilities that Juju provides you’re able to automate the day-to-day actions that are part of operating the deployed environment. This results in time reduction, which in turn results in lower costs for maintenance around deployment configuration and operation. Furthermore, Juju takes us a step further by encouraging the encapsulation of operations rather than every team having its own experts and various software components.
Even more so, since Juju uses the same approach across various clouds, this allows you to follow the most cost-effective platform. Initial deployments can be done locally and then moved into the cloud. From there, based on scale you may move to a cheaper cloud, build your own local cloud or even go back to bare metal on your own servers
What is a charm?
Charms are the building blocks of Juju, as they enable you to deploy and manage complex applications quickly and easily. Charms encapsulate the knowledge of how to deploy and configure the software they represent, including any dependencies or inter-dependencies, and they provide Juju with the instructions it needs to spin up the application on a given cloud or server.
Pre-built charms are created by the Juju community and are designed to be used as generic building blocks for deploying and managing popular applications and services. They are typically created with a high degree of configurability and flexibility so that they can be used in a wide range of deployment scenarios.
However, if a pre-built charm doesn’t exist for the application or service you need to deploy, you can create your own custom charm. Custom charms are specific to the application or service you want to deploy, and they can be created using Juju’s charm development framework. Custom charms can be built to include all the necessary configuration, dependencies, and deployment logic for your specific use case. We built a charm for one of our clients, that uses an OpenStack Cloud as Edge Cloud infrastructure; more information about this can be read in our prior blogs: https://fairbanks.nl/how-we-set-up-an-edge-cloud/ .
If you want to write a custom charm, the aim is to have someone that understands the application very well to write the charm. The reason for this is because people that understand the application very well, tend to know best how to configure the software. In addition, they usually also know the types of actions that need to be performed periodically to operate the software. The charm created can then be used in as many models as you like. If the author improves the charm, this improvement can then be released to all the models. This improves the repeatability of deployments.
If this information raised your interest in Juju and Charms and you would like to read more about it, we recommend the following sources:
- To try out Juju online and look for charms: https://jujucharms.com
- To spin up a microservice stack with the Juju wizard: https://conjure-up.io
- To read about Juju: https://gitbub.com/juju/juju
- To apply for mailing lists: email@example.com & firstname.lastname@example.org
- To apply for freenode IRC: #juju, #juju-dev
Overall, Juju is a powerful tool that simplifies the deployment and management of complex cloud applications, making it easier for users to focus on developing and delivering their applications without getting bogged down in the details of the underlying infrastructure.
Roger S. Pressman