Overview
@jclouds
Agenda
•What is jclouds?
•What does it do?
•Relationship to other projects
•Code examples
•Extras
What is jclouds?
• Java multi-cloud SDK
• b 3/2009; currently apache incubator
• connects tools portably, yet also
availing backend
• Over 40 cloud providers supported
What does it do?
• Helps projects become cloud projects,
and developers become cloud
developers.
• through consistency in
• Tools vs Services
• Services vs Model
• API approach
Tools vs Services
• jclouds helps existing tools connect to
cloud services
• a consistent integration pattern and
configuration
• adjustable library dependencies
• sample patterns, integrations, and
abstractions
Services vs Model
• jclouds simplifies modeling of cloud
services
• Standards focus with pragmatic
extensions. (JSR-330, 311)
• Clean means of addressing service
quirks
• pluggable strategies for error/retry
handling
API Approach
• Backend before abstraction
• proprietary features, multiple
abstractions
• Functional java (guava)
• Universal Testing Approach
• unit, “expect”, and live tests
BlobStore LoadBalancer
Compute
DNS, Block Storage,
Network, Identity
Portable APIs
Embeddable
Provider-Specific Hooks
40 built-in providers & 20 apis and dialects!
Who’s integrating?
YOU?
// init
context = ContextBuilder.newBuilder(“cloudfiles-us”)
.credentials(apikey, secret)
.buildView(BlobStoreContext.class);
blobStore = context.getBlobStore();// create
containerblobStore.createContainerInLocation(null, “adriansmovies”);
// add blob
blob = blobStore.blobBuilder("sushi.avi").payload(file).build();
blobStore.putBlob(“adriansmovies”, blob);
java overview github jclouds/jclouds
11@jclouds
java overview github jclouds/jclouds
// init
context = ContextBuilder.newBuilder(“openstack-nova”)
.endpoint(“https://keystone:5000/v2.0”)
.credentials(tenantUser, password)
.modules(singleton(new SshjSshClientModule()))
.buildView(ComputeServiceContext.class);
compute = context.getComputeService();
// create a couple nodes and open a couple ports
nodes = compute.createNodesInGroup(“hbase-master”, 1,
runScript(install).
inboundPorts(60000, 60010));
// gather my ip addresses
for (NodeMetadata node : nodes) {
node.getPublicAddresses();
node.getPrivateAddresses();
}
11
CLI github jclouds/jclouds-cli
jclouds locations
Location helps
normalize placement
across resource types
All top-level resources
have a location
Location metadata is
extensible
jclouds modularity
APIs are software
focused Providers are
offering focused
API + location + defaults
= Provider
@jclouds
What’s new?
• Apache incubator graduation vote!
• Portable Multi-part Upload (big blobs)
• Portable security groups
Lessons Learned
• Cloud providers are generally quite helpful
• Not everyone rolls their own, but many do
• Extensions are an api-visible way to
differentiate on products like OpenStack
• Nothing’s really compatible for long
• Plan to refactor testing approach every year
Alternatives
• Roll-your-own
• Cloud-specific SDKs
• Dasein Cloud API
• Netflix Denominator (DNS only)
@jclouds
Where now?
• jclouds.incubator.apache.org
• github/jclouds/jclouds-examples
• IRC #jclouds on freenode

jclouds overview

  • 1.
  • 2.
    Agenda •What is jclouds? •Whatdoes it do? •Relationship to other projects •Code examples •Extras
  • 3.
    What is jclouds? •Java multi-cloud SDK • b 3/2009; currently apache incubator • connects tools portably, yet also availing backend • Over 40 cloud providers supported
  • 4.
    What does itdo? • Helps projects become cloud projects, and developers become cloud developers. • through consistency in • Tools vs Services • Services vs Model • API approach
  • 5.
    Tools vs Services •jclouds helps existing tools connect to cloud services • a consistent integration pattern and configuration • adjustable library dependencies • sample patterns, integrations, and abstractions
  • 6.
    Services vs Model •jclouds simplifies modeling of cloud services • Standards focus with pragmatic extensions. (JSR-330, 311) • Clean means of addressing service quirks • pluggable strategies for error/retry handling
  • 7.
    API Approach • Backendbefore abstraction • proprietary features, multiple abstractions • Functional java (guava) • Universal Testing Approach • unit, “expect”, and live tests
  • 8.
    BlobStore LoadBalancer Compute DNS, BlockStorage, Network, Identity Portable APIs Embeddable Provider-Specific Hooks 40 built-in providers & 20 apis and dialects!
  • 9.
  • 10.
    // init context =ContextBuilder.newBuilder(“cloudfiles-us”) .credentials(apikey, secret) .buildView(BlobStoreContext.class); blobStore = context.getBlobStore();// create containerblobStore.createContainerInLocation(null, “adriansmovies”); // add blob blob = blobStore.blobBuilder("sushi.avi").payload(file).build(); blobStore.putBlob(“adriansmovies”, blob); java overview github jclouds/jclouds
  • 11.
    11@jclouds java overview githubjclouds/jclouds // init context = ContextBuilder.newBuilder(“openstack-nova”) .endpoint(“https://keystone:5000/v2.0”) .credentials(tenantUser, password) .modules(singleton(new SshjSshClientModule())) .buildView(ComputeServiceContext.class); compute = context.getComputeService(); // create a couple nodes and open a couple ports nodes = compute.createNodesInGroup(“hbase-master”, 1, runScript(install). inboundPorts(60000, 60010)); // gather my ip addresses for (NodeMetadata node : nodes) { node.getPublicAddresses(); node.getPrivateAddresses(); } 11
  • 12.
  • 13.
    jclouds locations Location helps normalizeplacement across resource types All top-level resources have a location Location metadata is extensible
  • 14.
    jclouds modularity APIs aresoftware focused Providers are offering focused API + location + defaults = Provider
  • 15.
    @jclouds What’s new? • Apacheincubator graduation vote! • Portable Multi-part Upload (big blobs) • Portable security groups
  • 16.
    Lessons Learned • Cloudproviders are generally quite helpful • Not everyone rolls their own, but many do • Extensions are an api-visible way to differentiate on products like OpenStack • Nothing’s really compatible for long • Plan to refactor testing approach every year
  • 17.
    Alternatives • Roll-your-own • Cloud-specificSDKs • Dasein Cloud API • Netflix Denominator (DNS only)
  • 18.
    @jclouds Where now? • jclouds.incubator.apache.org •github/jclouds/jclouds-examples • IRC #jclouds on freenode

Editor's Notes

  • #2 test note
  • #6 ant, vfs plugins, examples for spring, jruby, simple usage, google appengine
  • #9 AbstractionsBlobStore ( atmos, azure, rackspace, s3 )Compute ( ec2, rackspace, vcloud, gogrid...)Clojure bindingsStuff (stubs/filesystem providers, plugins...)
  • #11 focused on semantic portability across clouds I want an image running ubuntu and don ’ t want to know the id absolute portability where possible, but expose vendor apis where needed
  • #12 notice you don ’ t even have to choose an operating system
  • #14 ex. you can include add metadata to locations to assign ISO-3166 for geopolitical regions
  • #15 global namespace, act of tenancy and uniquely identifies your namespace similar to dns azure scopes container names to accounts nirvanix scopes based on application and then subaccount
  • #16 Guava! But normally only a couple-of-week wait