Juju

Canonical leads the cloud deployment market with Juju, a single service orchestration tool that works on public clouds, private clouds and the micro-clouds on Ubuntu developer workstations.

Cloud magic in action

Watch Ubuntu founder Mark Shuttleworth demonstrate the blinding speed with which cloud services can be deployed using Juju.

Increase your agility

Cloud computing is all about agility: the ability to quickly ’switch on’ or ’switch off’ services in response to changes in demand, rather than embarking on weeks of planning and a complex process of testing and implementation.

Juju encapsulates devops best practice in shareable, re-usable charms that can eliminate this manual effort in favour of much faster service deployment.

System administrators and developers distill their deployment expertise into these charms, which can be used to spin up workloads across all the deployment environments: development, test and production. When developers make a change in the deployment process as part of the development cycle, that change is automatically passed on to the system administrators when their code is handed over.

You can use charms unmodified or adapt them to fit your needs. Deploying a charm is similar to installing a package on Ubuntu: ask for it and it’s there, remove it and it’s completely gone.

Once written, charms can be deployed anywhere. Deploying in a different environment is often as simple as changing the provider specified in the charm — be it Amazon Web Services, HP Cloud, Rackspace, Windows Azure, OpenStack (for your own private cloud deployment) or even MAAS for a bare metal cluster running on Ubuntu.

  • Amazon logo
  • Azure logo
  • HP logo
  • Rackspace logo

Learn more about deployment ›

Life before Juju

Before the cloud, deploying interconnected services across multiple servers required days, if not weeks. IT departments had to buy the necessary servers, find lab space for them, physically set them up, install the OS and required applications and then configure and connect the various applications on each machine to provide the desired services. Once the entire solution was deployed, the labour overhead remained: upgrading or replacing the service applications, modifying the connections between them, scaling out to account for higher load and/or writing custom scripts for re-deployment elsewhere — the list went on.

In time, deployment tools evolved, first to reduce the time and complexity involved in installing the OS on each machine, then to automate system configuration.

Now, with the arrival of cloud computing, the burdens associated with hardware acquisition and setup are largely a thing of the past. The bottleneck has consequently shifted, from the provisioning stage to the deployment stage. For devops teams, the time taken to develop, test and deploy new iterations of applications is a critical measure of effectiveness. And in the cloud, wasted time is wasted money.

Frictionless ongoing management

The long-term costs of change management in the cloud can be high, unless your tools support organic extension of the service workloads. In other words, if you can’t easily add to or remove, services or capacity, you won’t be effective in the cloud.

Juju provides a uniquely straightforward way to extend existing deployments. Unlike traditional script-based approaches, Juju deployments can grow and shrink on demand, adding layers or substituting components on the fly.

For example, if you want to shift to a different branch of code for one

component in your business application stack, you can do that on the fly with Juju — first in test, then in staging and finally in production. This is the time-saving killer feature of Juju. Deployment can be automated with any number of technologies. Most ops teams have scripts to deploy a particular stack quickly. Those scripts are usually tied to a specific infrastructure — be it cloud or physical — but they nevertheless make initial deployments fast. Juju goes further, in allowing you to modify the deployment in real time, preserving your configuration and adapting to your changes intelligently.

Juju provides a uniquely straightforward way to extend existing deployments

Beyond configuration management

In the cloud, there can be no central, master view of every configuration and deployment. You need the flexibility to deploy and connect services organically, adding layers and reshaping parts without depending on a central understanding of how all the pieces fit together.

Juju was designed to co-exist with tools such as Puppet and Chef, proven management products for defining specific services. Orchestration toolsets like Juju take the process one step further, glueing those services together.

Juju keeps teams productive, allowing deployments to grow as fast as you can make decisions, rather than slowing down as things get more complex.

More scale, more elasticity

Many organisations choose cloud for scale — the ability to scale up (and down) quickly and easily.

The key challenge, of course, is how to achieve the service orchestration that underpins such elasticity. Your cloud can deliver the resources, but you have to be able to configure and manage those services in an elastic fashion.

In the cloud, scale is achieved horizontally. Rather than scaling up, we scale out. Rather than moving to a “faster node” we add more, cheaper, nodes. That’s the Google and Amazon model and it works very well if you have the smarts to coordinate farms of servers.

Juju gives you those smarts in a neat package: each charm knows what it takes to scale the service it provides, so scaling up or down becomes a simple matter of asking the charm to do the work. If you have a tricky workload, you can encapsulate your institutional knowledge once in the charm and share the benefits of that with other teams in the company.

Each charm knows what it takes to scale the service it provides

Try Juju

It is easy to get going with Juju, it takes only five minutes. Check out our step-by-step guide on juju.ubuntu.com.

Get started guide