0
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 reg...
What does it do?• Helps projects become cloud projects,  and developers become cloud  developers. • through consistency in...
Tools vs Services• jclouds helps existing tools connect to  cloud services • a consistent integration pattern and    config...
Services vs Model• jclouds simplifies modeling of cloud  services • Standards focus with pragmatic    extensions. (JSR-330,...
API Approach• Backend before abstraction    •   proprietary features, multiple abstractions• Async/Sync api mirroring    •...
Who’s integrating?      you?
Alternatives• Roll-your-own • Jersey, RESTEasy• EC2-based cloud apis • typica, jets3t• Dasein Cloud API• Proprietary Servi...
Portable APIs      BlobStore     LoadBalancer                   DNS, Block Storage,      Compute       Network, IdentityPr...
java overview                        github jclouds/jclouds// initcontext = ContextBuilder.newBuilder(“cloudfiles-us”)    ...
java overview                        github jclouds/jclouds// initcontext = ContextBuilder.newBuilder(“openstack-nova”)   ...
jclouds locationsLocation helpsnormalize placementacross resource typesAll top-level resources   listAssignableLocationsha...
jclouds modularityAPIs are softwarefocused                               jclouds-blobstoreProviders are offering          ...
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 continuation...
FluentIterablelazy advance through all your metrics:FluentIterable<Metric> allMetrics = cloudwatch.getMetricApi().list().c...
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...
chef integration           github jclouds/jclouds-chefif (any(cookbookVersions, containsRecipe("apache2")))  runList = new...
CLI   github jclouds/jclouds-cli
BYON   github jclouds/jclouds
Upcoming SlideShare
Loading in...5
×

jclouds High Level Overview by Adrian Cole

1,665

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,665
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "jclouds High Level Overview by Adrian Cole"

  1. 1. Overview@jclouds
  2. 2. Agenda• What is jclouds?• What does it do?• Relationship to other projects• Code examples• Extras
  3. 3. 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)
  4. 4. 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
  5. 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. 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
  7. 7. 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
  8. 8. Who’s integrating? you?
  9. 9. Alternatives• Roll-your-own • Jersey, RESTEasy• EC2-based cloud apis • typica, jets3t• Dasein Cloud API• Proprietary Service Provider SDKs
  10. 10. Portable APIs BlobStore LoadBalancer DNS, Block Storage, Compute Network, IdentityProvider-Specific HooksEmbeddable40 built-in providers & 20 apis and dialects!
  11. 11. 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);
  12. 12. 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
  13. 13. jclouds locationsLocation helpsnormalize placementacross resource typesAll top-level resources listAssignableLocationshave a location USLocation metadata is IE SGextensible
  14. 14. jclouds modularityAPIs are softwarefocused jclouds-blobstoreProviders are offering s3focused aws-s3 scality-ring walrusAPI + location + googlestorage scaleup-storagedefaults = Provider eucaluptus-partnercloud-s3
  15. 15. New  Toys• Fluent  Pagina,on  (1.5)• Small  distribu,on  (1.6)@jclouds
  16. 16. 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?
  17. 17. 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();
  18. 18. Small Distribution• Before 1.6 we had more deps• We now have much less deps• You can now make a <5MB cloud app!
  19. 19. Where  now?• jclouds.org• github/jclouds/jclouds-­‐examples• jclouds@googlegroups.com• @jclouds@jclouds
  20. 20. 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
  21. 21. 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));
  22. 22. CLI github jclouds/jclouds-cli
  23. 23. BYON github jclouds/jclouds
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×