1
Taming the Cloud Database
with
Apache jclouds
http://rack.to/jo14db
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
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 config --global core.autocrlf false
Before we begin: Setup
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
4
Testing on your machine (no subscriptions)
Devstack
http://devstack.org/
http://blog.phymata.com/2014/04/18/devstack-icehouse-on-the-
rackspace-cloud/
Providers: Rackspace, HP, others
http://www.openstack.org/marketplace/public-clouds/
Before we begin: Setup
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
5
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
Introductions
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
6
➢ Zack Shoylev
➢ irc: zacksh twitter: @zackshoylev
freenode #jclouds
Also email
@rackspace.com
Introductions
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
7
Developer Experience
https://developer.rackspace.com/support/
Goals
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
8
➢ jclouds
➢ Create a database in the cloud
➢ Abstractions and how to contribute
➢ How to add support for an API
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
9
➢ Networked and distributed computing
➢ Variety of services
➢ Compute (servers)
➢ Storage (files)
➢ Databases
➢ Email
➢ …
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
10
➢ Can’t someone else do it?
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
11
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
12
➢ Public cloud (external provider)
➢ Private cloud (internal deployment)
➢ Hybrid cloud
➢ Public + Private
Rackspace
example
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
13
Your
System
S
D
K
Cloud
AP
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
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
14
➢ Advantages
➢ Metered pricing (pay as you go)
➢ Project scalability (unlimited)
➢ Safer (offsite/redundant)
➢ Economies of scale
➢ Expertise
➢ Support
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
15
➢ 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
The Cloud
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
16
➢ Database specific advantages
➢ Optimized by provider
➢ Settings
➢ Container virtualization
➢ Automated software updates
➢ Redundant data storage
➢ Backup
➢ Migration
➢ Choice
➢ Clustering (upcoming)
➢ Support
OpenStack
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
17
➢ Cloud OS
➢ Open-sourced by Rackspace and NASA
(2010)
➢ Free
➢ Supported
➢ AT&T, HP, IBM, Red Hat, Rackspace, Dell, Cisco,
Intel, VMware, …
OpenStack
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
18
➢ http://stackalytics.com/
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
19
➢ Cloud SDK
➢ Apache project
➢ Java (and Clojure)
➢ Easy
➢ Portable
➢ Cloud-agnostic
➢ Community
➢ Open source
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
20
➢ https://jclouds.apache.org/
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
21
➢ HTTP requests, responses, retries
➢ Authentication and re-authentication
➢ Pagination
➢ Polling
➢ Rate limits
➢ Retries
➢ Abstractions
➢ Logging
➢ Less code
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
22
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
23
➢ Services
➢ Storage
➢ Compute
➢ VM Images
➢ Load Balancers
➢ DNS
➢ Databases
➢ …
➢ Providers
➢ Openstack
➢ Rackspace
➢ HP
➢ Amazon
➢ Azure
➢ …
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
24
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
jclouds
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
25
➢ Showcase database code
➢ Best practices
➢ Compare with compute code
➢ Gotchas and workarounds
➢ Abstractions
Requirements
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
26
➢ Maven 3
➢ Java 7+
➢ jclouds
➢ Windows or Linux [etc..] (thanks Java!)
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
27
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
28
➢ Maven Dependencies
➢ Selective subset
➢ Versioning
➢ jclouds-labs
POM
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
29
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>
POM
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
30
mvn dependency:copy-dependencies "-DoutputDirectory=./lib"
Logging
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
31
// 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>
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
32
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Initialize
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
33
private final TroveApi troveApi;
troveApi = ContextBuilder
.newBuilder("rackspace-clouddatabases-us")
.credentials(username, apiKey)
.buildApi(TroveApi.class);
Architecture
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
34
Cloud Databases
Trove
jclouds-database
Increasing level of
abstraction
Provider
settings:
Endpoint, etc.
Implementation
code
Abstraction
s
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
Abstraction
s
Not implemented
Initialize
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
36
private final FlavorApi flavorApi;
flavorApi = troveApi.getFlavorApiForZone(ZONE);
APIs
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
37
➢ TroveApi
➢ FlavorApi
➢ InstanceApi
➢ DatabaseApi
➢ UserApi
➢ Utils
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
38
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Create Instance
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
39
Flavor flavor = Iterables.getFirst(flavorApi.list(), null);
…
Instance instance = instanceApi.create(flavorId, size, name);
flavor.getId()
Volume size in
GB
Create Instance
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
40
Instance updatedInstance = awaitAvailable(instance, instanceApi);
Create Instance
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
41
Instance updatedInstance = awaitAvailable(instance, instanceApi);
Polls status, waits until ready. Will not retry by
itself!
Actual Code
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
42
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;
Actual Code
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
43
Utils.
getWorkingInstance(
String zone,
String name,
String flavorId,
int size)
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
44
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Create Database
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
45
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
Create Database
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
46
boolean result = databaseApi.create(NAME);
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
47
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Create User
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
48
userApi = troveApi
.getUserApiForZoneAndInstance(ZONE, instance.getId());
boolean result = userApi.create(UNAME, PASSWORD, DBNAME);
User name
User password
Database
name
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
49
Skeleton
Project
Create User
Create Instance
Initialize API
Create Database
Test Connection
Cleanup
Test Connection
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
50
Load balancer needed!
CreateLoadBalancer createLB = CreateLoadBalancer.
builder()
.name(NAME)
.protocol("MYSQL")
.port(3306)
.algorithm(LoadBalancer.Algorithm.RANDOM)
.nodes(addNodes)
.virtualIPType(VirtualIP.Type.PUBLIC)
.build();
Test Connection
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
51
loadBalancer = lbApi.create(createLB);
Test Connection
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
52
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);
Test Connection
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
53
Connection conn =
DriverManager.getConnection(connString.toString());
Test Connection
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
54
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 3+5");
rs.first();
System.out.format(" 3+5 is %s%n", rs.getInt(1));
Going forward
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
55
➢ 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
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
56
➢ 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
Java Project
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
57
➢ 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
Going forward
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
58
➢ TroveApi
➢ Backup Extension
➢ Settings Extension
➢ Clustering
➢ Abstraction layer
Going forward
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
59
➢ TroveApi
➢ Backup Extension
➢ Settings Extension
➢ Abstraction layer
Rackspac
e
Microsof
t
Amazo
n
CouchDB
Salesforc
e
Going forward
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
60
➢ TroveApi
➢ Backup Extension
➢ Settings Extension
➢ Abstraction layer
Rackspac
e
Microsof
t
Amazo
n
CouchDB
Salesforc
e
Going forward
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
61
Collaborate!
http://jclouds.apache.org/
http://jclouds.apache.org/community/
Implementing an API
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
62
Fork <link to my fork>
Alternatively, fork jclouds-labs-openstack (for
openstack).
Implementing an API
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
63
On to the IDE
Taming the Cloud Database with Apache jclouds http://rack.
to/jo14db
64
Thank you!
http://developer.rackspace.com
sdk-support@rackspace.com
Zack Shoylev
Software Developer
zacksh #jclouds
@zackshoylev

