Archiviazione di oggetti come servizio cloud

Completato

Si esaminerà ora una speciale classe di sistemi di archiviazione progettati come servizio cloud fornito tramite Internet. Nel contesto della discussione sull'archiviazione nel cloud fino a questo punto, l'archiviazione di oggetti nei cloud può essere considerata come un caso speciale di archivi chiave-valore forniti come servizio in Internet.

Per fornire l'archiviazione come servizio ai client in Internet, è necessario astrarre i dettagli di implementazione dell'archiviazione sottostante e fornire un'interfaccia semplice e chiara che sia possibile usare nelle applicazioni. Chi passa al cloud sceglie sempre più spesso il modello a oggetti cloud per l'archiviazione nel cloud.

Con il concetto di oggetti, i sistemi di archiviazione basati su oggetti astraggono l'approccio esistente basato su file system a un livello superiore. I sistemi di archiviazione basati su oggetti si trovano in genere a un livello superiore rispetto ai file system esistenti. Nei sistemi di archiviazione basati su oggetti non esiste il concetto di gerarchia, ma viene invece usato un ambiente dati flat.

Un oggetto può essere considerato un contenitore generico in grado di archiviare qualsiasi tipo arbitrario di informazione. La progettazione delle interfacce per tali dati arbitrari può essere difficile, ma nell'ambito dell'archiviazione è possibile definire facilmente un set di operazioni di base per qualsiasi oggetto arbitrario. Si tratta delle operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD - Create, Read, Update, Delete), che in genere vengono rese disponibili attraverso un tipo di API a cui è possibile accedere tramite HTTP o altri protocolli di rete mediante chiamate REST o SOAP.

REST

REST (Representational State Transfer) si basa su un protocollo di comunicazione client-server, senza stato, inseribile nella cache e in genere implementato tramite HTTP. Un protocollo senza stato tratta ogni richiesta come un'operazione indipendente e ogni comunicazione tra un client e un server viene considerata come una coppia indipendente di richieste e risposte.

REST è uno stile di architettura per la progettazione di applicazioni di rete e non si riferisce a un singolo protocollo. REST è una strategia di progettazione per le comunicazioni tra varie entità in un'applicazione di rete. L'idea è quella di usare un meccanismo semplice invece di CORBA, WSDL o RPC per connettersi e trasferire le informazioni tra i computer in una rete. Qualsiasi interfaccia che usa i principi REST è detta interfaccia RESTful.

Un'interfaccia RESTful usa le richieste HTTP per pubblicare (creare e/o aggiornare), leggere (eseguire query e ottenere informazioni) ed eliminare i dati. È quindi possibile usare un'interfaccia RESTful per le operazioni CRUD.

Un'interfaccia RESTful è costituita dai componenti seguenti:

  • Un URI (Uniform Resource Identifier), ad esempio un URL HTTP tramite il quale è possibile accedere al servizio.
  • Un tipo di elemento multimediale Internet per i dati supportati dal servizio (in genere XML o JSON).
  • Un set di operazioni supportate dal servizio Web tramite metodi HTTP (GET, PUT, POST e DELETE).
  • Un'API basata su HTTP.

Un programma che deve connettersi a un servizio con un'interfaccia RESTful può quindi usare richieste HTTP GET, PUT, POST e DELETE standard. Un esempio di richiesta REST verrà illustrato a breve.

I vantaggi principali di REST sono i seguenti:

  • Approccio indipendente dalla piattaforma ideale per Internet.
  • Interfaccia indipendente dal linguaggio perché tutte le istruzioni vengono passate tramite HTTP in modo che, ad esempio, un client C# possa comunicare con un server Python.
  • Comunicazione basata su standard perché avviene tramite HTTP.
  • Funzionamento anche in presenza di firewall, purché il traffico HTTP o HTTPS non venga filtrato.

Per altre informazioni sull'uso di REST per accedere e gestire i dati archiviati nel cloud, vedere Progettazione di API Web RESTful.

Sistemi di archiviazione di oggetti

L'Archiviazione BLOB di Azure è un esempio di archiviazione basata su oggetti nel cloud. L'archiviazione BLOB consente agli utenti di archiviare oggetti in contenitori. Ogni oggetto può essere creato, letto ed eliminato. Si noti che nel modello di archiviazione BLOB, anche se non c'è alcun metodo di aggiornamento degli oggetti nativo, è possibile eliminare e ricreare un intero oggetto, in modo analogo a una sovrascrittura di un file.

