PHP and Platform Independance in the Cloud
Upcoming SlideShare
Loading in...5
×
 

PHP and Platform Independance in the Cloud

on

  • 2,794 views

Talk by Wil Sinclair of Zend at ZendCon 2009

Talk by Wil Sinclair of Zend at ZendCon 2009

Statistics

Views

Total Views
2,794
Views on SlideShare
2,792
Embed Views
2

Actions

Likes
2
Downloads
83
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    PHP and Platform Independance in the Cloud PHP and Platform Independance in the Cloud Presentation Transcript

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