SlideShare a Scribd company logo
1 of 32
Download to read offline
Adrian Cole / Cloudsoft


        Cloud Storage Simplified


Tuesday, November 1, 11
Adrian Cole (@jclouds)
    founded jclouds march 2009
    chief evangelist at Cloudsoft




Tuesday, November 1, 11
Agenda




    ā€¢   intro
    ā€¢   concepts
    ā€¢   jclouds
    ā€¢   code
    ā€¢   awkward silence (or Q/A)




Tuesday, November 1, 11
Blob Storage

        Set<String> containers = namespacesInMyAccount;

        Map<String, InputStream> keyValues = contentsOfContainer;




                                                            4

Tuesday, November 1, 11
Blob Storage
                                                     adrian@googlestorage




                                                           Love Letters


                                                          Movies
                 Tron                      putBlob
                                                     The One    Shrek




                                                     Goonies   The Blob
                3d = true
                url = http://disney.go.com/tron




                                                                            5

Tuesday, November 1, 11
Can I use
 BlobStores
 portably?




                          6

Tuesday, November 1, 11
are they close enough?




                              7

Tuesday, November 1, 11
who builds and runs
           your service?




                                 8

Tuesday, November 1, 11
9

Tuesday, November 1, 11
tenancy




                          10

Tuesday, November 1, 11
size and
                          resumability

                                   11

Tuesday, November 1, 11
How many copies?




                                             12

Tuesday, November 1, 11
Consistency model?




                                               13

Tuesday, November 1, 11
Are you experienced?      Is your product?




                                    14

Tuesday, November 1, 11
15

Tuesday, November 1, 11
CODE AND SIGN THE HTTP REQUEST


                                                                         PUT /adriansmovies/sushi.avi HTTP/1.1
     PUT /sushi.avi HTTP/1.1                                             Host: <account>.blob.core.windows.net
     Host: adriansmovies.s3.amazonaws.com                                Content-Length: 734859264
     Content-Length: 734859264                                           Date: Wed, 01 Mar 2006 12:00:00 GMT
     Date: Wed, 01 Mar 2006 12:00:00 GMT                                 Authorization: SharedKey <app>:signature
     Authorization: signature                                            x-ms-meta-Chef: Kawasaki
     x-amz-meta-Chef: Kawasaki




                                                            POST /namespace/adriansmovies/sushi.avi HTTP/1.1
                         PUT /<api version>/<account>/
                                                            Content-Length: 734859264
                         adriansmovies/sushi.avi HTTP/1.1
                                                            Date: Wed, 01 Mar 2006 12:00:00 GMT
                         Host: storage.clouddrive.com
                                                            x-emc-uid: <uid>
                         Transfer-Encoding: chunked
                                                            x-emc-signature: signature
                         X-Auth-Token: session-token
                                                            x-emc-meta: Chef=Kawasaki
                         X-Object-Meta-Chef: Kawasaki

                                                                                                   16

Tuesday, November 1, 11
CODE AND SIGN THE HTTP REQUEST


GET /ws/IMFS/GetStorageNodeExtended.ashx?&ļ¬leOverwrite=true&ipRestricted=true&destFolderPath= adriansmovies&sizeBytes=
734859264&ļ¬rstByteExpiration=6000&lastByteExpiration=259200&sessionToken=session-token HTTP/1.1

POST /Upload.ashx?uploadToken=from_above&destFolderPath=adriansmovies HTTP/1.1
Host: from_above
Content-Length: 734859382
Content-Type=multipart/form-data; boundary=--jclouds--
Authorization=Basic GpjbG9=
----jclouds--
Content-Disposition: form-data; name="sushi.avi"; ļ¬lename="sushi.avi"
Content-Type: application/octetstring
...

PUT /ws/Metadata/SetMetadata.ashx?&path=Folders/adriansmovies/sushi.avi&sessionToken=session-token&metadata=Chef:Kawasaki HTTP/1.1




                                                                                                                     17

Tuesday, November 1, 11
CODE AND SIGN THE HTTP REQUEST



                          POST /<api version>/containers/id_of_ adriansmovies/contents HTTP/1.1
                          Content-Length: 734859382
                          Content-Type=multipart/form-data; boundary=--jclouds--
                          Authorization=Basic GpjbG9=
                          ----jclouds--
                          Content-Disposition: form-data; name="sushi.avi"; ļ¬lename="sushi.avi"
                          Content-Type: application/octetstring
                          ...

                          PUT /<api version>/ļ¬les/from_above/metadata/Chef HTTP/1.1
                          Content-Length: 8
                          Content-Type: text/plain
                          Authorization: Basic GpjbG9=
                          Kawasaki




                                                                                                  18

