getting started with jclouds: multi cloud framework
DESCRIPTION
Session Presented @IndicThreads Cloud Computing Conference, Pune, India ( http://u10.indicthreads.com ) ------------ One of the big hurdles for an enterprise to move to the cloud is the fear of getting locked into a specific cloud implementation. This is one of the big reasons apart from security of data that keeps most of the enterprises out of the cloud space. Currently each vendor provides their unique set of API to interact with their Cloud services. This mandates a need to recode and refactor when moving from one cloud provider to the other. jClouds is a multi cloud framework which allows connection to multiple clouds such as Amazon, VMWare, Azure, and Rackspace. jClouds provides portable abstractions for cloud specific features, thus allowing the application to move from one cloud vendor to the other with relative ease. jClouds also had a simulators to operate in restricted environments like Google App Engine and Android. Unit testing and mocking is made easy through stub connections which simulate the cloud. Takeaways from the session * Understand the need for a multi cloud framework * showcase of abstractions for different cloud environments. * Introduction to capabilities of jClouds * Hands on application development using jClouds on GAETRANSCRIPT
8
global name space
key, value with metadata
http accessible
sites on demand
unlimited scaling
key value storage
Not the same!
9
other factors
File SizeResumability
CDNReplication
SLA
Consistency ModelAuthorization
API Complexity
Not the same!
13
OSS JAVA Framework for cloud enablement and inter cloud communication
3/2009, 1.0-beta6, 105.4k lines, $1.4M
Support many clouds including Amazon, VMWare, Azure, and Rackspace.
what is jClouds
14
easy to start
Simple interface
Deals withWeb Complexity
Performance
Unit Testability
Runtime portability
Open Source
Feels like javaand clojure
18
abstractions
BlobStore ( atmos, azure, rackspace, s3 )
Compute ( vcloud, ec2, gogrid, ibmdev,rackspace,rimu)
Blobstore Compute
19
blobstore
// initcontext = new BlobStoreContextFactory().createContext("s3",accesskeyid,secretaccesskey);
blobStore = context.getBlobStore();
// create containerblobStore.createContainerInLocation(null, "mycontainer");
// add blobblob = blobStore.newBlob("test");blob.setPayload("testdata");blobStore.putBlob(containerName, blob);
20
blobstore in detailManaging key-value storage providersSynchronous and Asynchronous APIs
BlobstoreContainer
Service
Blob
23
compute: provisioningprovisioning (and re-provisioning) is cheapAPIs = automationtools exist
forgetting to turn things offlicensingerratic service quality
cloud apis are sometimes unreliableapis are very different across cloudsfeatures are very different across cloudsaccidental complexity
27
alternatives
Roll-your-own
Jersey, RESTEasy
EC2-based cloud apis
typica, jets3t
Dasein Cloud API
Service provided SDKs
28
scepticism
api's are not that different to write a driver
open source cloud Ruby libraries (RightAws, RightRackspace, RightGoGrid, etc.) not actually that much work to abstract the API details away.
real benefit of standards - semantics of resources like vlans, security groups,
reassignable IP addresses, network attached block storage devices, etc
30
References:- http://code.google.com/p/jclouds/http://anyweight.blogspot.com/http://www.slideshare.net/marakana/jclouds-at-san-francisco-java-user-grouphttp://www.youtube.com/watch?v=queixYPsIq0
31
http://www.inphina.comhttp://thoughts.inphina.com