• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
jclouds High Level Overview by Adrian Cole

jclouds High Level Overview by Adrian Cole






Total Views
Views on SlideShare
Embed Views



4 Embeds 738

http://blog.phymata.com 733
http://localhost 3
http://translate.googleusercontent.com 1
http://phymata.wordpress.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    jclouds High Level Overview by Adrian Cole jclouds High Level Overview by Adrian Cole Presentation Transcript

    • Overview@jclouds
    • Agenda• What is jclouds?• What does it do?• Relationship to other projects• Code examples• Extras
    • What is jclouds?• Apache licensed Java multi-cloud SDK• b 3/2009; ~525k loc; 110 contributors• connects tools portably regardless of, yet also availing backend• Over 40 cloud providers supported• next release is 1.6 (March)
    • 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
    • API Approach• Backend before abstraction • proprietary features, multiple abstractions• Async/Sync api mirroring • scalably deal with 400ms-3m response time• Guava• Universal Testing Approach • unit, “expect”, and live tests
    • Who’s integrating? you?
    • Alternatives• Roll-your-own • Jersey, RESTEasy• EC2-based cloud apis • typica, jets3t• Dasein Cloud API• Proprietary Service Provider SDKs
    • Portable APIs BlobStore LoadBalancer DNS, Block Storage, Compute Network, IdentityProvider-Specific HooksEmbeddable40 built-in providers & 20 apis and dialects!
    • java overview github jclouds/jclouds// initcontext = ContextBuilder.newBuilder(“cloudfiles-us”) .credentials(apikey, secret) .buildView(BlobStoreContext.class);blobStore = context.getBlobStore();// create containerblobStore.createContainerInLocation(null, “adriansmovies”);// add blobblob = blobStore.blobBuilder("sushi.avi").payload(file).build();blobStore.putBlob(“adriansmovies”, blob);
    • java overview github jclouds/jclouds// initcontext = 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 portsnodes = compute.createNodesInGroup(“hbase-master”, 1, runScript(install). inboundPorts(60000, 60010));// gather my ip addressesfor (NodeMetadata node : nodes) { node.getPublicAddresses(); node.getPrivateAddresses();} @jclouds 12
    • jclouds locationsLocation helpsnormalize placementacross resource typesAll top-level resources listAssignableLocationshave a location USLocation metadata is IE SGextensible
    • jclouds modularityAPIs are softwarefocused jclouds-blobstoreProviders are offering s3focused aws-s3 scality-ring walrusAPI + location + googlestorage scaleup-storagedefaults = Provider eucaluptus-partnercloud-s3
    • New  Toys• Fluent  Pagina,on  (1.5)• Small  distribu,on  (1.6)@jclouds
    • Fluent Pagination• Many apis == pagination differences• Desire ease, but also ability to “opt-out” of lazy continuations• Can we make it easier to filter/transform resources?
    • FluentIterablelazy advance through all your metrics:FluentIterable<Metric> allMetrics = cloudwatch.getMetricApi().list().concat();advance only until we find the load balancer we want:Optional<LoadBalancer> firstInterestingLoadBalancer = elb .getLoadBalancerApi().list() .concat() .firstMatch(isInterestingLB());get only the first page of google instancesIterableWithMarker<Instance> firstPage = gce.getInstanceApiForProject("myproject").listFirstPage();
    • Small Distribution• Before 1.6 we had more deps• We now have much less deps• You can now make a <5MB cloud app!
    • Where  now?• jclouds.org• github/jclouds/jclouds-­‐examples• jclouds@googlegroups.com• @jclouds@jclouds
    • java overview github jclouds/jclouds// create a couple nodes and open a couple portsnodes = compute.createNodesInGroup(“web-prod”, 2, runScript(installApache). inboundPorts(22, 8080));// load balance the nodes mapping port 80 -> 8080lb = lbapi.createLoadBalancerInLocation(null, “web-prod”, “HTTP”, 80, 8080, nodes);// gather my lb addressesfor (String lbAddress : lb.getAddresses()) {} @jclouds 20
    • chef integration github jclouds/jclouds-chefif (any(cookbookVersions, containsRecipe("apache2"))) runList = new RunListBuilder().addRecipe("apache2").build();chef.updateRunListForGroup(runList, “web-prod”);boot = chef.createClientAndBootstrapScriptForGroup(“web-prod”);nodes = compute.createNodesInGroup(“web-prod”, 1, runScript(boot));
    • CLI github jclouds/jclouds-cli
    • BYON github jclouds/jclouds