Tuesday, November 1, 11
POST https://vcloud.safesecureweb.com/api/v0.8/vdc/1/action/instantiateVAppTemplate HTTP/1.1




    do you want to
                                                                               Accept: application/vnd.vmware.vcloud.vApp+xml
                                                                               Content-Type: application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml

                                                                               <InstantiateVAppTemplateParams xmlns="http://www.vmware.com/vcloud/v0.8"
                                                                               	                 xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                                                                               	                 name="my-vapp"
                                                                               	                 xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://vcloud.safesecureweb.com/ns/vcloud.xsd">

                                                                               	                 <VAppTemplate
                                                                               	                 	                   href="https://vcloud.safesecureweb.com/api/v0.8/vAppTemplate/3" />

                                                                               	                 <InstantiationParams>
                                                                               	                 	                    <VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8">

                                                                               	                 	                    	                   <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">
                                                                               	                 	                    	                   	                    <InstanceID

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID>
                                                                               	                 	                    	                   	                    <ResourceType

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType>
                                                                               	                 	                    	                   	                    <VirtualQuantity

  GET https://api.gogrid.com/api/grid/server/add?                              	
                                                                               	
                                                                                                 	
                                                                                                 	
                                                                                                                      	
                                                                                                                      	
                                                                                                                                          	
                                                                                                                                          </Item>
                                                                                                                                                               	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</VirtualQuantity>


                                                                               	                 	                    	                   <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">

  v=1.5&name=serverName&server.ram=memory&image=img55&ip=127.0.0.1&isSandbox=true&descri
                                                                               	                 	                    	                   	                    <InstanceID

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID>
                                                                               	                 	                    	                   	                    <ResourceType


  ption=fooy&sig=3f446f171455fbb5574aecff4997b273&api_key=foo HTTP/1.1
                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType>
                                                                               	                 	                    	                   	                    <VirtualQuantity

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">512</VirtualQuantity>
                                                                               	                 	                    	                   </Item>

                                                                               	                 	                    	                   <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1">
                                                                               	                 	                    	                   	                    <InstanceID

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">9</InstanceID>
                                                                               	                 	                    	                   	                    <ResourceType

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">17</ResourceType>
                                                                               	                 	                    	                   	                    <VirtualQuantity

                                                                               	                 	                    	                   	                    	                    xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1024</VirtualQuantity>
                                                                               	                 	                    	                   </Item>

                                                                               	                 	                   </VirtualHardwareSection>
                                                                               	                 	                   <NetworkConfigSection>

                                                                               	                 	                    	                   <NetworkConfig name="my-vapp">
                                                                               	                 	                    	                   	                    <Features>

                                                                               	                 	                    	                   	                    	                    <FenceMode>allowInOut</FenceMode>
                                                                               	                 	                    	                   	                    </Features>

                                                                               	                 	                    	                   	                    <NetworkAssociation href="https://vcloud.safesecureweb.com/network/1990" />
                                                                               	                 	                    	                   </NetworkConfig>

                                                                               	                 	                    </NetworkConfigSection>
                                                                               	                 </InstantiationParams>

                                                                               </InstantiateVAppTemplateParams>




                                  Deal with Errors
         POST https://rimuhosting.com/r/orders/new-vps HTTP/1.1
         Accept: Accept: application/json
         Content-Type: application/json
         {"request":{"instantiation_options":{"distro":"lenny","domain_name":"test.ivan.api.com"},"pricing_plan_code":"MIRO1B","meta_data":[]}}




                                  Deal with Concurrency
                     POST https://ec2.eu-west-1.amazonaws.com/ HTTP/1.1
                     Content-Type: application/x-www-form-urlencoded
                     Version=2010-06-15&Action=RunInstances&ImageId=ami-
                     voo&MinCount=1&MaxCount=5&KernelId=kernelId&Monitoring.Enabled=true&SecurityGroup.


                                  Deal with Complexity
                     1=group1&SecurityGroup.2=group2&Placement.AvailabilityZone=eu-west-1a




                                    POST http://serverManagementUrl/servers?format=json HTTP/1.1
                                    Accept: application/json
                                    Content-Type: application/json
                                    {"server":{"name":"ralphie","imageId":2,"flavorId":1,"sharedIpGroupId":2,"addresses":{"public":["127.0.0.1"]}}}


          POST https://www-180.ibm.com/cloud/enterprise/beta/api/rest/20090403/instances HTTP/1.1
          Accept: Accept: application/json
          Content-Type: application/x-www-form-urlencoded
          location=location&imageID=22&name=name&instanceType=instanceType&ip=1&publicKey=MOO&volumeID=2&oss.storage.id.0.mnt-
          %2Fmnt&insight_admin_password=myPassword1&db2_admin_password=myPassword2&report_user_password=myPassword3




                                                                                                                                                                                                                                                                                                         19

