Apache JClouds
Cloud interfaces, simplified

Hiranya Jayathilaka
Dept. of Computer Science, UCSB

S
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 that’s 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 Don’t 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

Apache JClouds

  • 1.
    Apache JClouds Cloud interfaces,simplified Hiranya Jayathilaka Dept. of Computer Science, UCSB S
  • 2.
    Roadmap S  Cloud computing S Challenges S  Apache JClouds S  Demo S  Pros and cons S  Summary and conclusion
  • 3.
    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)
  • 4.
    Many Benefits S  Costeffective S  Reduced maintenance overhead S  Easy and fast provisioning – Improved time-to-market S  Autoscaling and elasticity S  Fault tolerance
  • 5.
    The Other Sideof the Coin
  • 6.
    Challenges S  How doyou select the cloud provider that’s right for you? S  How do you port your application from one cloud provider to another? S  How to develop multi-cloud applications?
  • 7.
    Enter, JClouds S  Anopen 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.
  • 8.
    History S  Started inMarch 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/
  • 9.
    Getting Started S  Nobinary 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
  • 10.
    JClouds APIs S  ComputeService API S  For managing compute nodes (VMs) in the cloud S  Blobstore API S  For storing data in the cloud
  • 11.
    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
  • 12.
    Starting a VMfrom an Image
  • 13.
    If You Don’tHave an Image?
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    Blobstore API S  Keyabstractions S  Container S  Folder S  Blob S  Supported providers S  AWS (S3), CloudOne, HP, Azure, Ninefold, Rackspace, Synaptic
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    Demonstration S  Scenario S  Startan 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
  • 26.
    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)
  • 27.
    Cons S  Still inthe Apache Incubator S  Limited documentation S  Potential “Jar hell”
  • 28.
    Summary S  Cloud computingbrings 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.
  • 29.
    Thank You &Questions
  • 30.
    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