Di seguito è riportato un esempio di chiamata HTTP RESTful ad Archiviazione BLOB di Azure per creare un contenitore denominato mycontainer. La chiamata HTTP include informazioni di autorizzazione per l'accesso del client al bucket.

PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container HTTP/1.1  
  
Request Headers:  
x-ms-version: 2011-08-18  
x-ms-date: Sun, 25 Sep 2011 22:50:32 GMT  
x-ms-meta-Name: StorageSample  
Authorization: SharedKey myaccount:Z5043vY9MesKNh0PNtksNc9nbXSSqGHueE00JdjidOQ=

L'archiviazione BLOB può elaborare la richiesta e invierà una risposta HTTP simile all'esempio seguente:

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 23:00:12 GMT  
ETag: "0x8CB14C3E29B7E82"  
Last-Modified: Sun, 25 Sep 2011 23:00:06 GMT  
x-ms-version: 2011-08-18  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

Nella risposta Azure ha riconosciuto la richiesta, ha indicato che la richiesta ha avuto esito positivo (con un messaggio "201 Creato") e ha restituito alcune informazioni relative alla richiesta.

Per informazioni sull'uso di REST con l'Archiviazione BLOB di Azure, vedere API REST Archiviazione BLOB.

Standard di archiviazione di oggetti cloud: CDMI

La mancanza di uno standard comune per l'archiviazione di oggetti è un problema dell'archiviazione di oggetti cloud.

La Storage Networking Industry Association (SNIA) promuove uno standard aperto per gli oggetti cloud, denominato CDMI (Cloud Data Management Interface).

CDMI.

Figura 22: CDMI

Lo standard CDMI definisce gli oggetti dati e i contenitori di dati con metadati con tag (come coppie chiave-valore) e usa le interfacce RESTful, con JSON come formato di scambio di dati. È possibile usare lo standard CDMI per l'accesso ai dati e la loro gestione in un cloud di archiviazione (figura 22). Un esempio di interazione client con un cloud di archiviazione tramite CDMI è illustrato nella figura 23.

CDMI client interacting with a CDMI storage cloud.

Figura 23: Un client CDMI che interagisce con un cloud di archiviazione CDMI

Il client CDMI può inviare richieste tramite HTTPS. MimeType indica il tipo di risorsa CDMI con cui il client interagisce (un oggetto, un contenitore) e restituisce codici di stato HTTP standard, che indicano lo stato della richiesta.

Il modello CDMI è illustrato nella figura 24. È presente una risorsa CDMI in un percorso radice, indicato dall'URI radice: https://<offering>. Nell'esempio sono presenti due contenitori, A e B, che contengono un oggetto ciascuno. Si noti che ogni entità CDMI può supportare i metadati, come indicato con i tag chiave-valore associati a ogni entità.

CDMI data model.

Figura 24: Modello di dati CDMI

CDMI supporta inoltre i tipi di risorse seguenti:

  • cdmi-capability: entità speciale che descrive le funzionalità di questo particolare archivio cloud. Questa entità è importante e può essere usata per individuare le funzionalità di un cloud (ad esempio, backup e replica).
  • cdmi-domain: consente la creazione di domini, ad esempio gruppi di utenti con autorizzazioni di accesso agli oggetti.
  • cdmi-queue: consente la creazione di code di oggetti che operano prima in ordine FIFO (First Out). Le applicazioni possono usare tali code per implementare sistemi di notifica o di messaggistica.

CDMI offre i vantaggi seguenti:

  • La specifica indipendente dal fornitore di un sistema di archiviazione di oggetti cloud consente la migrazione dei dati da un cloud a un altro in modo più semplice.
  • Consente il peering cloud per l'archiviazione, che è un concetto in base a cui è possibile connettere risorse di cloud diversi per consentire una facile condivisione dei dati tra cloud.
  • Rispetta gli standard esistenti, ad esempio le interfacce RESTful per l'accesso ai dati, e può funzionare con più astrazioni di archiviazione sottostanti, come file system condivisi e di rete.
  • Si tratta di uno standard maturo, che include un'implementazione di riferimento e la standardizzazione ISO.

Lo svantaggio dello standard CDMI è che la sua adozione è ancora agli inizi. Lo standard CDMI è supportato da molte aziende che si occupano di archiviazione, ma non è ancora ufficialmente supportato dalla maggior parte dei fornitori e il suo successo rimane poco chiaro.