Your SlideShare is downloading. ×
Simple Cloud API: accesso semplificato al cloud computing
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Simple Cloud API: accesso semplificato al cloud computing

980

Published on

In questa sessione verrà presentato il progetto open source Simple Cloud API per l'accesso semplificato ai servizi di cloud computing. Il progetto, nato dalla volontà di Zend Technologies, IBM e …

In questa sessione verrà presentato il progetto open source Simple Cloud API per l'accesso semplificato ai servizi di cloud computing. Il progetto, nato dalla volontà di Zend Technologies, IBM e Microsoft, offre un API semplificata per l'accesso a differenti servizi di cloud computing. I servizi attualmente implementati sono di File Storage, Document Storage e Simple Queue sui sistemi cloud di Amazon, Windows Azure e Nirvanix (in futuro anche Rackspace e GoGrid). Nella presentazione, dopo una breve introduzione ai servizi di cloud computing ed alla loro rilevanza dal punto di vista dello sviluppo delle applicazioni web, verranno presentati degli esempi in PHP per l'utilizzo del Simple Cloud API

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
980
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Simple Cloud API: accessosemplificato al cloud computing Enrico Zimuel (enrico@zend.com) Zend Technologies, the PHP company
  • 2. Mi presento • Senior Consultant e Architect presso Zend Technologies • Software Engineer dal 1996: C/C++, Java, PHP, Perl, VB/C#/ASP.NET, JavaScript • Speaker: PHPCon, PHP Barcelona Conference, PHPDay, ZendCon, Common Europe, etc • Laurea in Economia Informatica presso lUniversità “G.DAnnunzio” di Pescara • Blog sullo sviluppo web in PHP: http://www.zimuel.it/blog
  • 3. Sommario • Cloud computing • Sviluppo di applicazioni web in ambienti cloud • Simple Cloud API – Storage service – Document service – Queue service• Esempi in PHP
  • 4. Cloud Computing “E linsieme di tecnologie informatiche che permettono lutilizzo di risorse hardware (storage, CPU) o software distribuite in remoto.” Fonte: Wikipedia
  • 5. Alcuni servizi di cloud computing
  • 6. Sviluppo di applicazioni in ambienti cloud • Vantaggi, dal punto di vista dello sviluppo: – Architettura distribuita – Facile accesso a risorse “potenti” – Semplicità dutilizzo: delega di gestione del servizio• Alcuni punti critici: – Vendor lock-in – Portabilità – Interoperabilità
  • 7. Vendor lock-in• In economia il vendor lock-in è quando un cliente è strettamente legato ad un fornitore a tal punto da impedire il cambio di vendor senza un sostanziale costo (switching cost).• Rischi legati allutilizzo di vendor: – Cambio dei costi dei servizi – Cambio di policy nellerogazione dei servizi• In abito software: switching cost = riscrittura del codice
  • 8. Portabilità• Portabilità = la capacità di eseguire la stessa applicazione su piattaforme differenti• Non è semplice cambiare piattaforma di cloud computing, molto spesso è necessaria una modifica sostanziale del proprio software e quindi una riscrittura del codice• Per fornire portabilità ad un software è necessario effettuare unastrazione delle operazioni di base
  • 9. Interoperabilità• Interoperabilità = la capacità di scrivere software che sia in grado di utilizzare sistemi differenti• Il vs. software è in grado di utilizzare indifferentemente un servizio di storage su Amazon S3 o Nirvanix?• Anche qui, il cambio di vendor porta a dei costi derivanti dalla riscrittura del codice
  • 10. Simple Cloud API• E uninterfaccia comune, in PHP, per laccesso ai servizi di cloud computing• E un progetto open source ideato da Zend Technologies con la collaborazione di IBM, Microsoft, Rackspace, Nirvanix e GoGrid• Dal 2 Novembre 2010 il Simple Cloud API è stato incluso nel progetto Zend Framework con la classe Zend_Cloud http://simplecloudapi.org/
  • 11. Simple Cloud API: architettura
  • 12. Zend_Cloud: servizi• Servizi attualmente disponibili: – Storage (Amazon S3, Nirvanix, Azure Blog Storage, Local file system) – Document (Amazon SimpleDB, Azure Table Storage) – Queue (Amazon SQS, Azure Queue Service, Zend_Queue (Apache ActiveMQ, MemcacheQ, Zend Platform, Zend Db))
  • 13. Installazione di Zend_Cloud• Zend_Cloud è disponibile a partire dalla versione 1.11.0 di Zend Framework• Download: – http://framework.zend.com/download/latest• Configurazione di Zend Framework – Inclusione della libreria nel percorso di default del PHP: • include_path nel php.ini • oppure da script PHP tramite set_include_path()
  • 14. Storage service• Zend_Cloud_StorageService• Adapter per Amazon S3 e Windows Azure• Storage di file (item): – Ad ogni item è associata una chiave univoca (URL, path, etc) – Ad ogni item posso associare dei metadata (coppie chiave=>valore) – E possibile accedere ai metodi specifici di ogni adapter (ad esempio i bucket in S3)
  • 15. Storage service: esempio<?php// il parametro può essere un array o un oggetto Zend_Config$storage =Zend_Cloud_StorageService_Factory::getAdapter(array(Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER_KEY =>Zend_Cloud_StorageService_Adapter_S3,Zend_Cloud_StorageService_Adapter_S3::AWS_ACCESS_KEY =>$amazonKey,Zend_Cloud_StorageService_Adapter_S3::AWS_SECRET_KEY =>$amazonSecret));// memorizzo un nuovo item nello storage$data = file_get_contents(/home/test/picture.jpg);$returnedData = $storage->storeItem(/picture.jpg, $data);
  • 16. Storage service: esempio (2)<?php…// leggo un item dallo storage$returnedData = $storage->fetchItem("/picture.jpg");file_put_contents(/tmp/picture.jpg, $returnedData);// elimino un item dallo storage$storage->deleteItem("/picture.jpg");// copio un item nello storage$storage->copyItem(/picture.jpg, /picture_copy.jpg);// elenco degli item nello storage nella dir /$objects = $storage->listItems(/);foreach ($objects as $objname) { echo "Found: $objnamen";}
  • 17. Storage service: metadata<?php…// memorizzo metadata al file nello storage$data = $storage->storeMetadata(/picture.jpg, array( type => JPEG, category => Portrait,));// leggo metadata dal file nello storage$data = $storage->fetchMetadata(/picture.jpg);foreach ($data as $key => $value) { echo "Metadata $key: $valuen";}// elimino metadata dal file nello storage$storage->deleteMetadata("/picture.jpg");
  • 18. Storage service: accesso diretto alladapter<?php…// accesso diretto ai metodi delladapter S3$s3 = $storage->getClient();$s3->cleanBucket("oldBucket");Nota: lutilizzo di metodi specifici delladapter limita la portabilità del codice poiché lo vincola alla funzione specifica del vendor
  • 19. Document service• Zend_Cloud_DocumentService• Adapter per Amazon SimpleDB e Windows Azure• Documenti (item): – Collezione di documenti (database) – Ogni documento è una collezione di coppie (chiave, valore) – Ogni documento è identificato da un ID
  • 20. Document service: esempio<?php$documents =Zend_Cloud_DocumentService_Factory::getAdapter(array(Zend_Cloud_DocumentService_Factory::DOCUMENT_ADAPTER_KEY=> Zend_Cloud_DocumentService_Adapter_SimpleDb,Zend_Cloud_DocumentService_Adapter_SimpleDb::AWS_ACCESS_KEY=> $amazonKey,Zend_Cloud_DocumentService_Adapter_SimpleDb::AWS_SECRET_KEY=> $amazonSecret));// creo una nuova collezione di documenti$documents->createCollection("mydata");
  • 21. Document service: nuovo documento<?php…// creo un nuovo documento$document = new Zend_Cloud_DocumentService_Document(array( key1 => value1, key2 => 123, key3 => thirdvalue,), "DocumentID");// inserisco il documento nella collection$documents->insertDocument("mydata", $document);// aggiorno un documento$documents->updateDocument("mydata", "DocumentID",array("key2" => "new value"));
  • 22. Document service: query<?php…// ricerca documenti nella collezione$docs = $documents->query( "collectionName", "RowKey eq rowkey2 or RowKey eq rowkey2");foreach ($docs as $doc) { $id = $doc->getId(); echo "Found document with ID: " . var_export($id, 1) . "n";}
  • 23. Document service: structured query<?php…// creo la structured query$query = $documents->select() ->from(collectionName) ->where(year > ?, array(1945)) ->limit(3);// eseguo la query$docs = $documents->query(collectionName, $query);foreach ($docs as $doc) { $id = $doc->getId(); echo "Found document with ID: " . var_export($id, 1) . "n";}
  • 24. Queue service• Zend_Cloud_QueueService• Adapter per Amazon Simple Queue, Windows Azure, Zend Queue• Code (queue): – Gestione di una o più code – Ogni coda ha uno o più messaggi gestiti tramite con la tecnica FIFO (First In First Out)
  • 25. Queue service: esempio<?php$queues =Zend_Cloud_QueueService_Factory::getAdapter(array( Zend_Cloud_QueueService_Factory::QUEUE_ADAPTER_KEY =>Zend_Cloud_QueueService_Adapter_Sqs, Zend_Cloud_QueueService_Adapter_Sqs::AWS_ACCESS_KEY =>$amazonKey, Zend_Cloud_QueueService_Adapter_Sqs::AWS_SECRET_KEY =>$amazonSecret,));// creo una coda$queueId = $queues->createQueue(my-queue);
  • 26. Queue service: esempio (2)<?php…// invio di un messaggio alla coda$queues->sendMessage($queueId, "Hello world!");// lettura del messaggio in testa alla coda$messages = $queues->receiveMessages($queueId);if (count($messages)) { foreach ($messages as $message) { echo "Message: " . $message->getBody(); break; }}// lettura di 2 messaggi dalla testa della coda$messages = $queues->receiveMessages($queueId, 2);
  • 27. Queue service: lettura messaggi• Quando un client legge un messaggio da una coda, questo messaggio non è visibile dagli altri client• Se il client non elimina il messaggio eseguendo il metodo deleteMessage() il messaggio sarà visibile agli altri client dopo un timeout
  • 28. Queue service: metadata<?php…// aggiunge metadati alla coda$queues->storeQueueMetadata($queueId, array( purpose => Operations, administrator => joe@example.com,));// recupero metadati dalla coda$metadata = $queues->fetchQueueMetadata($queueId);foreach($metadata as $key => $value) { echo "Metadata $key: $valuen";}
  • 29. Domande?
  • 30. Grazie! Per maggiori informazioni: http://www.zend.com http://simplecloud.orghttp://framework.zend.com/manual/en/zend.cloud.html

×