More Related Content

PDF
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
PDF
Taming the Cloud Database with Apache jclouds
PDF
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
PDF
Troubleshooting Apache Cloudstack
PDF
Deploying VMware vCloud Hybrid Service with Puppet - PuppetConf 2013
PPTX
Understanding DSE Search by Matt Stump
PDF
Running your Java EE 6 Applications in the Cloud
PDF
Successful Software Development with Apache Cassandra
Taming the Cloud Database with Apache jclouds, ApacheCon Europe 2014
Taming the Cloud Database with Apache jclouds
Troubleshooting Strategies for CloudStack Installations by Kirk Kosinski
Troubleshooting Apache Cloudstack
Deploying VMware vCloud Hybrid Service with Puppet - PuppetConf 2013
Understanding DSE Search by Matt Stump
Running your Java EE 6 Applications in the Cloud
Successful Software Development with Apache Cassandra

What's hot (19)

PDF
Performance Benchmarking of Clouds Evaluating OpenStack
PDF
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
PPTX
Think Distributed: The Hazelcast Way
PDF
JFokus 2011 - Running your Java EE 6 apps in the Cloud
PDF
Varnish Configuration Step by Step
PDF
Cloudera hadoop installation
PDF
Introduction to Stacki at Atlanta Meetup February 2016
PDF
Building an Impenetrable ZooKeeper - Kathleen Ting
PPTX
Hazelcast Essentials
PPTX
Geek Nights Hong Kong
PPTX
Monkey man
PDF
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
KEY
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
PDF
Scaling Your Cache
PPTX
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
PDF
Building scalable applications with hazelcast
PPT
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
PDF
Design & Performance - Steve Souders at Fastly Altitude 2015
PDF
Production Readiness Strategies in an Automated World
Performance Benchmarking of Clouds Evaluating OpenStack
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
Think Distributed: The Hazelcast Way
JFokus 2011 - Running your Java EE 6 apps in the Cloud
Varnish Configuration Step by Step
Cloudera hadoop installation
Introduction to Stacki at Atlanta Meetup February 2016
Building an Impenetrable ZooKeeper - Kathleen Ting
Hazelcast Essentials
Geek Nights Hong Kong
Monkey man
Integrating multiple CDN providers at Etsy - Velocity Europe (London) 2013
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
Scaling Your Cache
DataStax | Best Practices for Securing DataStax Enterprise (Matt Kennedy) | C...
Building scalable applications with hazelcast
Varnish and Drupal- Accelerating Website Performance and Flexibility with Var...
Design & Performance - Steve Souders at Fastly Altitude 2015
Production Readiness Strategies in an Automated World
Ad