Tuesday, November 1, 11
open source
   feels like java (and clojure)
   portability between clouds
   deal with web complexity
   unit testability
   thread-safe and scalable


                                   20

Tuesday, November 1, 11
Portable APIs


               BlobStore          LoadBalancer


               Compute            Table


       Provider-Specific Hooks

       Embeddable


      Over 30 Tested Providers!


                                                 21

Tuesday, November 1, 11
jclouds locations

     Location helps
     normalize placement
     across resource types
     All top-level resources   listAssignableLocations

     have a location                                                US



     Location metadata is                                      SG
                                                     IE
     extensible

                                                          22

Tuesday, November 1, 11
jclouds modularity


                                          jclouds-blobstore



    APIs are software focused                 s3



    Providers are offering   aws-s3
                                              scality-ring        walrus

    focused                   googlestorage

                                              scaleup-storage

    API + location + defaults =
    Provider                                       eucaluptus-partnercloud-s3




                                                                    23

Tuesday, November 1, 11
Alternatives to jclouds

           Roll-your-own
              ā€¢ RESTEasy, Jersey

           Cloud-speciļ¬c SDKs
              ā€¢ typica, jets3t, Amazon SDK, vCloud SDK

           Dasein Cloud API



                                                         24

Tuesday, November 1, 11
BlobStore




                          25

Tuesday, November 1, 11
java overview                        github jclouds/jclouds


 // init
 context = new BlobStoreContextFactory().createContext("s3",
                                                       accesskeyid,
                                                       secret);
 blobStore = context.getBlobStore();

 // create container
 blobStore.createContainerInLocation(null, ā€œadriansmoviesā€);

 // add blob
 blob = blobStore.blobBuilder("sushi.avi").payload(file).build();
 blobStore.putBlob(ā€œadriansmoviesā€, blob);




                                                               26

