javaone 2014: taming the cloud database with jclouds
DESCRIPTION
- The Cloud - OpenStack - jclouds - OpenStack Trove for users - jclouds for contributorsTRANSCRIPT
![Page 2: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/2.jpg)
Before we begin: Setup
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
2
Virtual Machine pre-setup provided
http://rack.to/jo14vm
Avoid downloading during this presentation
Convenient way to get up to speed with jclouds
![Page 3: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/3.jpg)
Before we begin: Setup
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
3
Alternatively you need
Oracle Java 7
http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-
ubuntu-via.html
maven
http://maven.apache.org/download.cgi
git
git config --global core.autocrlf false
![Page 4: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/4.jpg)
Before we begin: Setup
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
4
Testing on your machine (no subscriptions)
Devstack
Download yourself
http://devstack.org/
Run in cloud
http://blog.phymata.com/2014/04/18/devstack-icehouse-on-the-
rackspace-cloud/
Providers: Rackspace, HP, others
http://www.openstack.org/marketplace/public-clouds/
![Page 5: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/5.jpg)
Before we begin: Setup
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
5
Testing on your machine with Rackspace:
http://rack.to/jo14signup
![Page 6: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/6.jpg)
Before we begin: Setup
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
6
git clone https://github.com/zack-shoylev/jclouds-
developer-examples.git
Multiple branches
git clone https://github.com/rackerlabs/jclouds-
examples.git
Branch trove-example-only
![Page 7: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/7.jpg)
Introductions
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
7
Zack Shoylev
irc: zacksh twitter: @zackshoylev
freenode #jclouds
Also email
@rackspace.com
![Page 8: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/8.jpg)
Introductions
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
8
Developer Experience
![Page 9: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/9.jpg)
Goals
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
9
jclouds
Create a database in the cloud
Abstractions and how to contribute
How to add support for an API
![Page 10: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/10.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
10
Networked and distributed computing
Variety of services
Compute (servers)
Storage (files)
Databases
…
![Page 11: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/11.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
11
Can’t someone else do it?
![Page 12: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/12.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
12
![Page 13: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/13.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
13
Public cloud (external provider)
Private cloud (internal deployment)
Hybrid cloud
Public + Private
Rackspace example
![Page 14: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/14.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
14
Your
System
S
D
K
Cloud
A
P
I
VM VM
VM
This can be an application server
Or your home machine
Or belong to one of your end users
Or a cloud VM
Or a smartphone
jclouds
![Page 15: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/15.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
15
Advantages
Metered pricing (pay as you go)
Project scalability (unlimited)
Safer (offsite/redundant)
Economies of scale
Expertise
Support
![Page 16: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/16.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
16
Disadvantages
Less hardware control
Provider-controlled downtime
Virtualization (efficiency)
Provider lock-in
Provider-specific apis/sdks/features
Expensive to switch clouds or deploy locally
jclouds minimizes this disadvantage
![Page 17: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/17.jpg)
The Cloud
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
17
Database specific advantages
Optimized by provider
Settings
Container virtualization
Automated software updates
Redundant data storage
Backup
Migration
Choice
Clustering (upcoming)
Support
![Page 18: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/18.jpg)
OpenStack
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
18
Cloud OS
Open-sourced by Rackspace and NASA
(2010)
Free
Supported
AT&T, HP, IBM, Red Hat, Rackspace, Dell, Cisco,
Intel, VMware, …
![Page 19: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/19.jpg)
OpenStack
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
19
http://stackalytics.com/
![Page 20: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/20.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
20
Cloud SDK
Apache project
Java (and Clojure)
Easy
Portable
Cloud-agnostic
Community
Open source
![Page 21: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/21.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
21
https://jclouds.apache.org/
![Page 22: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/22.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
22
HTTP requests, responses, retries
Authentication and re-authentication
Pagination
Polling
Rate limits
Retries
Abstractions
Logging
Less code
![Page 23: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/23.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
23
![Page 24: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/24.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
24
Services
Storage
Compute
VM Images
Load Balancers
DNS
Databases
…
Providers
Openstack
Rackspace
HP
Amazon
Azure
…
![Page 25: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/25.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
25
AWS aws-ec2 US-VA,US-CA,IE,SG
Bluelock bluelock-vcloud-zone01 US-IN
CloudSigma US cloudsigma-lvs US-NV
CloudSigma CH cloudsigma-zrh CH-ZH
CloudSigma DC cloudsigma-wdc US-DC
DigitalOcean digitalocean
ElasticHosts GB elastichosts-lon-b GB-LND
ElasticHosts GB elastichosts-lon-p GB-LND
ElasticHosts US elastichosts-sat-p US-TX
Go2Cloud go2cloud-jhb1 ZA-GP
GoGrid gogrid US-CA,US-VA
Green House Data greenhousedata-element-
vcloud
US-WY
HP hpcloud-compute US-NV
Ninefold ninefold-compute AU-NSW
OpenHosting openhosting-east1 US-VA
Rackspace UK (First Gen) cloudservers-uk GB-SLG
Rackspace US (First Gen) cloudservers-us US-IL,US-TX
Rackspace UK (Next Gen) rackspace-cloudservers-uk GB-SLG
Rackspace US (Next Gen) rackspace-cloudservers-us US-IL,US-TX
SeverLove serverlove-z1-man GB-MAN
SkaliCloud skalicloud-sdg-my MY-10
SoftLayer softlayer
Compute
Providers
![Page 26: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/26.jpg)
jclouds
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
26
Showcase database code
Best practices
Compare with compute code
Gotchas and workarounds
Abstractions
![Page 27: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/27.jpg)
Requirements
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
27
Maven 3
Java 7+
jclouds
Windows or Linux [etc..] (thanks Java!)
![Page 28: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/28.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
28
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 29: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/29.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
29
Maven Dependencies
Selective subset
Versioning
jclouds-labs
![Page 30: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/30.jpg)
POM
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
30
https://github.com/jclouds/jclouds-examples/blob/master/rackspace/pom.xml
<dependency>
<groupId>org.apache.jclouds.provider</groupId>
<artifactId>rackspace-clouddatabases-us</artifactId>
<version>${jclouds.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.25</version>
</dependency>
![Page 31: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/31.jpg)
POM
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
31
mvn dependency:copy-dependencies "-DoutputDirectory=./lib"
![Page 32: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/32.jpg)
Logging
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
32
// This module is responsible for enabling logging Iterable<Module> modules = ImmutableSet.<Module> of(new SLF4JLoggingModule()); ComputeServiceContext context = ContextBuilder.newBuilder(provider) .credentials(username, apiKey) .modules(modules) // don't forget to add the modules to your context! .buildView(ComputeServiceContext.class);
logback.xml <configuration scan="false"> … <appender name="WIREFILE" class="ch.qos.logback.core.FileAppender"> <file>target/test-data/jclouds-wire.log</file> <encoder> <Pattern>%d %-5p [%c] [%thread] %m%n</Pattern> </encoder> </appender>
![Page 33: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/33.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
33
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 34: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/34.jpg)
Initialize
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
34
private final TroveApi troveApi;
troveApi = ContextBuilder
.newBuilder("rackspace-clouddatabases-us")
.credentials(username, apiKey)
.buildApi(TroveApi.class);
![Page 35: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/35.jpg)
Architecture
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
35
Cloud Databases
Trove
jclouds-database
Increasing level of abstraction
Provider settings:
Endpoint, etc.
Implementation code
Abstractions
![Page 36: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/36.jpg)
Architecture
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
36
Cloud Databases
Trove
jclouds-database
Increasing level of abstraction
Provider settings:
Endpoint, etc.
Implementation code
Abstractions
Not implemented
![Page 37: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/37.jpg)
Initialize
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
37
private final FlavorApi flavorApi;
flavorApi = troveApi.getFlavorApiForZone(ZONE);
![Page 38: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/38.jpg)
APIs
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
38
TroveApi
FlavorApi
InstanceApi
DatabaseApi
UserApi
Utils
![Page 39: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/39.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
39
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 40: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/40.jpg)
Create Instance
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
40
Flavor flavor = Iterables.getFirst(flavorApi.list(), null);
…
Instance instance = instanceApi.create(flavorId, size, name);
flavor.getId()
Volume size in GB
![Page 41: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/41.jpg)
Create Instance
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
41
Instance updatedInstance = awaitAvailable(instance, instanceApi);
![Page 42: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/42.jpg)
Create Instance
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
42
Instance updatedInstance = awaitAvailable(instance, instanceApi);
Polls status, waits until ready. Will not retry by itself!
![Page 43: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/43.jpg)
Actual Code
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
43
InstanceApi instanceApi = api.getInstanceApiForZone(zone);
for (int retries = 0; retries < 10; retries++) {
Instance instance = null;
try {
instance = instanceApi.create(flavorId, size, name);
} catch (Exception e) {
Uninterruptibles.sleepUninterruptibly(15, TimeUnit.SECONDS);
logger.error(Arrays.toString(e.getStackTrace()));
continue;
}
Instance updatedInstance = awaitAvailable(instance, instanceApi);
if (updatedInstance != null) {
return updatedInstance;
}
instanceApi.delete(instance.getId());
InstancePredicates.awaitDeleted(instanceApi).apply(instance);
}
return null;
![Page 44: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/44.jpg)
Actual Code
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
44
Utils.
getWorkingInstance(
String zone,
String name,
String flavorId,
int size)
![Page 45: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/45.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
45
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 46: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/46.jpg)
Create Database
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
46
troveApi = ContextBuilder.newBuilder(PROVIDER)
.credentials(username, apiKey)
.buildApi(TroveApi.class);
instanceApi = troveApi.getInstanceApiForZone(ZONE);
databaseApi = troveApi
.getDatabaseApiForZoneAndInstance(ZONE,getInstance().getId());
getSomeApiForXandYandZ – fairly common in jclouds
![Page 47: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/47.jpg)
Create Database
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
47
boolean result = databaseApi.create(NAME);
![Page 48: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/48.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
48
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 49: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/49.jpg)
Create User
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
49
userApi = troveApi
.getUserApiForZoneAndInstance(ZONE, instance.getId());
boolean result = userApi.create(UNAME, PASSWORD, DBNAME);
User name
User password
Database name
![Page 50: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/50.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
50
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
![Page 51: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/51.jpg)
Test Connection
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
51
Load balancer needed!
CreateLoadBalancer createLB = CreateLoadBalancer.builder()
.name(NAME)
.protocol("MYSQL")
.port(3306)
.algorithm(LoadBalancer.Algorithm.RANDOM)
.nodes(addNodes)
.virtualIPType(VirtualIP.Type.PUBLIC)
.build();
![Page 52: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/52.jpg)
Test Connection
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
52
loadBalancer = lbApi.create(createLB);
![Page 53: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/53.jpg)
Test Connection
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
53
StringBuilder connString = new StringBuilder();
connString.append("jdbc:mysql://");
connString
.append(getVirtualIPv4(getLb().getVirtualIPs()));
connString.append("/");
connString.append(DBNAME); connString.append("?user=");
connString.append(UNAME);
connString.append("&password=");
connString.append(PASSWORD);
![Page 54: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/54.jpg)
Test Connection
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
54
Connection conn =
DriverManager.getConnection(connString.toString());
![Page 55: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/55.jpg)
Test Connection
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
55
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 3+5");
rs.first();
System.out.format(" 3+5 is %s%n", rs.getInt(1));
![Page 56: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/56.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
56
jclouds examples
https://github.com/jclouds/jclouds-examples
More docs
http://jclouds.incubator.apache.org/documentation/
http://javadocs.jclouds.cloudbees.net/
Maven alternatives?
http://jclouds.incubator.apache.org/documentation/userguide/installation-guide/
Contribute!
https://wiki.apache.org/jclouds/How%20to%20Contribute
![Page 57: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/57.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
57
Linux
Compile
javac -classpath "lib/*:src/main/java/:src/main/resources/"
src/main/java/org/jclouds/examples/rackspace/*.java
Run
java -classpath "lib/*:src/main/java/:src/main/resources/"
org.jclouds.examples.rackspace.clouddatabases.CreateInstance username apikey
![Page 58: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/58.jpg)
Java Project
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
58
Windows
Compile
javac -classpath "lib/*;src/main/java/;src/main/resources/"
src/main/java/org/jclouds/examples/rackspace/*.java
Run
java -classpath "lib/*;src/main/java/;src/main/resources/"
org.jclouds.examples.rackspace.clouddatabases.CreateInstance username apikey
![Page 59: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/59.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
59
TroveApi
Backup Extension
Settings Extension
Clustering
Abstraction layer
![Page 60: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/60.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
60
TroveApi
Backup Extension
Settings Extension
Abstraction layer
Rackspace Microsoft Amazon
CouchDB
Salesforce
![Page 61: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/61.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
61
TroveApi
Backup Extension
Settings Extension
Abstraction layer
Rackspace Microsoft Amazon
CouchDB
Salesforce
![Page 62: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/62.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
62
Trove Roadmap
![Page 63: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/63.jpg)
Going forward
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
63
Collaborate!
http://jclouds.apache.org/
http://jclouds.apache.org/community/
![Page 64: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/64.jpg)
Implementing an API
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
64
On to the IDE
![Page 65: JavaOne 2014: Taming the Cloud Database with jclouds](https://reader034.vdocuments.site/reader034/viewer/2022051816/545ca132af7959be098b48af/html5/thumbnails/65.jpg)
Taming the Cloud Database with Apache jclouds
http://rack.to/jo14db
65
Thank you!
http://developer.rackspace.com
[email protected] Zack Shoylev
Software Developer
zacksh #jclouds
@zackshoylev