Viewers also liked (15)

DOCX
Các mã sản phẩm
PPTX
Sandra sanchezintegradora1
PPTX
LAN's by Group 1
PDF
Planet
PPTX
Structure of taxation and classification of taxes
PDF
Itqon
PPTX
The niche in the market: The case of Belgian Wines
PDF
Glossary english ma. gpe. mata
PPT
Digestive system
PPTX
Skill Accelerator Presentation
PPTX
La Coruña 2013
PPTX
PDF
8th class-result-2013-faisalabad
PPT
PPT
A Theoretical Analysis of the Tenets of Multinational Enterprise (MNE)
Các mã sản phẩm
Sandra sanchezintegradora1
LAN's by Group 1
Planet
Structure of taxation and classification of taxes
Itqon
The niche in the market: The case of Belgian Wines
Glossary english ma. gpe. mata
Digestive system
Skill Accelerator Presentation
La Coruña 2013
8th class-result-2013-faisalabad
A Theoretical Analysis of the Tenets of Multinational Enterprise (MNE)
Ad

Similar to JavaOne 2014: Taming the Cloud Database with jclouds (20)

PPTX
Introduction to Apache jclouds at NYJavaSIG
PDF
Apache JClouds
KEY
Jclouds Intro
PDF
jclouds High Level Overview by Adrian Cole
PPTX
jclouds Support Training
PPT
jclouds overview
PPTX
Control the Clouds - Developer Experience with jclouds.pptx
KEY
Sjug aug 2010_cloud
PPTX
What are clouds made from
PDF
Know your cirrus from your cumulus
PPTX
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
PDF
Getting started with jClouds
PDF
Getting Started with jClouds: Multi Cloud Framework
PPTX
jclouds at HKJUG
PPTX
Introduction to Apache jclouds
PDF
How to Run Amazon Web Services Workloads on Your VMware vCloud®
PPTX
jclouds BoF
PDF
Cloud Workshop - Presentation
PDF
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
PDF
Libcloud and j clouds
Introduction to Apache jclouds at NYJavaSIG
Apache JClouds
Jclouds Intro
jclouds High Level Overview by Adrian Cole
jclouds Support Training
jclouds overview
Control the Clouds - Developer Experience with jclouds.pptx
Sjug aug 2010_cloud
What are clouds made from
Know your cirrus from your cumulus
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Getting started with jClouds
Getting Started with jClouds: Multi Cloud Framework
jclouds at HKJUG
Introduction to Apache jclouds
How to Run Amazon Web Services Workloads on Your VMware vCloud®
jclouds BoF
Cloud Workshop - Presentation
Making Cloudy Peanut Butter Cups: Apache CloudStack + Riak CS
Libcloud and j clouds

Recently uploaded (20)

PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Architecture types and enterprise applications.pdf
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
Modernising the Digital Integration Hub
PPT
What is a Computer? Input Devices /output devices
PDF
STKI Israel Market Study 2025 version august
PPTX
The various Industrial Revolutions .pptx
PPT
Geologic Time for studying geology for geologist
PPTX
Internet of Everything -Basic concepts details
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
sbt 2.0: go big (Scala Days 2025 edition)
PDF
UiPath Agentic Automation session 1: RPA to Agents
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PPTX
TEXTILE technology diploma scope and career opportunities
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
A contest of sentiment analysis: k-nearest neighbor versus neural network
Architecture types and enterprise applications.pdf
Final SEM Unit 1 for mit wpu at pune .pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Modernising the Digital Integration Hub
What is a Computer? Input Devices /output devices
STKI Israel Market Study 2025 version august
The various Industrial Revolutions .pptx
Geologic Time for studying geology for geologist
Internet of Everything -Basic concepts details
Credit Without Borders: AI and Financial Inclusion in Bangladesh
sbt 2.0: go big (Scala Days 2025 edition)
UiPath Agentic Automation session 1: RPA to Agents
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
TEXTILE technology diploma scope and career opportunities
Consumable AI The What, Why & How for Small Teams.pdf
Module 1.ppt Iot fundamentals and Architecture
Custom Battery Pack Design Considerations for Performance and Safety
Getting started with AI Agents and Multi-Agent Systems
A proposed approach for plagiarism detection in Myanmar Unicode text

