Introduzione al Simple Cloud API



Documenti analoghi
Velocizzare l'esecuzione di Joomla! con Zend Server Community Edition

La strada per sviluppare più rapidamente: Unit Test & Continuous Integration

Indice generale. Gli autori...xiii. Prefazione...xv. Benvenuti nel cloud computing...1

Come portare la vostra intranet su IBM i con Drupal e Zend Server

Velocizzare l'esecuzione di Joomla! con Zend Server Community Edition

Introduzione ai Web Services Alberto Polzonetti

Una rassegna dei sistemi operativi per il Cloud Computing

Progettazione e Implementazione di API WebSocket per il Gateway Dog

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Servizio Amazon Elastic Transcoder

Lezione 9. Applicazioni tradizionali

Integration Software S.r.l.

Architetture Applicative

Candidato: Luca Russo Docente: Prof. Raffaele Montella. 27 Marzo 2013

Presentazione di Cedac Software

Distributed Object Computing

Spunti ed Elementi da Intel Cloud Forum

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Seminario di Sistemi Distribuiti RPC su SOAP

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

12. Evoluzione del Software

C Cloud computing Cloud storage. Prof. Maurizio Naldi

11. Evoluzione del Software

BLU.Energy Tecnologia & Servizi gestiti

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

BiblioTech - Personal Digital Library

Software Open Source per sistemi embedded

COMMERCE: FORME DI TUTELA. Andrea L Episcopo Convitto Nazionale Mario Cutelli

Il Pattern MVC nei Framework di sviluppo per applicazioni Web. Analisi e comparazione di SPRING MVC Framework e ASP.NET MVC Framework.

Architetture software. Virtualizzazione

01KTF CV. Architetture distribuite per i sistemi infomativi aziendali. Presentazione del corso

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

GESTIONE DEI PROCESSI

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Provincia di Rimini Servizio Infrastrutture Territoriali e Tecnologiche Ufficio Sistemi Informativi. Scambio dati digitali Cittadini Provincia

Sistemi Operativi. Conclusioni e nuove frontiere

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Introduzione al Cloud Computing

Ottimizzare l IT. Interesse verso il cloud. Cloud computing. Ottimizzare l'it 16/04/2010. Assyrus Srl 1. Cloud Computing

B.P.S. Business Process Server ALLEGATO C10

TamTamy.com e il Cloud Computing un anno di storia: benefici, scelta architetturale ed esperienze

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

@2011 Politecnico di Torino. Pag. 1. Architettura distribuita. Architetture Client/Server. Architettura centralizzata. Architettura distribuita

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

JUMP THE UNIFIED MAPPING PLATFORM

MONITORAGGIO UNITARIO PROGETTI 2007/2013 PROTOCOLLO DI COLLOQUI ANALISI ATTIVAZIONE SERVIZIO IGRUE IN SPCOOP. Link.it srl - Analisi Servizio IGRUE 1

CLOUD AWS. #cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Servizio Amazon SNS

Protezione. Protezione. Protezione. Obiettivi della protezione

Utilizzare 4CBOX come centralino significa avere un sistema all inclusive oltre a

Approccio stratificato

Allegato 1 CIG FF PROCEDURA DI AFFIDAMENTO PER LA FORNITURA DI UNA PIATTAFORMA PER SERVICE MASHUP AND DELIVERY CAPITOLATO TECNICO

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Linux Day /10/09. Cloud Computing. Diego Feruglio

Sommario. Oracle Database 10g (laboratorio) Grid computing. Oracle Database 10g. Concetti. Installazione Oracle Database 10g

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Protocolli di autenticazione ione per la connessione alle reti sociali. Le tecnologie del Web 2.0

SERVICE MANAGER. Architettura Client-Server e Web based di Servizi Specializzati per la Gestione di Periferiche e Connettività

Data protection. Cos è

Applicazione: GAS - Gestione AcceSsi

Progettazione : Design Pattern Creazionali

POR Calabria FSE 2007/2013 Asse II Occupabilità Obiettivo operativo D1

Sviluppo di Componenti Grid per la Condivisione di Strumenti di Aquisizione Dati

Reti di Telecomunicazione Lezione 7

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA


Costo Complessivo della Proprietà CRM (TCO, Total-Cost-of-Ownership)

Laureando: Damiano Vittor. Relatore: Dott. Ing. Massimiliano Nolich

DBMS e Linguaggi di programmazione nell'era di Internet

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

Introduzione ai tipi di dato astratti: applicazione alle liste

Caratteristiche principali. Contesti di utilizzo

Alcuni Design Pattern in Java

Modelli e Sistemi di Elaborazione Peer-to-Peer

Applicazione: Share - Sistema per la gestione strutturata di documenti

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

PROFILO AZIENDALE 2011

PROGETTAZIONE DI UN SITO WEB

