Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PHP and Platform Independance in the Cloud

2,584 views

Published on

Talk by Wil Sinclair of Zend at ZendCon 2009

Published in: Technology, Business
  • Hi there! Get Your Professional Job-Winning Resume Here - Check our website! http://bit.ly/resumpro
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

PHP and Platform Independance in the Cloud

  1. 1. PHP and Platform Independence in the Cloud<br />ByWil Sinclair – Cloud Zealot<br />
  2. 2. What is the Cloud?<br />And why can’t we all move on to the next big thing already?<br />
  3. 3. One Definition<br />
  4. 4. Another Definition<br />From http://www.burtongroup.com<br />
  5. 5. Yet Another Definition<br />
  6. 6. My Definition<br />Cloud:Tools::Internet:Content<br />
  7. 7. The Cloud is all around us.<br />On your iPhone. Under your Facebook apps. All up in your twitter account. <br />
  8. 8. The Cloud is the future.<br />But, then again, you could say that about almost anything if you make its definition broad enough.<br />
  9. 9. Select Benefits<br />Elasticity<br />Scalability<br />High Availability<br />Resilience<br />Location Independence<br />Development Best Practices<br />Security<br />
  10. 10. CAPex<br />OPex<br />Big Win for Startups<br />
  11. 11. But it sounds too good to be true.<br />
  12. 12. Making the most of it.<br />
  13. 13. Secret Sauce<br />Don’t just deploy your applications on the cloud, write them for the cloud.<br />
  14. 14. Secret Sauce, cntd.<br />Use best-fit cloud application services.<br />
  15. 15. Cloud Application Services<br />Unstructured Storage<br />S3<br />Azure Blob Storage<br />Rackspace Cloud Files<br />
  16. 16. Cloud Application Services<br />Document Storage<br />SimpleDB<br />Azure Table Storage<br />Quickbase<br />Google Datastore<br />
  17. 17. Cloud Application Services<br />Simple Queues<br />SQS<br />Azure Queue Storage<br />OnlineMQ<br />
  18. 18. Future Cloud Application Services<br />Authentication and Authorization<br />Session Management<br />Messaging<br />Scheduler<br />Search<br />Spam/Virus Detection<br />Analytics<br />And on. . .<br />And on. . .<br />
  19. 19. Applications written for the cloud are. . .<br />More Performant<br />More Scalable<br />Better Designed<br />More Secure<br />Less Expensive<br />
  20. 20. . . .assuming you chose the right cloud provider.<br />
  21. 21. Now You’re Screwed<br />Every API is different! I’m locked in! My cloud provider is bending me over! The sky is falling!<br />
  22. 22. Or are you?<br />After all, there’s lots of commonality across cloud application services.<br />
  23. 23. Yes, you are.<br />All that commonality is hidden behind uninteresting differences.<br />
  24. 24. Porting an AWS Application to Azure<br />Change your signature algorithm<br />‘buckets’ are now ‘containers’<br />‘objects’ are now ‘blobs’<br />SQS RESTish query API needs to be changed to the RESTful Azure Queue Storage API<br />SimpleDB to Azure Table Storage? Good luck with that.<br />
  25. 25. Moving Your Applications is Hard<br />And not for interesting reasons. :-/<br />
  26. 26. Let&apos;s Open Up a Can of Standards on these APIs!<br />
  27. 27. Let&apos;s Open Up a Can of Standards on these APIs!<br />
  28. 28. Ummm. . .<br />
  29. 29. Let’s not.<br />
  30. 30. Open Source to the Rescue<br />Is there anything it can’t do?<br />
  31. 31. Standards vs Open Source<br />Bring a lot of minds together to think about a problem<br />Intelligent design<br />Can stifle innovation<br />Sloooooooooooow<br />Can be abortive <br />Unenforceable<br /><ul><li>Brings a lot more minds together to think about a problem
  32. 32. Survival of the smartest
  33. 33. Encourages innovation
  34. 34. Slow
  35. 35. Can be abortive
  36. 36. Unenforceable</li></li></ul><li>The PHPilosophy<br />Start with Something You Can Change<br />We can&apos;t change the server-side APIs, but we can change the client-side libraries.<br />
  37. 37. The PHPilosophy<br />Build on What&apos;s Already There<br />
  38. 38. The PHPilosophy<br />Wave the magic wand of abstraction. . .<br />
  39. 39. The PHPilosophy<br />Until You Have Something That&apos;s Useful<br />
  40. 40. The PHPilosophy<br />Don’t Forget to Share<br />http://framework.zend.com<br />
  41. 41. The PHPilosophy<br />Repeat until you have something that&apos;s taken on a life of its own.<br />
  42. 42. You knew it was coming. . .<br />
  43. 43.
  44. 44. Respect Due<br />
  45. 45. Storage Service<br />interface Zend_Cloud_StorageService<br />{<br /> public function fetchItem($path, $options = null);<br /> public function storeItem($data,<br /> $destinationPath,<br /> $options = null);<br /> public function deleteItem($path, $options = null);<br /> public function copyItem($sourcePath, $destinationPath, $options = null);<br /> public function moveItem($sourcePath, $destinationPath, $options = null);<br /> public function fetchMetadata($path, $options = null);<br /> public function storeMetadata($metadata, $destinationPath, $options = null);<br /> public function deleteMetadata($path);<br />}<br />
  46. 46. Document Service<br />interface Zend_Cloud_DocumentService<br />{ <br /> public function createCollection($name, $options = null);<br /> public function deleteCollection($name, $options = null);<br /> public function listCollections($options = null);<br /> public function listDocuments($options = null);<br /> public function insertDocument($document, $options = null);<br /> public function updateDocument($document, $options = null);<br /> public function deleteDocument($document, $options = null);<br /> public function query($query, $options = null);<br />}<br />
  47. 47. Queue Service<br />interface Zend_Cloud_QueueService<br />{<br /> public function createQueue($name, $options = null);<br /> public function deleteQueue($name, $options = null);<br /> public functionlistQueues($options = null);<br /> public function fetchQueueMetadata($name, $options = null);<br /> public function storeQueueMetadata($metadata, $name, $options = null);<br /> public function sendMessage($message, $queueName, $options = null);<br /> public function recieveMessages($queueName, $max = 1, $options = null);<br /> public function deleteMessage($id, $queueName, $options = null);<br /> public function peekMessage($id, $queueName, $options = null);<br />}<br />
  48. 48. Available today!<br />

×