Your submission was sent successfully! Close

You have successfully unsubscribed! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates about Ubuntu and upcoming events where you can meet our team.Close

Diving into Juju

Adam Israel

on 24 November 2015

This article is more than 8 years old.

In my last post, I introduced you to Juju and talked about how it could help you. Now I’d like to walk you through some real world examples of Juju in action.


Bundles are used to represent workloads. Bundles can be simple, like the WordPress example in the previous post, or complex.


If you’re not familiar with OpenStack, it is a collection of services for managing a cloud computing platform. Think Infrastructure as a Service (IAAS).

I’ve heard horror stories from people who’ve spent months trying to deploy and configure OpenStack. Several different tools for automating an OpenStack Deployment have been developed, and this video from the October 2015 OpenStack Summit compares them (with Juju a strong favorite):

How easy is it to install OpenStack? It’s this easy as this:

$ juju quickstart openstack-base

Sit back and wait, and soon you’ll have an OpenStack environment with Keystone, Glance, Ceph, Nova-compute and more ready for testing.

Big Data

This is the area I’m personally most excited about. Big Data solutions are all aimed at taking some of the complexity out of analysing huge datasets.

The base of these workloads is Apache Hadoop, bundled with tools like mapreduce, Tez, Hive, Pig and Storm. Drink from the Twitter firehose with Flume. Crunch Open Data from your favorite city or government to spot trends in voter turnout or track neighborhood gentrification or crime rates.


Containers are the new hot thing, but there’s no reason why you can’t use Juju to orchestrate the deployment of them. Docker? No problem. Kubernetes? Juju does that, too.

There are advantages to containerizing your application. It gives you a nice layer of isolation, and the addition of container networking with Flannel makes it even more powerful.

Juju steps in to compliment the benefits of a container by offering a way to manage and scale them in the cloud. As a developer, you can write a dockerfile to launch your application, and use the Docker charm to deploy it.

Things at scale

For a typical development workflow, you may only need the bare minimum of machines to run your application. Once you deploy to the cloud for production use, you’re going to need the ability to scale your application.

For example, if your database is running slow, you can easily add scale up:

juju add-unit mysql -n 3

This would add three new units to MySQL and configure replication and failover, things that are complicated and often fragile to do by hand.


The cloud offers a dizzying array of hardware options. Spinning rust or SSD. Lots of memory, or CPU, or both. 1 or 10 Gigabit networking. You can speculate about which options are best suited for your application but even the most well-informed of guesses can be wrong when put to practice.

Benchmarking provides the ability to exercise a service in order to evaluate its performance, and collect hardware and software statistics to monitor how your workload is performing. Maybe you want to test your database under load, or stress your web application, or identify potential bottlenecks. Could it be disk or network I/O slowing you down? Is it poorly optimized database queries? This is the tool you’ll want to use to answer those questions.

Workloads are complex things, with many moving parts. Like Hydra, bottlenecks are a shifting target; strike down one and two more rise to take it’s place.

In order to tune workloads, I’ve gone hunting for blog posts or white papers showing best practices for the services I use. I’m often frustrated, though, because all the pretty graphs in the world don’t help me if I can’t replicate the results. It leads to a trust issue; sure, it ran fast for you, but how do I recreate it?

Benchmarking’s focus on repeatable, reliable testing means that you can repeat benchmarks over and over again and expect to see similar results. You can then make adjustments to your hardware or software, repeat the benchmark and compare the results.

That effort can then be distilled into best practices that anyone using or deploying a service can benefit from.


Juju is a robust devops tool, reducing the complexity of cloud development and orchestration. It’s growing community of users and contributors, including IBM, Intel, Microsoft, Cisco and China Telecom means it’s going to be around for a long time.

Test drive Juju on

Read original article

ubuntu logo

What’s the risk of unsolved vulnerabilities in Docker images?

Recent surveys found that many popular containers had known vulnerabilities. Container images provenance is critical for a secure software supply chain in production. Benefit from Canonical’s security expertise with the LTS Docker images portfolio, a curated set of application images, free of vulnerabilities, with a 24/7 commitment.

Integrate with hardened LTS images ›

Newsletter signup

Get the latest Ubuntu news and updates in your inbox.

By submitting this form, I confirm that I have read and agree to Canonical's Privacy Policy.

Related posts

Implementing an Android™ based cloud game streaming service with Anbox Cloud

Since the outset, Anbox Cloud was developed with a variety of use cases for running Android at scale. Cloud gaming, more specifically for casual games as...

Docker container security: demystifying FIPS-enabled containers with Ubuntu Pro

In today’s rapidly changing digital environment, the significance of robust Docker container security measures cannot be overstated. Even the containerised...

Containerization vs. Virtualization : understand the differences

Containerization vs. Virtualization : understand the differences and benefits of each approach, as well as connections to cloud computing.