MagiCum S.r.l. Progetto Inno-School

Metodologie e tecnologie a supporto nello sviluppo di applicazioni mobile di tipo Enterprise!

tesi di laurea Anno Accademico 2004/2005 relatore Ing. Massimo Ficco candidato Pasquale Incarnato Matr. 534/938

Tecniche di riuso del software: applicazione ad un caso di studio reale

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Nuvola It Data Space

#cloudaws. Community - Cloud AWS su Google+ Amazon Web Services. Amazon EFS (elastic file system)

Zend Framework 2. presenta Enrico Zimuel Senior Software Engineer, Zend Technologies Zend Framework Core Team

La cassetta di un buon carpentiere del software

Ministero del Lavoro e delle Politiche Sociali

Il Gestore Eventi di OpenSPCoop i. Il Gestore Eventi di OpenSPCoop

Integrazione InfiniteCRM - MailUp

Software Libero per la PMI. Augusto Silvino

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Introduzione JDBC interfaccia java.sql driver caricare i driver

Università degli studi di Ferrara. Sviluppo di un Web Service per la classificazione del suolo e sua integrazione sul Portale SSE

VPN RETI PRIVATE VIRTUALI: ACCESSO REMOTO

Applicazione: SAI - Sistema di Audit Interno

OpenSPCoop Un Implementazione Open Source della specifica SPCoop di Cooperazione Applicativa

Indice. 3 Cloud Platform Independent Model Introduzione CPIM Google App Engine Windows Azure... 38

12/12/11 Data ultimo aggiornamento

Gartner Group definisce il Cloud

Transcript:

Introduzione al Simple Cloud API by Enrico Zimuel Senior Consultant & Architect Zend Technologies enrico@zend.com

Mi presento Dal 2008 Senior Consultant e Architect presso Zend Technologies Software Engineer dal 1996: C/C++, Java, PHP, Perl, VB/C#/ASP.NET, JavaScript Più di 10 anni di esperienza in PHP Speaker internazionale: PHPCon, PHP Barcelona Conference, PHPDay, ZendCon, etc Laurea in Economia Informatica presso l'università G.D'Annunzio di Pescara Blog sulla programmazione web in PHP: http://www.zimuel.it/blog

Sommario Lo sviluppo di applicazioni web in ambienti di cloud computing Il progetto Simple Cloud API Obiettivo e finalità del progetto I servizi attualmente disponibili

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

Sviluppo di applicazioni in ambienti cloud Alcuni vantaggi, dal punto di vista dello sviluppatore: Architettura distribuita Facile accesso a risorse potenti Semplicità d'utilizzo: delega di gestione del servizio Alcuni punti critici: Vendor lock-in Portabilità Interoperabilità

Vendor lock-in L'utilizzo di tecnologie proprietarie può portare a problemi di lock-in Lo sviluppo di un applicazione software che dipende da un vendor può portare ad una serie di problemi, ad esempio: Cambio dei costi dei servizi Cambio di policy dei servizi Se si decide di cambiare vendor è necessario tener presente il costo di tale operazione (switching cost) In ambito software, switching cost = riscrittura del codice

Portabilità Portabilità = la capacità di eseguire la stessa applicazione su piattaforme cloud differenti Non è semplice cambiare piattaforma di cloud computing, molto spesso è necessaria una modifica sostanziale del proprio software (riscrittura del codice) Per fornire portabilità ad un software è necessario effettuare un'astrazione delle operazioni di base

Interoperabilità Interoperabilità = la capacità di scrivere software che sia in grado di utilizzare sistemi cloud 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

Esempi di ambienti cloud

API = Application Programmming Interface

Livelli di API Come invocare un servizio: Livello 1: utilizzare direttamente le API del servizio con un protocollo specifico (ad esempio REST o SOAP) Livello 2: utilizzare una funzione specifica del linguaggio per l'accesso al protocollo Livello 3: utilizzare una funzione specifica del servizio per l'accesso Livello 4: utilizzare un API comune in grado di supportare servizi/vendor differenti

Livello 1 - REST e JSON Esempio di richiesta: listfolder.php?sessiontoken=8da051b0a60f4c22a& folderpath=/cs1&pagenumber=1&pagesize=5 Esempio di risposta: { "ResponseCode": 0, "ListFolder": { "TotalFolderCount": 3, "TotalFileCount": 3215, "PageFolderCount": 3, "PageFileCount": 2,...}}

Livello 1 - SOAP Esempio di richiesta: <ListFolderRequest> <SessionToken> 8da051b0a60f4c22a </SessionToken> <FolderPath>/cs1</FolderPath> <PageNumber>1</PageNumber> <PageSize>5</PageSize> </ListFolderRequest>