Tuesday, November 1, 11
clojure overview                 github jclouds/jclouds



 (use 'org.jclouds.blobstore2)

 (def *blobstore* (blobstore ā€œazureblobā€ account key))

 (create-container *blobstore* ā€œmoviesā€)
 (put-blob *blobstore* ā€œmoviesā€
   (blob ā€œtron.mp4ā€œ :payload tron-file))




                                                 27

Tuesday, November 1, 11
Whoā€™s coding BlobStore?




                            28

Tuesday, November 1, 11
Filesystem                                  github jclouds/jclouds


 props.setProperty(FilesystemConstants.PROPERTY_BASEDIR, ā€œbasedirā€);

 blobStore =          new BlobStoreContextFactory().
                               createContext("filesystem", props);




 (blobStore "filesystem" ā€œā€ ā€œā€
             FilesystemConstants/PROPERTY_BASEDIR ā€œbasedirā€);




                                                                     29

Tuesday, November 1, 11
BlobRequestSigner                    github jclouds/jclouds


 HttpRequest request = context.getSigner().
                               signGetBlob(ā€œadriansmoviesā€,
                                            "sushi.avi");




 (let [request (sign-blob-request "adriansmovies"
                                  "sushi.avi" {:method :get})])




                                                              30

Tuesday, November 1, 11
Whatā€™s next?


                ā€¢ ACL support
                ā€¢ OutputStream returns
                ā€¢ Public/Private pathing




                                           31

Tuesday, November 1, 11
Questions?
                          github jclouds-examples


                             @jclouds
                      adrian@cloudsoftcorp.com


                                                    32

Tuesday, November 1, 11

More Related Content

What's hot

Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMs
Maarten Smeets
Ā 
Supporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStackSupporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStack
Donal Lafferty
Ā 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMs
Maarten Smeets
Ā 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
Ovidiu Dimulescu
Ā 

What's hot (20)

Optimizing WordPress Performance on Shared Web Hosting
Optimizing WordPress Performance on Shared Web HostingOptimizing WordPress Performance on Shared Web Hosting
Optimizing WordPress Performance on Shared Web Hosting
Ā 
Docker
DockerDocker
Docker
Ā 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java edition
Ā 
Cloudstack at Spotify
Cloudstack at SpotifyCloudstack at Spotify
Cloudstack at Spotify
Ā 
Optimizing Docker Images
Optimizing Docker ImagesOptimizing Docker Images
Optimizing Docker Images
Ā 
Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMs
Ā 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
Ā 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
Ā 
How to add a new hypervisor to CloudStack - Lessons learned from Hyper-V effort
How to add a new hypervisor to CloudStack - Lessons learned from Hyper-V effortHow to add a new hypervisor to CloudStack - Lessons learned from Hyper-V effort
How to add a new hypervisor to CloudStack - Lessons learned from Hyper-V effort
Ā 
Supporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStackSupporting Hyper-V 3.0 on Apache CloudStack
Supporting Hyper-V 3.0 on Apache CloudStack
Ā 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMs
Ā 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Ā 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
Ā 
iPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyiPaas with Fuse Fabric Technology
iPaas with Fuse Fabric Technology
Ā 
ģ œ4ķšŒ ķ•œźµ­IBMź³¼ ķ•Øź»˜ķ•˜ėŠ” ė‚œź³µė¶ˆė½ ģ˜¤ķ”ˆģ†ŒģŠ¤ ģøķ”„ė¼ ģ„øėÆøė‚˜-Ranchers
ģ œ4ķšŒ ķ•œźµ­IBMź³¼ ķ•Øź»˜ķ•˜ėŠ” ė‚œź³µė¶ˆė½ ģ˜¤ķ”ˆģ†ŒģŠ¤ ģøķ”„ė¼ ģ„øėÆøė‚˜-Ranchersģ œ4ķšŒ ķ•œźµ­IBMź³¼ ķ•Øź»˜ķ•˜ėŠ” ė‚œź³µė¶ˆė½ ģ˜¤ķ”ˆģ†ŒģŠ¤ ģøķ”„ė¼ ģ„øėÆøė‚˜-Ranchers
ģ œ4ķšŒ ķ•œźµ­IBMź³¼ ķ•Øź»˜ķ•˜ėŠ” ė‚œź³µė¶ˆė½ ģ˜¤ķ”ˆģ†ŒģŠ¤ ģøķ”„ė¼ ģ„øėÆøė‚˜-Ranchers
Ā 
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech TalkJava & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
Ā 
Apache CloudStack's Plugin Model: Balancing the Cathedral with a Bazaar
Apache CloudStack's Plugin Model:Balancing the Cathedral with a BazaarApache CloudStack's Plugin Model:Balancing the Cathedral with a Bazaar
Apache CloudStack's Plugin Model: Balancing the Cathedral with a Bazaar
Ā 
Apache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer AppApache httpd 2.4: The Cloud Killer App
Apache httpd 2.4: The Cloud Killer App
Ā 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
Ā 
Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)Docker in production: reality, not hype (OSCON 2015)
Docker in production: reality, not hype (OSCON 2015)
Ā 

Viewers also liked

Hum2310 sm2015 annotated study guide
Hum2310 sm2015 annotated study guideHum2310 sm2015 annotated study guide
Hum2310 sm2015 annotated study guide
ProfWillAdams
Ā 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?
OpenFest team
Ā 
Alport syndrome. group 7
Alport syndrome. group 7Alport syndrome. group 7
Alport syndrome. group 7
Joselle Balasa
Ā 
Arh2050 fa2014 syllabus
Arh2050 fa2014 syllabusArh2050 fa2014 syllabus
Arh2050 fa2014 syllabus
ProfWillAdams
Ā 
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæProduct Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
shibao800
Ā 
Hum2220 fa2014 syllabus
Hum2220 fa2014 syllabusHum2220 fa2014 syllabus
Hum2220 fa2014 syllabus
ProfWillAdams
Ā 
Hum2310 sm2015 syllabus
Hum2310 sm2015 syllabusHum2310 sm2015 syllabus
Hum2310 sm2015 syllabus
ProfWillAdams
Ā 
Daily routines by Valerie
Daily routines by ValerieDaily routines by Valerie
Daily routines by Valerie
lledocursotic
Ā 
Centrals nuclears
Centrals nuclearsCentrals nuclears
Centrals nuclears
elfaker
Ā 
Clothes & markets
Clothes & marketsClothes & markets
Clothes & markets
lledocursotic
Ā 
8 instrumento autoeficacia grupo 8
8   instrumento autoeficacia  grupo 88   instrumento autoeficacia  grupo 8
8 instrumento autoeficacia grupo 8
Luis Aracas
Ā 

