Apache Jclouds: Cloud Interfaces, Simplified

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Apache JClouds

Cloud interfaces, simplified

Hiranya Jayathilaka
Dept. of Computer Science, UCSB

Roadmap

S Cloud computing
S Challenges
S Apache JClouds
S Demo
S Pros and cons
S Summary and conclusion

The Cloud Revolution

S Cloud computing is revolutionizing the way software is

developed and delivered.


S Software-as-a-Service (SaaS)
S Platform-as-a-Service (PaaS)
S Infrastructure-as-a-Service (IaaS)

Many Benefits

S Cost effective
S Reduced maintenance overhead
S Easy and fast provisioning Improved time-to-market
S Autoscaling and elasticity
S Fault tolerance

The Other Side of the Coin

Challenges

S How do you select the cloud provider thats right for you?
S How do you port your application from one cloud provider

to another?
S How to develop multi-cloud applications?

Enter, JClouds

S An open source library that facilitates developing

applications for a wide range of cloud providers.


S Implement your application using JClouds, and run it on

your favorite cloud without any code changes.


S Simple, intuitive APIs.
S Java and Clojure support.

History

S Started in March 2009 by Adrian Cole as an open source project.


S Initially based in London, developed mostly by European Java

community.

S Contributed to Apache in April 2013.


S http://wiki.apache.org/incubator/jcloudsProposal

S Already popular in the industry Used by the likes of Adobe,

CloudBees, RedHat, Twitter and SalesForce.

S http://jclouds.incubator.apache.org/documentation/reference/

apps-that-use-jclouds/

Getting Started

S No binary download J
S The documentation provides the necessary configurations

for popular project management tools, so JClouds can be


included in your project as a dependency.
S Maven
S ANT
S Leiningen

JClouds APIs

S Compute Service API


S For managing compute nodes (VMs) in the cloud

S Blobstore API
S For storing data in the cloud

Compute Service API

S Key abstractions
S Hardware
S Operating system
S Template
S Supported providers
S AWS (EC2), Bluelock, CloudSigma, ElasticHosts, Go2Cloud,
GoGrid, Green House Data, HP, Ninefold, OpenHosting,
Rackspace, ServerLove, SkaliCloud, SoftLayer, Stratogen,
TRMK, TryStack

Starting a VM from an Image

If You Dont Have an Image?

More Control Over Templates

Access VM Metadata

SSH to Remote VM

Dealing with Package Managers

Managing Clusters

Blobstore API

S Key abstractions
S Container
S Folder
S Blob

S Supported providers
S AWS (S3), CloudOne, HP, Azure, Ninefold, Rackspace,

Synaptic

Downloading a Blob

Write Blob

Upload File

Access Blob Metadata

Logging Support

Demonstration

S Scenario
S Start an Ubuntu VM in EC2
S Upload a Python script and a Java application to the VM (Java
application also based on JClouds)
S Install Python and JRE on the VM using apt-get
S Run the Java application on the VM to download a data file
from S3
S Run the Python script on the data file
S Upload the output to S3

Pros

S Powerful abstractions: Simple + High-level + Convention over configuration


S Location awareness baked into the API
S Easily manage clusters of nodes
S Excellent portability
S Unit testable
S Free and open source (ASL 2.0)
S It just works (YMMV)

Cons

S Still in the Apache Incubator


S Limited documentation
S Potential Jar hell

Summary

S Cloud computing brings a horde of benefits But the

diversity can be overwhelming.


S Several challenges with respect to evaluating cloud vendors

and porting application across cloud platforms.


S Apache JClouds provides a simple and feature-rich

approach for developing cloud applications that are easily


portable across multiple vendors.

Thank You & Questions

References

S Project website: http://jclouds.incubator.apache.org


S Apache Incubator proposal:

http://wiki.apache.org/incubator/jcloudsProposal
S Getting started:

http://jclouds.incubator.apache.org/documentation/
gettingstarted/
S Demo code: https://github.com/hiranya911/jclouds-demo

You might also like