Livello 1 SOAP (2) Esempio di risposta: <Response> <ResponseCode>0</ResponseCode> <ListFolder> <TotalFolderCount>3</TotalFolderCount> <TotalFileCount>3215</TotalFileCount> <PageFolderCount>3</PageFolderCount> <PageFileCount>2</PageFileCount> <Folder> <FolderCount>0</FolderCount> <FileCount>1</FileCount> <Name>F8AChild</Name>...

Livello 2 specifico del linguaggio Una richiesta PHP di tipo REST: file_get_contents('listfolder.php? SessionToken=8da051b0a60f4c22a...'); Una richiesta PHP di tipo SOAP: $param = array( 'SessionToken' => '8da051b0a60f4c22a', 'FolderPath' => '/cs1', 'PageNumber' => 1,...); $soapclient->call('listfolder', $param, $name);

Livello 3 specifico del servizio Esempio in PHP su Amazon S3 (leggere un oggetto da un bucket): $s3-> getobjectsbybucket('cs1'); Esempio in PHP su Nirvanix IMFS: $imfs->listfolder(array( 'folderpath' => '/cs1', 'pagenumber' => 1, 'pagesize' => 5));

Livello 4 API comune Esempio di richiesta PHP comune per restituire la lista di un folder: $storage->listitems('cs1'); Indipendentemente dal servizio/vendor utilizzato (S3, Nirvanix, GoGrid, etc)

Simple Cloud API

Che cos'è il 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 Il progetto è iniziato nel Settembre 2009 http://simplecloud.org

Simple Cloud API Servizi: File storage (Amazon S3, Nirvanix, Azure Blog Storage, Rackspace Cloud Files) Document storage (Amazon SimpleDB, Azure Table Storage) Simple queues (Amazon SQS, Azure Table Storage) Utilizza il design pattern Factory e Adapter Un file di configurazione comunica all'oggetto Factory quale Adapter utilizzare

Dependency injection Il Simple Cloud API utilizza la tecnica di dependency injection Un esempio di file di configurazione: storage_adapter = "Zend_Cloud_StorageService_Adapter_Nirvanix" auth_accesskey = "338ab839-ac72870a" auth_username = "enrico" auth_password = "/p@$$w0rd" remote directory = "/test"

Dependency injection (2) Un secondo esempio di file di configurazione: storage_adapter = "Zend_Cloud_StorageService_Adapter_S3" aws_accesskey = "ac72870a-338ab839" aws_secretkey = "/par$w3rd" bucket_name = "test"

API per Nirvanix Esempio con Zend Framework: $auth = array('username' => 'username', 'password' => 'password', 'appkey' => 'appkey'); $nirvanix = new Zend_Service_Nirvanix($auth); $imfs = $nirvanix->getservice('imfs'); $args = array('folderpath' => '/test', 'pagenumber' => 1, 'pagesize' => 5); $stuff = $imfs->listfolder($args); Tutte queste istruzioni sono specifiche del vendor

API per Amazon S3 Esempio con Zend Framework: $s3 = new Zend_Service_Amazon_S3 ($accesskey, $secretkey); $stuff = $s3->getobjectsbybucket($bucketname); Tutte queste istruzioni sono specifiche del vendor

Simple Cloud Storage API Elenco di una directory Nirvanix o S3: $credentials = new Zend Config Ini($configFile); $stuff = Zend_Cloud_StorageService_Factory ::getadapter($credentials)->listitems(); Questo codice funziona indifferentemente su Nirvanix, S3, RackSpace, etc La scelta del vendor avviene tramite l'utilizzo del file di configurazione ($configfile)

Metodi Lo storage API supporta differenti metodi: storeitem(), fetchitem() e deleteitem() copyitem(), moveitem() e renameitem() listfolders() e listitems() storemetadata(), fecthmetadata() e deletemetadata()

Simple Cloud Queue API Il Simple Cloud Queue API utilizza i servizi di Azure o Amazon per la gestione di una coda di messaggi Metodi supportati: createqueue(), deletequeue() e listqueueu() sendmessage(), receivemessage() e deletemessage() fetchqueuemetadata() e storequeuemetadata()

Simple Cloud Document API Il Simple Cloud Document API utilizza i servizi di Amazon SimpleDB e Azure Table Services Metodi supportati: createcollection(), deletecollection() e listcollection() insertdocument(), replacedocument(), updatedocument(), deletedocument() e fetchdocument() query() e select()

Scrivere uno specifico adapter E' possibile implementare il proprio specifico adapter scrivendo tutti le interfacce ai propri metodi: Storage Service, Queue, etc Se il cloud vendor ha già un API (Livello 3) il grosso del lavoro è già stato fatto, basta tradurre le specifiche chiamate, ad esempio: public function listfolders($path = null, $options = null) { return $this->_connection->list_containers(); }

Domande?

Grazie! Per maggiori informazioni: http://www.zend.com http://simplecloud.org