Viewers also liked (20)

Hum2310 sm2015 annotated study guide
Hum2310 sm2015 annotated study guideHum2310 sm2015 annotated study guide
Hum2310 sm2015 annotated study guide
Ā 
Apache JClouds
Apache JCloudsApache JClouds
Apache JClouds
Ā 
Cloud foundry presentation
Cloud foundry presentation Cloud foundry presentation
Cloud foundry presentation
Ā 
Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud Foundry
Ā 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
Ā 
Arh1000 sp2016 syllabus
Arh1000 sp2016 syllabusArh1000 sp2016 syllabus
Arh1000 sp2016 syllabus
Ā 
Why kernelspace sucks?
Why kernelspace sucks?Why kernelspace sucks?
Why kernelspace sucks?
Ā 
Alport syndrome. group 7
Alport syndrome. group 7Alport syndrome. group 7
Alport syndrome. group 7
Ā 
Aesaes
AesaesAesaes
Aesaes
Ā 
Using Open Source technologies to create Enterprise Level Cloud System
Using Open Source technologies to create Enterprise Level Cloud SystemUsing Open Source technologies to create Enterprise Level Cloud System
Using Open Source technologies to create Enterprise Level Cloud System
Ā 
Arh2050 fa2014 syllabus
Arh2050 fa2014 syllabusArh2050 fa2014 syllabus
Arh2050 fa2014 syllabus
Ā 
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæProduct Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
Product Ownershipļ½žNTTćƒ‡ćƒ¼ć‚æćØę„½å¤©ćć‚Œćžć‚Œć®ę–‡č„ˆć§ć®ć‚µćƒ¼ćƒ“ć‚¹ć„ćć‚Šć€äŗŗć„ćć‚Šć€ćƒćƒ¼ćƒ ć„ćć‚Šć®å–ć‚Šēµ„ćæ
Ā 
Hum2220 fa2014 syllabus
Hum2220 fa2014 syllabusHum2220 fa2014 syllabus
Hum2220 fa2014 syllabus
Ā 
Hum2310 sm2015 syllabus
Hum2310 sm2015 syllabusHum2310 sm2015 syllabus
Hum2310 sm2015 syllabus
Ā 
Daily routines by Valerie
Daily routines by ValerieDaily routines by Valerie
Daily routines by Valerie
Ā 
Arh2050 fa2015 proust questionnaire
Arh2050 fa2015 proust questionnaireArh2050 fa2015 proust questionnaire
Arh2050 fa2015 proust questionnaire
Ā 
Centrals nuclears
Centrals nuclearsCentrals nuclears
Centrals nuclears
Ā 
Clothes & markets
Clothes & marketsClothes & markets
Clothes & markets
Ā 
8 instrumento autoeficacia grupo 8
8   instrumento autoeficacia  grupo 88   instrumento autoeficacia  grupo 8
8 instrumento autoeficacia grupo 8
Ā 
Update on Institutional Identity Management Priorities at SFU
Update on Institutional Identity Management Priorities at SFUUpdate on Institutional Identity Management Priorities at SFU
Update on Institutional Identity Management Priorities at SFU
Ā 

Similar to Big Data & Cloud | Cloud Storage Simplified | Adrian Cole

JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User Group
Marakana Inc.
Ā 
Cloud Best Practices
Cloud Best PracticesCloud Best Practices
Cloud Best Practices
Eric Bottard
Ā 
Pushing the web ā€” WebSockets
Pushing the web ā€” WebSocketsPushing the web ā€” WebSockets
Pushing the web ā€” WebSockets
Roland M
Ā 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
Elena-Oana Tabaranu
Ā 

Similar to Big Data & Cloud | Cloud Storage Simplified | Adrian Cole (20)

JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User Group
Ā 
JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User Group
Ā 
IBM dwLive, "Internet & HTTP - ģžƒģ–“ė²„ė¦° ķŒØķ‚·ģ„ ģ°¾ģ•„ģ„œ..."
IBM dwLive, "Internet & HTTP - ģžƒģ–“ė²„ė¦° ķŒØķ‚·ģ„ ģ°¾ģ•„ģ„œ..."IBM dwLive, "Internet & HTTP - ģžƒģ–“ė²„ė¦° ķŒØķ‚·ģ„ ģ°¾ģ•„ģ„œ..."
IBM dwLive, "Internet & HTTP - ģžƒģ–“ė²„ė¦° ķŒØķ‚·ģ„ ģ°¾ģ•„ģ„œ..."
Ā 
Cloud Best Practices
Cloud Best PracticesCloud Best Practices
Cloud Best Practices
Ā 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
Ā 
Pushing the web ā€” WebSockets
Pushing the web ā€” WebSocketsPushing the web ā€” WebSockets
Pushing the web ā€” WebSockets
Ā 
Cocoon OSGi CocoonGT2007
Cocoon OSGi CocoonGT2007Cocoon OSGi CocoonGT2007
Cocoon OSGi CocoonGT2007
Ā 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
Ā 
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Ā 
TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011TorqueBox at DC:JBUG - November 2011
TorqueBox at DC:JBUG - November 2011
Ā 
CloudInit Introduction
CloudInit IntroductionCloudInit Introduction
CloudInit Introduction
Ā 
WebSocket protocol
WebSocket protocolWebSocket protocol
WebSocket protocol
Ā 
Introduction HTTP via cURL
Introduction HTTP via cURLIntroduction HTTP via cURL
Introduction HTTP via cURL
Ā 
Html5 security
Html5 securityHtml5 security
Html5 security
Ā 
HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011HTTP cache @ PUG Rome 03-29-2011
HTTP cache @ PUG Rome 03-29-2011
Ā 
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ā 
Advanced Container Management and Scheduling
Advanced Container Management and SchedulingAdvanced Container Management and Scheduling
Advanced Container Management and Scheduling
Ā 
Rest
RestRest
Rest
Ā 
TorqueBox at GNUnify 2012
TorqueBox at GNUnify 2012TorqueBox at GNUnify 2012
TorqueBox at GNUnify 2012
Ā 
Load-balancing high-available web-app with Docker Swarm cluster. - Simone Sol...
Load-balancing high-available web-app with Docker Swarm cluster. - Simone Sol...Load-balancing high-available web-app with Docker Swarm cluster. - Simone Sol...
Load-balancing high-available web-app with Docker Swarm cluster. - Simone Sol...
Ā 

More from JAX London

Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
JAX London
Ā 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
JAX London
Ā 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
JAX London
Ā 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
JAX London
Ā 

More from JAX London (20)

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Ā 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Ā 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Ā 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Ā 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Ā 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Ā 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave Syer
Ā 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
Ā 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Ā 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
Ā 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Ā 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Ā 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Ā 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Ā 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Ā 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Ā 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Ā 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Ā 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Ā 
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJava Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Ā 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(ā˜Žļø+971_581248768%)**%*]'#abortion pills for sale in dubai@
Ā 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Ā 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
Ā 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Ā 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ā 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Ā 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
Ā 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Ā 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Ā 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Ā 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
Ā 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Ā 

