Diving into Juju

Adam Israel

on 24 November 2015

This article is more than 9 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.

Workloads

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

OpenStack

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

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.

Benchmarking

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.

Conclusions

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 jujucharms.com

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...

Join Canonical in London at Dell Technologies Forum

Canonical is excited to be partnering with Dell Technologies at the upcoming Dell Technologies Forum – London, taking place on 26th November. This prestigious...