SlideShare a Scribd company logo
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, Identity


Provider-Specific Hooks
Embeddable

40 built-in providers & 20 apis and dialects!
java overview                        github jclouds/jclouds


// init
context = ContextBuilder.newBuilder(“cloudfiles-us”)
                        .credentials(apikey, secret)
                        .buildView(BlobStoreContext.class);

blobStore = context.getBlobStore();

// create container
blobStore.createContainerInLocation(null, “adriansmovies”);

// add blob
blob = blobStore.blobBuilder("sushi.avi").payload(file).build();
blobStore.putBlob(“adriansmovies”, blob);
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();
}


 @jclouds                                                                12
jclouds locations
Location helps
normalize placement
across resource types
All top-level resources   listAssignableLocations

have a location                                           US



Location metadata is                            IE
                                                     SG


extensible
jclouds modularity
APIs are software
focused                               jclouds-blobstore



Providers are offering                    s3


focused                  aws-s3
                                          scality-ring        walrus


API + location +          googlestorage

                                          scaleup-storage

defaults = 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?
FluentIterable
lazy 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 instances
IterableWithMarker<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 ports
nodes = compute.createNodesInGroup(“web-prod”, 2,
                                 runScript(installApache).
                                 inboundPorts(22, 8080));

// load balance the nodes mapping port 80 -> 8080
lb = lbapi.createLoadBalancerInLocation(null, “web-prod”,
                                        “HTTP”, 80, 8080,
                                        nodes);

// gather my lb addresses
for (String lbAddress : lb.getAddresses()) {

}




    @jclouds                                                 20
chef integration           github jclouds/jclouds-chef



