introduction to apache jclouds at nyjavasig
DESCRIPTION
TRANSCRIPT
Introduction toApache jclouds
Everett Toews
Developer Advocate
@everett_toews
NYJavaSIGAugust 20, 2014 @ 6:00 pm
Intro
Developer
PMC and Committer on Apache jclouds
Intro
Advocate
Intro
Operations
Co-author of The OpenStack Ops Guide
docs.openstack.org/ops
CloudFlavour
Cloud
IaaS
Cloud
Private
Cloud
Public
Green == Your Problem
Cloud
Infrastructure
with an API
OpenStackand
Rackspace
“To produce the ubiquitous Open Source Cloud Computing platform that will meet the needs of public and private clouds regardless of size, by being simple to implement and massively scalable.”
OpenStack
OpenStack
Identity
(Keystone)
OpenStack
OpenStack
Object Storage
(Swift)
OpenStack
OpenStack
Compute
(Nova)
OpenStack
OpenStack
Block Storage
(Cinder)
OpenStack
OpenStack
Networks
(Neutron)
OpenStack
OpenStack
Databases
(Trove)
OpenStack
OpenStack
Images
(Glance)
OpenStack
OpenStack
Orchestration
(Heat)
OpenStack
OpenStack
Dashboard
(Horizon)
OpenStack
“We work with you to create the infrastructure that performs best for your business, built on open-source technologies and fueled by our unparalleled expertise—so you can move at the speed your business and your customers demand.”
OpenStack
Rackspace
Rackspace
And
Rackspace
• Load Balancers• Auto Scale• Monitoring• DNS• Big Data• Backup
Multi-Cloud
Multi-Cloud
Application
Portability
Multi-Cloud
Why?
Multi-Cloud
Disaster Recovery
Multi-Cloud
Privacy
Multi-Cloud
Cost
Multi-Cloud
Performance
Multi-Cloud
Support
Multi-Cloud
Hybrid
Multi-Cloud
Eggs In
One Basket
Multi-Cloud
One Size
Fits All
Multi-Cloud
Avoid Lock-in
Introduction to Apache jclouds
jclouds
jclouds
Apache jclouds is an open source multi-cloud toolkit for the Java platform that gives you the freedom to create applications that are portable across clouds while giving you full control to use cloud-specific features.
jclouds
Open Source
jclouds
Multi-Cloud
jclouds
Toolkit
jclouds
Java platform
jclouds
Portable
jclouds
Full Control
jclouds
Cloud-Specific
jclouds
Freedom
jclouds
Use Case
User Application
App
Conceptsand
Code
Concept
ResourcesWeb Service CallsDefaults
API
Code
Defaults
Web Service Call (cloud-specific)Resource
Top Level API
2 .credentials("myUsername", "myPassword")
3 .endpoint("http://myOpenStack.com:5000/v2.0/")
1 NovaApi novaApi = ContextBuilder.newBuilder("openstack-nova")
4 .buildApi(NovaApi.class);
6 ServerCreated server = serverApi.create("serverName", "imageId", "flavorId");
5 ServerApi serverApi = novaApi.getServerApi("region");
Resource API
Context
Concept
EndpointOverridesConfiguration
Provider
API
…
Code
2 .credentials("myUsername", "myPassword")
1 NovaApi novaApi = ContextBuilder.newBuilder("rackspace-cloudservers-us”)
3 .buildApi(NovaApi.class);
4 ServerApi serverApi = novaApi.getServerApi("region");
5 ServerCreated server = serverApi.create("serverName", "imageId", "flavorId");
Provider:• Endpoint• Overrides• Configuration
Concept
Portable Abstraction (View)
API
…
Provider
…
OR
Code
2 .credentials("myUsername", "myPassword")
1 ComputeServiceContext context = ContextBuilder.newBuilder("rack-cs-us")
3 .buildView(ComputeServiceContext.class);
4 ComputeService computeService = context.getComputeService();
Portable Abstraction (View)
Code
1 Template template = computeService.templateBuilder()
2 .locationId("locationId")
3 .osFamily(OsFamily.UBUNTU)
4 .minRam(2048)
5 .options(inboundPorts(22, 80))
6 .build();
7 computeService.createNodesInGroup("groupName", 3, template);
Web Service Call (portable)
Community
Community
Clouds
Community
Users
Users
YOU?
jclouds’ Top Contributors•Abiquo•Cloudera•CloudSoft•HP•Maginatics•Rackspace•XebiaLabs
Community
github.com/jclouds/jclouds•8,500+ commits•100+ contributors•80+ releases
Community
repository.apache.org•12,000+ downloads (July 2014)
jclouds
jclouds.apache.org/community/
User Application
App
App
Jenkins
jclouds plugin
Master
Where Doesjclouds Live?
Deployment
YourSystem
The CloudAP I
User
Deployment
YourSystem
The CloudAP I
User
Deployment
YourSystem
The CloudAP I
User
Deployment
API
The Cloud
YourSystem
User
What Can jclouds Do For You?
jclouds
Plumbing
jclouds
(Re)Authentication
jclouds
Pagination
jclouds
State Polling
jclouds
Rate Limiting
jclouds
Retry
jclouds
Smoothing
Rough Edges
jclouds
Packaged
jclouds
All-in-one
jclouds
Production Code
jclouds
Sample Code
jclouds
Documentation
User Application
App
App
Demo
All the JARs!
Demo
jclouds.apache.org/guides/rackspace/
Subset the JARs!
What’s New?What’s Next?
What’s New?
•jclouds 1.8.0•Docker
What’s Next?
•jclouds 2.0.0 •Java 7 in 2.0.0 !!!•Release every 6 weeks
Thank You
jclouds.apache.org
Everett Toews
Developer Advocate
@everett_toews