simple cloud api: accesso semplificato al cloud computing

30
Simple Cloud API: accesso semplificato al cloud computing Enrico Zimuel ([email protected]) Zend Technologies, the PHP company

Upload: francesca1980

Post on 05-Dec-2014

1.326 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Simple Cloud API: accesso semplificato al cloud computing

Simple Cloud API: accesso semplificato al cloud computing

Enrico Zimuel ([email protected])Zend Technologies, the PHP company

Page 2: Simple Cloud API: accesso semplificato al cloud computing

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 l'Università “G.D'Annunzio” di Pescara

• Blog sullo sviluppo web in PHP: http://www.zimuel.it/blog

Page 3: Simple Cloud API: accesso semplificato al cloud computing

Sommario

• Cloud computing

• Sviluppo di applicazioni web in ambienti cloud

• Simple Cloud API– Storage service– Document service

– Queue service

• Esempi in PHP

Page 4: Simple Cloud API: accesso semplificato al cloud computing

Cloud Computing

“E' l'insieme di tecnologie informatiche che permettono l'utilizzo di risorse hardware (storage, CPU) o software distribuite in remoto.”

Fonte: Wikipedia

Page 5: Simple Cloud API: accesso semplificato al cloud computing

Alcuni servizi di cloud computing

Page 6: Simple Cloud API: accesso semplificato al cloud computing

• Vantaggi, dal punto di vista dello sviluppo:– Architettura distribuita

– Facile accesso a risorse “potenti”

– Semplicità d'utilizzo: delega di gestione del servizio

• Alcuni punti critici:– Vendor lock-in– Portabilità– Interoperabilità

Sviluppo di applicazioni in ambienti cloud

Page 7: Simple Cloud API: accesso semplificato al cloud computing

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 all'utilizzo di vendor:– Cambio dei costi dei servizi

– Cambio di policy nell'erogazione dei servizi

• In abito software:switching cost = riscrittura del codice

Page 8: Simple Cloud API: accesso semplificato al cloud computing

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 un'astrazione delle operazioni di base

Page 9: Simple Cloud API: accesso semplificato al cloud computing

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

Page 10: Simple Cloud API: accesso semplificato al cloud computing

Simple Cloud API

• E' un'interfaccia comune, in PHP, per l'accesso 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/

Page 11: Simple Cloud API: accesso semplificato al cloud computing

Simple Cloud API: architettura

Page 12: Simple Cloud API: accesso semplificato al cloud computing

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))

Page 13: Simple Cloud API: accesso semplificato al cloud computing

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()

Page 14: Simple Cloud API: accesso semplificato al cloud computing

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)

Page 15: Simple Cloud API: accesso semplificato al cloud computing

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);

Page 16: Simple Cloud API: accesso semplificato al cloud computing

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: $objname\n";}

Page 17: Simple Cloud API: accesso semplificato al cloud computing

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: $value\n";}

// elimino metadata dal file nello storage$storage->deleteMetadata("/picture.jpg");

Page 18: Simple Cloud API: accesso semplificato al cloud computing

Storage service: accesso diretto all'adapter

<?php…// accesso diretto ai metodi dell'adapter S3$s3 = $storage->getClient();$s3->cleanBucket("oldBucket");

Nota: l'utilizzo di metodi specifici dell'adapter limita la portabilità del codice poiché lo vincola alla funzione specifica del vendor

Page 19: Simple Cloud API: accesso semplificato al cloud computing

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

Page 20: Simple Cloud API: accesso semplificato al cloud computing

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");

Page 21: Simple Cloud API: accesso semplificato al cloud computing

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"));

Page 22: Simple Cloud API: accesso semplificato al cloud computing

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";}

Page 23: Simple Cloud API: accesso semplificato al cloud computing

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";}

Page 24: Simple Cloud API: accesso semplificato al cloud computing

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)

Page 25: Simple Cloud API: accesso semplificato al cloud computing

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');

Page 26: Simple Cloud API: accesso semplificato al cloud computing

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);

Page 27: Simple Cloud API: accesso semplificato al cloud computing

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

Page 28: Simple Cloud API: accesso semplificato al cloud computing

Queue service: metadata

<?php…// aggiunge metadati alla coda$queues->storeQueueMetadata($queueId, array(

'purpose' => 'Operations','administrator' => '[email protected]',

));

// recupero metadati dalla coda$metadata = $queues->fetchQueueMetadata($queueId);

foreach($metadata as $key => $value) {echo "Metadata $key: $value\n";

}

Page 29: Simple Cloud API: accesso semplificato al cloud computing

Domande?

Page 30: Simple Cloud API: accesso semplificato al cloud computing

Grazie!

Per maggiori informazioni:http://www.zend.comhttp://simplecloud.org

http://framework.zend.com/manual/en/zend.cloud.html