{% extends "ubuntu/templates/one-column.html" %} {% block title %}Cloud computing with Ubuntu{% endblock %} {% block extra_body_class %}{% endblock %} {% block header %}
To deliver new application services quickly, you need to deploy, arrange, coordinate and manage complex and changing technology components and systems.
Gone are the days of segregating the stages of application delivery into separate, laborious tasks. Today, discrete activities like machine provisioning, platform installation, application installation, application configuration and application availability give way to a single activity. Enter service orchestration.
While there have long been tools that address some of these aspects individually, service orchestration defines a service as a single unit that aligns with a business need; one that can be deployed on a server, a public cloud, a private cloud or any combination of the three.
Juju, the service orchestration tool from the Ubuntu project, and MAAS, for automated bare-metal provisioning, work together to make service orchestration a reality.
The cloud appeals because of the speed with which it enables IT infrastructure to respond to changes in demand. To realise this potential fully, developers and system administrators need to be able to bring cloud services online fast. Very fast.
“reap the benefits of the cloud faster.”
Even after defining their cloud infrastructure (whether it’s private or public) organisations not equipped with the right tools can still experience delays preparing their environment and readying their services.
Service orchestration, means organisations can respond to business needs rapidly, with new infrastructure and services. This could mean bringing up a new application on a public cloud in minutes, for example, or re-purposing an in-house cluster to process a different data set. By defining applications as services and managing them with service orchestration tools, businesses can reap the benefits of the cloud faster.
After working with leading cloud providers like Amazon and Rackspace for years, we’ve developed Juju, a game-changing service orchestration toolset, that enables the knowledge connected with an application—dependencies, relations and platform configuration—to be encapsulated in a charm.
A Juju charm is a collection of pre-written instructions that deploys a cloud service. More than 50 are already available, for services including Hadoop, PostgreSQL and Drupal. And because anyone can submit one, the selection is growing all the time.
Juju is tightly coupled with provisioning. The base platform can be installed on public cloud, private cloud or hardware using Metal as a Service, another Ubuntu tool, ready for the services to be deployed on top with Juju.
With Juju, you can deploy and scale services in seconds. Simply choose how many nodes your new service needs, specify the platform targets - Amazon EC2, local server or OpenStack cloud, for example — and apply the charm for your service. If your needs change, you can scale or adjust deployment parameters in real time. And once you're finished with your service, Juju can remove it without a trace. It's as easy as that.
To prove how quick and easy Juju is, we’ve created a couple of simple examples you can try. In each case, comments appear after the hash.
$ juju bootstrap # Let's get ready to rumble
$ juju deploy hadoop hadoop-master # We’d like a master node
$ juju deploy -n5 hadoop hadoop-slavecluster # We’d like to start a slave cluster of 5 instances
$ juju add-relation hadoop-master:namenode hadoop-slavecluster:datanode # Hooks fire off configuring the master to talk to the slaves.
$ juju add-relation hadoop-master:jobtracker hadoop-slavecluster:tasktracker
Now we have a twenty-node Hadoop cluster. Since we define the relationship at the service level and not the machine level, we can easily add another node:
$ juju add-unit hadoop-slavecluster
…or, as many as we want. Let's make this a 25 node cluster:
$ juju add-unit -n20 hadoop hadoop-slavecluster
$ juju deploy -n3 mongodb # We’d like a MongoDB replicaset
$ juju deploy --config node-app.yaml node-app # Then deploy my node application from source using the node-app charm with config information
$ juju add-relation mongodb node-app # Hooks fire off and my application now talks to the mongodb replicaset
$ juju expose node-app # Open the port, serve my app!
Juju is a free tool that can be accessed from the terminal in Ubuntu 12.04 LTS.