18. Future Cloud Application Services Authentication and Authorization Session Management Messaging Scheduler Search Spam/Virus Detection Analytics And on. . . And on. . .
19. Applications written for the cloud are. . . More Performant More Scalable Better Designed More Secure Less Expensive
21. Now You’re Screwed Every API is different! I’m locked in! My cloud provider is bending me over! The sky is falling!
22. Or are you? After all, there’s lots of commonality across cloud application services.
23. Yes, you are. All that commonality is hidden behind uninteresting differences.
24. 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.
45. 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); }
46. 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); }
47. 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); }