if (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

More Related Content

KEY
Jclouds Intro
PDF
Apache jclouds and Docker
PDF
Apache JClouds
PDF
JClouds at San Francisco Java User Group
PDF
Getting Started with jClouds: Multi Cloud Framework
PPTX
Introduction to Apache jclouds
PPTX
Introducing container as-a-service support to apache libcloud
PPTX
Openstack: An Open Source Cloud Framework
Jclouds Intro
Apache jclouds and Docker
Apache JClouds
JClouds at San Francisco Java User Group
Getting Started with jClouds: Multi Cloud Framework
Introduction to Apache jclouds
Introducing container as-a-service support to apache libcloud
Openstack: An Open Source Cloud Framework

What's hot (20)

PPTX
Openshift Container Platform on Azure
PDF
Virtualized Containers - How Good is it - Ananth - Siemens - CC18
PPTX
Deploy Elasticsearch Cluster on Kubernetes
PPT
Deploying and running Grails in the cloud
PDF
Working in the multi-cloud with libcloud
PDF
Microsoft Azure Container Service - DockerCH
PDF
Libcloud and j clouds
PPT
Docker and CloudStack
PPTX
Deploying a 3 tier application using docker
PDF
AWS-compared-to-OpenStack
PDF
AWS Elastic Container Service - DockerHN
PDF
Building Web Scale Apps with Docker and Mesos by Alex Rukletsov (Mesosphere)
PDF
Kubernetes Networking - Sreenivas Makam - Google - CC18
PPTX
Setting up Kubernetes with tectonic
PDF
Shakr - Container CI/CD with Google Cloud Platform
PDF
Elasticsearch on Kubernetes
PDF
Modern Web development and operations practices
PPTX
Running OpenStack on Amazon AWS, Alex Fishman
PDF
Kubernetes on Top of Mesos on Top of DCOS
PDF
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Openshift Container Platform on Azure
Virtualized Containers - How Good is it - Ananth - Siemens - CC18
Deploy Elasticsearch Cluster on Kubernetes
Deploying and running Grails in the cloud
Working in the multi-cloud with libcloud
Microsoft Azure Container Service - DockerCH
Libcloud and j clouds
Docker and CloudStack
Deploying a 3 tier application using docker
AWS-compared-to-OpenStack
AWS Elastic Container Service - DockerHN
Building Web Scale Apps with Docker and Mesos by Alex Rukletsov (Mesosphere)
Kubernetes Networking - Sreenivas Makam - Google - CC18
Setting up Kubernetes with tectonic
Shakr - Container CI/CD with Google Cloud Platform
Elasticsearch on Kubernetes
Modern Web development and operations practices
Running OpenStack on Amazon AWS, Alex Fishman
Kubernetes on Top of Mesos on Top of DCOS
Securing Containers - Sathyajit Bhat - Adobe - Container Conference 18
Ad

Similar to jclouds High Level Overview by Adrian Cole (20)

PPT
jclouds overview
PPTX
Introduction to Apache jclouds at NYJavaSIG
PPT
Introduction to Apache CloudStack by David Nalley
PPT
Cloud State of the Union for Java Developers
PDF
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
PDF
Spark on Dataproc - Israel Spark Meetup at taboola
PDF
AWS re:Invent 2016 Day 2 Keynote re:Cap
PDF
AWS re:Invent 2016 Day 2 Keynote re:Cap
PDF
Three Degrees of Mediation: Challenges and Lessons in building Cloud-agnostic...
PPTX
비동기 회고 발표자료
PDF
CQ5 and Sling overview
PPTX
Node.js on Azure
PDF
Fighting Against Chaotically Separated Values with Embulk
PPTX
Quick and Easy Development with Node.js and Couchbase Server
PDF
Cloud-native legacy applications
PDF
WebGUI Developers Workshop
PDF
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
PDF
TechBeats #2
PDF
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
PPTX
Liferay (DXP) 7 Tech Meetup for Developers
jclouds overview
Introduction to Apache jclouds at NYJavaSIG
Introduction to Apache CloudStack by David Nalley
Cloud State of the Union for Java Developers
20141021 AWS Cloud Taekwon - Startup Best Practices on AWS
Spark on Dataproc - Israel Spark Meetup at taboola
AWS re:Invent 2016 Day 2 Keynote re:Cap
AWS re:Invent 2016 Day 2 Keynote re:Cap
Three Degrees of Mediation: Challenges and Lessons in building Cloud-agnostic...
비동기 회고 발표자료
CQ5 and Sling overview
Node.js on Azure
Fighting Against Chaotically Separated Values with Embulk
Quick and Easy Development with Node.js and Couchbase Server
Cloud-native legacy applications
WebGUI Developers Workshop
Devops continuousintegration and deployment onaws puttingmoneybackintoyourmis...
TechBeats #2
On CloudStack, Docker, Kubernetes, and Big Data…Oh my ! By Sebastien Goasguen...
Liferay (DXP) 7 Tech Meetup for Developers
Ad

More from Everett Toews (20)

PDF
All You Need to Know About Kustomize
PDF
Intro to InnerSource
PPTX
An OpenShift Migration: From 3.9 to 4.5
PPTX
Cloud Native Summit 2019 Summary
PPTX
DevOps: Chop wood. Carry water.
PPTX
Intro to Docker Swarm
PPTX
Ciao: Continuous Integration for Apps on OpenStack
PPTX
DevStack: Learn OpenStack by Running OpenStack
PPTX
Enabling Walk Up Contributions to Your Documentation at GlueCon
PPTX
You Sir, Sir Vey
PPTX
Walk n Doc
PPTX
Nashorn
PPTX
Enabling Walk Up Contributions to Your Project Documentation
PPTX
Introduction to Apache jclouds at ApacheCon 2014
PPTX
Women Who Code
PPTX
PPTX
Cybera Summit
PPTX
The OpenStack Community Welcomes Developers in All Languages
PPTX
NetflixOSS on OpenStack
PPTX
jclouds at HKJUG
All You Need to Know About Kustomize
Intro to InnerSource
An OpenShift Migration: From 3.9 to 4.5
Cloud Native Summit 2019 Summary
DevOps: Chop wood. Carry water.
Intro to Docker Swarm
Ciao: Continuous Integration for Apps on OpenStack
DevStack: Learn OpenStack by Running OpenStack
Enabling Walk Up Contributions to Your Documentation at GlueCon
You Sir, Sir Vey
Walk n Doc
Nashorn
Enabling Walk Up Contributions to Your Project Documentation
Introduction to Apache jclouds at ApacheCon 2014
Women Who Code
Cybera Summit
The OpenStack Community Welcomes Developers in All Languages
NetflixOSS on OpenStack
jclouds at HKJUG

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Big Data Technologies - Introduction.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Machine learning based COVID-19 study performance prediction
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
A Presentation on Artificial Intelligence
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Cloud computing and distributed systems.
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Modernizing your data center with Dell and AMD
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Diabetes mellitus diagnosis method based random forest with bat algorithm
NewMind AI Monthly Chronicles - July 2025
Big Data Technologies - Introduction.pptx
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation_ Review paper, used for researhc scholars
NewMind AI Weekly Chronicles - August'25 Week I
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Machine learning based COVID-19 study performance prediction
“AI and Expert System Decision Support & Business Intelligence Systems”
A Presentation on Artificial Intelligence
Network Security Unit 5.pdf for BCA BBA.
Advanced methodologies resolving dimensionality complications for autism neur...
Cloud computing and distributed systems.
Per capita expenditure prediction using model stacking based on satellite ima...
Modernizing your data center with Dell and AMD
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

jclouds High Level Overview by Adrian Cole

  • 2. Agenda • What is jclouds? • What does it do? • Relationship to other projects • Code examples • Extras
  • 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. 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. 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
  • 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
  • 9. Alternatives • Roll-your-own • Jersey, RESTEasy • EC2-based cloud apis • typica, jets3t • Dasein Cloud API • Proprietary Service Provider SDKs
  • 10. Portable APIs BlobStore LoadBalancer DNS, Block Storage, Compute Network, Identity Provider-Specific Hooks Embeddable 40 built-in providers & 20 apis and dialects!
  • 11. java overview github jclouds/jclouds // init context = ContextBuilder.newBuilder(“cloudfiles-us”) .credentials(apikey, secret) .buildView(BlobStoreContext.class); blobStore = context.getBlobStore(); // create container blobStore.createContainerInLocation(null, “adriansmovies”); // add blob blob = blobStore.blobBuilder("sushi.avi").payload(file).build(); blobStore.putBlob(“adriansmovies”, blob);
  • 12. 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(); } @jclouds 12
  • 13. jclouds locations Location helps normalize placement across resource types All top-level resources listAssignableLocations have a location US Location metadata is IE SG extensible
  • 14. jclouds modularity APIs are software focused jclouds-blobstore Providers are offering s3 focused aws-s3 scality-ring walrus API + location + googlestorage scaleup-storage defaults = Provider eucaluptus-partnercloud-s3
  • 15. New  Toys • Fluent  Pagina,on  (1.5) • Small  distribu,on  (1.6) @jclouds
  • 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. FluentIterable lazy 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 instances IterableWithMarker<Instance> firstPage = gce.getInstanceApiForProject("myproject").listFirstPage();
  • 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. Where  now? • jclouds.org • github/jclouds/jclouds-­‐examples • jclouds@googlegroups.com • @jclouds @jclouds
  • 20. java overview github jclouds/jclouds // create a couple nodes and open a couple ports nodes = compute.createNodesInGroup(“web-prod”, 2, runScript(installApache). inboundPorts(22, 8080)); // load balance the nodes mapping port 80 -> 8080 lb = lbapi.createLoadBalancerInLocation(null, “web-prod”, “HTTP”, 80, 8080, nodes); // gather my lb addresses for (String lbAddress : lb.getAddresses()) { } @jclouds 20
  • 21. chef integration github jclouds/jclouds-chef if (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. CLI github jclouds/jclouds-cli
  • 23. BYON github jclouds/jclouds