Big Data & Cloud | Cloud Storage Simplified | Adrian Cole

  • 1. Adrian Cole / Cloudsoft Cloud Storage Simplified Tuesday, November 1, 11
  • 2. Adrian Cole (@jclouds) founded jclouds march 2009 chief evangelist at Cloudsoft Tuesday, November 1, 11
  • 3. Agenda ā€¢ intro ā€¢ concepts ā€¢ jclouds ā€¢ code ā€¢ awkward silence (or Q/A) Tuesday, November 1, 11
  • 4. Blob Storage Set<String> containers = namespacesInMyAccount; Map<String, InputStream> keyValues = contentsOfContainer; 4 Tuesday, November 1, 11
  • 5. Blob Storage adrian@googlestorage Love Letters Movies Tron putBlob The One Shrek Goonies The Blob 3d = true url = http://disney.go.com/tron 5 Tuesday, November 1, 11
  • 6. Can I use BlobStores portably? 6 Tuesday, November 1, 11
  • 7. are they close enough? 7 Tuesday, November 1, 11
  • 8. who builds and runs your service? 8 Tuesday, November 1, 11
  • 10. tenancy 10 Tuesday, November 1, 11
  • 11. size and resumability 11 Tuesday, November 1, 11
  • 12. How many copies? 12 Tuesday, November 1, 11
  • 13. Consistency model? 13 Tuesday, November 1, 11
  • 14. Are you experienced? Is your product? 14 Tuesday, November 1, 11
  • 16. CODE AND SIGN THE HTTP REQUEST PUT /adriansmovies/sushi.avi HTTP/1.1 PUT /sushi.avi HTTP/1.1 Host: <account>.blob.core.windows.net Host: adriansmovies.s3.amazonaws.com Content-Length: 734859264 Content-Length: 734859264 Date: Wed, 01 Mar 2006 12:00:00 GMT Date: Wed, 01 Mar 2006 12:00:00 GMT Authorization: SharedKey <app>:signature Authorization: signature x-ms-meta-Chef: Kawasaki x-amz-meta-Chef: Kawasaki POST /namespace/adriansmovies/sushi.avi HTTP/1.1 PUT /<api version>/<account>/ Content-Length: 734859264 adriansmovies/sushi.avi HTTP/1.1 Date: Wed, 01 Mar 2006 12:00:00 GMT Host: storage.clouddrive.com x-emc-uid: <uid> Transfer-Encoding: chunked x-emc-signature: signature X-Auth-Token: session-token x-emc-meta: Chef=Kawasaki X-Object-Meta-Chef: Kawasaki 16 Tuesday, November 1, 11
  • 17. CODE AND SIGN THE HTTP REQUEST GET /ws/IMFS/GetStorageNodeExtended.ashx?&ļ¬leOverwrite=true&ipRestricted=true&destFolderPath= adriansmovies&sizeBytes= 734859264&ļ¬rstByteExpiration=6000&lastByteExpiration=259200&sessionToken=session-token HTTP/1.1 POST /Upload.ashx?uploadToken=from_above&destFolderPath=adriansmovies HTTP/1.1 Host: from_above Content-Length: 734859382 Content-Type=multipart/form-data; boundary=--jclouds-- Authorization=Basic GpjbG9= ----jclouds-- Content-Disposition: form-data; name="sushi.avi"; ļ¬lename="sushi.avi" Content-Type: application/octetstring ... PUT /ws/Metadata/SetMetadata.ashx?&path=Folders/adriansmovies/sushi.avi&sessionToken=session-token&metadata=Chef:Kawasaki HTTP/1.1 17 Tuesday, November 1, 11
  • 18. CODE AND SIGN THE HTTP REQUEST POST /<api version>/containers/id_of_ adriansmovies/contents HTTP/1.1 Content-Length: 734859382 Content-Type=multipart/form-data; boundary=--jclouds-- Authorization=Basic GpjbG9= ----jclouds-- Content-Disposition: form-data; name="sushi.avi"; ļ¬lename="sushi.avi" Content-Type: application/octetstring ... PUT /<api version>/ļ¬les/from_above/metadata/Chef HTTP/1.1 Content-Length: 8 Content-Type: text/plain Authorization: Basic GpjbG9= Kawasaki 18 Tuesday, November 1, 11
  • 19. POST https://vcloud.safesecureweb.com/api/v0.8/vdc/1/action/instantiateVAppTemplate HTTP/1.1 do you want to Accept: application/vnd.vmware.vcloud.vApp+xml Content-Type: application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml <InstantiateVAppTemplateParams xmlns="http://www.vmware.com/vcloud/v0.8" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="my-vapp" xsi:schemaLocation="http://www.vmware.com/vcloud/v0.8 http://vcloud.safesecureweb.com/ns/vcloud.xsd"> <VAppTemplate href="https://vcloud.safesecureweb.com/api/v0.8/vAppTemplate/3" /> <InstantiationParams> <VirtualHardwareSection xmlns:q1="http://www.vmware.com/vcloud/v0.8"> <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"> <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</InstanceID> <ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">3</ResourceType> <VirtualQuantity GET https://api.gogrid.com/api/grid/server/add? </Item> xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1</VirtualQuantity> <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"> v=1.5&name=serverName&server.ram=memory&image=img55&ip=127.0.0.1&isSandbox=true&descri <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">2</InstanceID> <ResourceType ption=fooy&sig=3f446f171455fbb5574aecff4997b273&api_key=foo HTTP/1.1 xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">4</ResourceType> <VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">512</VirtualQuantity> </Item> <Item xmlns="http://schemas.dmtf.org/ovf/envelope/1"> <InstanceID xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">9</InstanceID> <ResourceType xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">17</ResourceType> <VirtualQuantity xmlns="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData">1024</VirtualQuantity> </Item> </VirtualHardwareSection> <NetworkConfigSection> <NetworkConfig name="my-vapp"> <Features> <FenceMode>allowInOut</FenceMode> </Features> <NetworkAssociation href="https://vcloud.safesecureweb.com/network/1990" /> </NetworkConfig> </NetworkConfigSection> </InstantiationParams> </InstantiateVAppTemplateParams> Deal with Errors POST https://rimuhosting.com/r/orders/new-vps HTTP/1.1 Accept: Accept: application/json Content-Type: application/json {"request":{"instantiation_options":{"distro":"lenny","domain_name":"test.ivan.api.com"},"pricing_plan_code":"MIRO1B","meta_data":[]}} Deal with Concurrency POST https://ec2.eu-west-1.amazonaws.com/ HTTP/1.1 Content-Type: application/x-www-form-urlencoded Version=2010-06-15&Action=RunInstances&ImageId=ami- voo&MinCount=1&MaxCount=5&KernelId=kernelId&Monitoring.Enabled=true&SecurityGroup. Deal with Complexity 1=group1&SecurityGroup.2=group2&Placement.AvailabilityZone=eu-west-1a POST http://serverManagementUrl/servers?format=json HTTP/1.1 Accept: application/json Content-Type: application/json {"server":{"name":"ralphie","imageId":2,"flavorId":1,"sharedIpGroupId":2,"addresses":{"public":["127.0.0.1"]}}} POST https://www-180.ibm.com/cloud/enterprise/beta/api/rest/20090403/instances HTTP/1.1 Accept: Accept: application/json Content-Type: application/x-www-form-urlencoded location=location&imageID=22&name=name&instanceType=instanceType&ip=1&publicKey=MOO&volumeID=2&oss.storage.id.0.mnt- %2Fmnt&insight_admin_password=myPassword1&db2_admin_password=myPassword2&report_user_password=myPassword3 19 Tuesday, November 1, 11
  • 20. open source feels like java (and clojure) portability between clouds deal with web complexity unit testability thread-safe and scalable 20 Tuesday, November 1, 11
  • 21. Portable APIs BlobStore LoadBalancer Compute Table Provider-Specific Hooks Embeddable Over 30 Tested Providers! 21 Tuesday, November 1, 11
  • 22. jclouds locations Location helps normalize placement across resource types All top-level resources listAssignableLocations have a location US Location metadata is SG IE extensible 22 Tuesday, November 1, 11
  • 23. jclouds modularity jclouds-blobstore APIs are software focused s3 Providers are offering aws-s3 scality-ring walrus focused googlestorage scaleup-storage API + location + defaults = Provider eucaluptus-partnercloud-s3 23 Tuesday, November 1, 11
  • 24. Alternatives to jclouds Roll-your-own ā€¢ RESTEasy, Jersey Cloud-speciļ¬c SDKs ā€¢ typica, jets3t, Amazon SDK, vCloud SDK Dasein Cloud API 24 Tuesday, November 1, 11
  • 25. BlobStore 25 Tuesday, November 1, 11
  • 26. java overview github jclouds/jclouds // init context = new BlobStoreContextFactory().createContext("s3", accesskeyid, secret); blobStore = context.getBlobStore(); // create container blobStore.createContainerInLocation(null, ā€œadriansmoviesā€); // add blob blob = blobStore.blobBuilder("sushi.avi").payload(file).build(); blobStore.putBlob(ā€œadriansmoviesā€, blob); 26 Tuesday, November 1, 11
  • 27. clojure overview github jclouds/jclouds (use 'org.jclouds.blobstore2) (def *blobstore* (blobstore ā€œazureblobā€ account key)) (create-container *blobstore* ā€œmoviesā€) (put-blob *blobstore* ā€œmoviesā€ (blob ā€œtron.mp4ā€œ :payload tron-file)) 27 Tuesday, November 1, 11
  • 28. Whoā€™s coding BlobStore? 28 Tuesday, November 1, 11
  • 29. Filesystem github jclouds/jclouds props.setProperty(FilesystemConstants.PROPERTY_BASEDIR, ā€œbasedirā€); blobStore = new BlobStoreContextFactory(). createContext("filesystem", props); (blobStore "filesystem" ā€œā€ ā€œā€ FilesystemConstants/PROPERTY_BASEDIR ā€œbasedirā€); 29 Tuesday, November 1, 11
  • 30. BlobRequestSigner github jclouds/jclouds HttpRequest request = context.getSigner(). signGetBlob(ā€œadriansmoviesā€, "sushi.avi"); (let [request (sign-blob-request "adriansmovies" "sushi.avi" {:method :get})]) 30 Tuesday, November 1, 11
  • 31. Whatā€™s next? ā€¢ ACL support ā€¢ OutputStream returns ā€¢ Public/Private pathing 31 Tuesday, November 1, 11
  • 32. Questions? github jclouds-examples @jclouds adrian@cloudsoftcorp.com 32 Tuesday, November 1, 11