JavaOne 2014: Taming the Cloud Database with jclouds

  • 1. 1 Taming the Cloud Database with Apache jclouds http://rack.to/jo14db
  • 2. 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
  • 3. 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 config --global core.autocrlf false
  • 4. Before we begin: Setup Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 4 Testing on your machine (no subscriptions) Devstack http://devstack.org/ http://blog.phymata.com/2014/04/18/devstack-icehouse-on-the- rackspace-cloud/ Providers: Rackspace, HP, others http://www.openstack.org/marketplace/public-clouds/
  • 5. Before we begin: Setup Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 5 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
  • 6. Introductions Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 6 ➢ Zack Shoylev ➢ irc: zacksh twitter: @zackshoylev freenode #jclouds Also email @rackspace.com
  • 7. Introductions Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 7 Developer Experience https://developer.rackspace.com/support/
  • 8. Goals Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 8 ➢ jclouds ➢ Create a database in the cloud ➢ Abstractions and how to contribute ➢ How to add support for an API
  • 9. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 9 ➢ Networked and distributed computing ➢ Variety of services ➢ Compute (servers) ➢ Storage (files) ➢ Databases ➢ Email ➢ …
  • 10. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 10 ➢ Can’t someone else do it?
  • 11. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 11
  • 12. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 12 ➢ Public cloud (external provider) ➢ Private cloud (internal deployment) ➢ Hybrid cloud ➢ Public + Private Rackspace example
  • 13. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 13 Your System S D K Cloud AP 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
  • 14. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 14 ➢ Advantages ➢ Metered pricing (pay as you go) ➢ Project scalability (unlimited) ➢ Safer (offsite/redundant) ➢ Economies of scale ➢ Expertise ➢ Support
  • 15. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 15 ➢ 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
  • 16. The Cloud Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 16 ➢ Database specific advantages ➢ Optimized by provider ➢ Settings ➢ Container virtualization ➢ Automated software updates ➢ Redundant data storage ➢ Backup ➢ Migration ➢ Choice ➢ Clustering (upcoming) ➢ Support
  • 17. OpenStack Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 17 ➢ Cloud OS ➢ Open-sourced by Rackspace and NASA (2010) ➢ Free ➢ Supported ➢ AT&T, HP, IBM, Red Hat, Rackspace, Dell, Cisco, Intel, VMware, …
  • 18. OpenStack Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 18 ➢ http://stackalytics.com/
  • 19. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 19 ➢ Cloud SDK ➢ Apache project ➢ Java (and Clojure) ➢ Easy ➢ Portable ➢ Cloud-agnostic ➢ Community ➢ Open source
  • 20. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 20 ➢ https://jclouds.apache.org/
  • 21. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 21 ➢ HTTP requests, responses, retries ➢ Authentication and re-authentication ➢ Pagination ➢ Polling ➢ Rate limits ➢ Retries ➢ Abstractions ➢ Logging ➢ Less code
  • 22. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 22
  • 23. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 23 ➢ Services ➢ Storage ➢ Compute ➢ VM Images ➢ Load Balancers ➢ DNS ➢ Databases ➢ … ➢ Providers ➢ Openstack ➢ Rackspace ➢ HP ➢ Amazon ➢ Azure ➢ …
  • 24. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 24 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
  • 25. jclouds Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 25 ➢ Showcase database code ➢ Best practices ➢ Compare with compute code ➢ Gotchas and workarounds ➢ Abstractions
  • 26. Requirements Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 26 ➢ Maven 3 ➢ Java 7+ ➢ jclouds ➢ Windows or Linux [etc..] (thanks Java!)
  • 27. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 27 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 28. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 28 ➢ Maven Dependencies ➢ Selective subset ➢ Versioning ➢ jclouds-labs
  • 29. POM Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 29 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>
  • 30. POM Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 30 mvn dependency:copy-dependencies "-DoutputDirectory=./lib"
  • 31. Logging Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 31 // 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>
  • 32. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 32 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 33. Initialize Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 33 private final TroveApi troveApi; troveApi = ContextBuilder .newBuilder("rackspace-clouddatabases-us") .credentials(username, apiKey) .buildApi(TroveApi.class);
  • 34. Architecture Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 34 Cloud Databases Trove jclouds-database Increasing level of abstraction Provider settings: Endpoint, etc. Implementation code Abstraction s
  • 35. 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 Abstraction s Not implemented
  • 36. Initialize Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 36 private final FlavorApi flavorApi; flavorApi = troveApi.getFlavorApiForZone(ZONE);
  • 37. APIs Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 37 ➢ TroveApi ➢ FlavorApi ➢ InstanceApi ➢ DatabaseApi ➢ UserApi ➢ Utils
  • 38. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 38 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 39. Create Instance Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 39 Flavor flavor = Iterables.getFirst(flavorApi.list(), null); … Instance instance = instanceApi.create(flavorId, size, name); flavor.getId() Volume size in GB
  • 40. Create Instance Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 40 Instance updatedInstance = awaitAvailable(instance, instanceApi);
  • 41. Create Instance Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 41 Instance updatedInstance = awaitAvailable(instance, instanceApi); Polls status, waits until ready. Will not retry by itself!
  • 42. Actual Code Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 42 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;
  • 43. Actual Code Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 43 Utils. getWorkingInstance( String zone, String name, String flavorId, int size)
  • 44. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 44 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 45. Create Database Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 45 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
  • 46. Create Database Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 46 boolean result = databaseApi.create(NAME);
  • 47. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 47 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 48. Create User Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 48 userApi = troveApi .getUserApiForZoneAndInstance(ZONE, instance.getId()); boolean result = userApi.create(UNAME, PASSWORD, DBNAME); User name User password Database name
  • 49. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 49 Skeleton Project Create User Create Instance Initialize API Create Database Test Connection Cleanup
  • 50. Test Connection Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 50 Load balancer needed! CreateLoadBalancer createLB = CreateLoadBalancer. builder() .name(NAME) .protocol("MYSQL") .port(3306) .algorithm(LoadBalancer.Algorithm.RANDOM) .nodes(addNodes) .virtualIPType(VirtualIP.Type.PUBLIC) .build();
  • 51. Test Connection Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 51 loadBalancer = lbApi.create(createLB);
  • 52. Test Connection Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 52 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);
  • 53. Test Connection Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 53 Connection conn = DriverManager.getConnection(connString.toString());
  • 54. Test Connection Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 54 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT 3+5"); rs.first(); System.out.format(" 3+5 is %s%n", rs.getInt(1));
  • 55. Going forward Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 55 ➢ 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
  • 56. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 56 ➢ 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
  • 57. Java Project Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 57 ➢ 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
  • 58. Going forward Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 58 ➢ TroveApi ➢ Backup Extension ➢ Settings Extension ➢ Clustering ➢ Abstraction layer
  • 59. Going forward Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 59 ➢ TroveApi ➢ Backup Extension ➢ Settings Extension ➢ Abstraction layer Rackspac e Microsof t Amazo n CouchDB Salesforc e
  • 60. Going forward Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 60 ➢ TroveApi ➢ Backup Extension ➢ Settings Extension ➢ Abstraction layer Rackspac e Microsof t Amazo n CouchDB Salesforc e
  • 61. Going forward Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 61 Collaborate! http://jclouds.apache.org/ http://jclouds.apache.org/community/
  • 62. Implementing an API Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 62 Fork <link to my fork> Alternatively, fork jclouds-labs-openstack (for openstack).
  • 63. Implementing an API Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 63 On to the IDE
  • 64. Taming the Cloud Database with Apache jclouds http://rack. to/jo14db 64 Thank you! http://developer.rackspace.com [email protected] Zack Shoylev Software Developer zacksh #jclouds @zackshoylev

Editor's Notes

  • #13: A common problem with a common solution