La crescente comunità di persone collegate ad internet impone sfide via via più grandi agli addetti ai lavori del digitale. Il boom dei dispositivi connessi alla rete ci permette ormai di accedere a servizi web in modi sempre diversi, generando una quantità di dati destinata a crescere con il tempo. Per le tech company che lavorano con i dati, non si tratta soltanto di un problema di storage, ma anche sicurezza e di continuità di servizio.

Quali sono le soluzioni aziendali per rimanere a galla in questo mare di file? 

In questo articolo parleremo di Amazon S3 e di come questo servizio cloud riesca a semplificare la gestione dello storage di grandi quantità di dati in modo scalabile e ad un costo ridotto rispetto a qualsiasi altra soluzione di storage tradizionale.

Cos’è Amazon S3? Come funziona Amazon S3?

Partiamo dalle basi: S3 sta per Simple Storage Service.

Cos’è Amazon S3

Amazon S3 è un servizio di cloud computing che offre storage di oggetti scalabile, senza limiti di quantità e con una durevolezza del dato garantita al 99,999999999%.

Questa sorprendente percentuale ad undici nove viene rispettata grazie alla ridondanza dei data center tra diverse “Availability Zone” all’interno di varie “Region” del servizio AWS.

Ma cosa sono le Region? Cosa sono le Availability Zone?

Per svelare i segreti di Amazon S3 dobbiamo prima scoprire come funziona AWS.

Come funziona AWS

Sbarazzandoci dei tecnicismi, possiamo dire che l’infrastruttura di AWS è una grande catena di data center distribuiti in tutto il globo che comunicano tra di loro attraverso internet.

Possiamo analizzare la gerarchia dei vari componenti di AWS partendo dal livello più alto: le Region.

Cosa sono le Region

Una Region rappresenta un insieme di data center localizzati in una specifica regione geografica del mondo, ed ognuna di loro è totalmente indipendente dalle altre.

Ecco una mappa delle Region di AWS:

Region e Availability Zone di Amazon S3
La rete mondiale di data center di AWS

I cerchi arancioni indicano le Region attualmente attive, tra cui la nuova Region italiana AWS Milano, mentre i verdi rappresentano le Region in fase di attivazione.

I numeri all’interno di ogni cerchio rappresentano invece il numero di “Availability Zone” all’interno di quella specifica Region.

Cosa sono le Availability Zone

Le Availability Zone sono i veri e propri data center, il cuore pulsante di AWS.

Si tratta di data center isolati ma connessi tra di loro attraverso dei collegamenti in fibra ottica a bassa latenza. Nella maggior parte delle Region sono presenti due o più Availability Zone, ed è qui che risiede il segreto dell’efficienza dei servizi AWS.

Availability Zone di Amazon S3
Le availability Zone all’interno delle Region

S3, per impostazione predefinita, replica i dati all’interno di almeno tre Availability Zone di una stessa Region, in modo che se anche un’intera Availability Zone venisse compromessa, ad esempio a causa di una calamità naturale, gli utenti della nostra applicazione non noterebbero alcun disservizio. Tutte la applicazioni ed i servizi web poggiati su S3 continuerebbero a funzionare come al solito.

E per completare il quadro della gerarchia, parliamo infine delle Edge Location.

Cosa sono le Edge Location

Le Edge Location sono dei data center più piccoli rispetto alle Availability Zone, pensate per la distribuzione di contenuti a bassa latenza. Al momento esistono ben 205 edge location ed 11 cache edge regionali in 84 città e in 42 paesi.

Sebbene non facciano direttamente parte di Amazon S3, sono completamente integrate con il servizio e possiamo sfruttarle attivando la distribuzione CloudFront, il Content Delivery Network (CDN) di AWS.

Mappa delle Edge Location di CloudFront, servizio integrato in Amazon s3.
Regional Edge Cache ed Edge Location

Come abbiamo visto poco sopra e nella mappa, a loro volta le Edge Location si suddividono in due distinte unità:

  1. Regional Edge Cache
  2. Edge Location

La principale differenza tra le due unità è che le prime mantengono i file in memoria per un periodo di tempo maggiore rispetto alle seconde, fungendo come da “archivio” per le più piccole edge location.

Quindi, facendo il punto della situazione, possiamo riassumere la gerarchia di AWS in questo modo:

Gerarchia dei componenti AWS
La gerarchia dei componenti di AWS

Adesso possiamo finalmente concentrarci sul funzionamento di Amazon S3 e sulle sue caratteristiche.

Come funziona Amazon S3

Più in alto abbiamo parlato di “storage di oggetti”, perché in Amazon S3 i nostri file vengono definiti oggetti e vengono memorizzati all’interno di contenitori definiti bucket. Vediamo di cosa si tratta.

Cos’è un Bucket

Un bucket è un contenitore di oggetti in Amazon S3. È come se fosse una cartella nel nostro account AWS ed è necessario crearne uno prima di poter procedere con l’upload dei dati.

Dato che è possibile accedere ai nostri oggetti via web, il nome di ogni bucket è univoco per tutte le Region di AWS: non esistono due bucket con lo stesso nome.

I file caricati all’interno di un bucket vengono quindi definiti oggetti.

Cos’è un Oggetto

Su Amazon S3 un oggetto è un insieme di dati e metadati che viene identificato in modo univoco da una chiave e, nel caso in cui attivassimo la funzione Versioni Multiple (di cui parleremo tra poco), da una chiave e dal suo suo Version ID.

La struttura di un oggetto all’interno di un bucket è quindi la seguente:

  • (Dati + Metadati) + Chiave + Version ID

Cos’è una Chiave

Una chiave in Amazon S3 è una stringa che identifica un oggetto in modo univoco all’interno di un bucket e coincide con il nome dell’oggetto o con il suo “percorso”.

Le virgolette sono d’obbligo perché S3 usa un modello di storage piatto in cui non esistono cartelle e sottocartelle, ma possiamo comunque utilizzare prefissi e delimitatori per simulare la gerarchia di un file system tradizionale.

Ad esempio, se volessi archiviare la mia foto.jpg nella “cartella” delle foto ad alta risoluzione e la mia anteprima.jpg nella “cartella” delle foto a bassa risoluzione, potrei utilizzare questi percorsi:

  • altarisoluzione/foto.jpg
  • bassarisoluzione/anteprima.jpg

Oltre a ricreare una gerarchia fittizia all’interno del bucket S3, questi percorsi rappresentano le chiavi dei miei due oggetti.

Riassumendo, ogni oggetto all’interno di un bucket può quindi essere identificato e raggiunto in questo modo:

  • Bucket + Chiave + Version ID

Parliamo infine di alcune caratteristiche di Amazon S3.

Funzioni e classi di storage di Amazon S3

Nonostante il nome suggerisca una grande semplicità, le diverse classi di storage e le funzioni di Amazon S3 lo rendono un prodotto versatile e adatto ad un’ampia gamma di casi d’uso. In basso riassumo tre importanti funzioni: la cross-region replication, il Versioning e le lifecycle policy, per affrontare immediatamente dopo le diverse classi di storage.

Cross-Region replication

Ho già specificato che S3 per impostazione predefinita replica i dati tra diverse Availability Zone. Ma come funziona per le varie Region? È possibile replicare i dati anche tra Region diverse? La risposta è sì, e la funzione che lo permette prende il nome di Cross-Region Replication.

La Cross-Region Replication è la possibilità di replicare i nostri dati non solo tra le diverse Availability Zone, ma anche tra le varie Region, per questioni di latenza o di sicurezza.

La funzione cross-region replication di Amazon S3
La Cross-Region Replication

Amazon ci tiene a specificare che i dati all’interno di una Region non vengono mai replicati tra le altre Region a meno che non venga esplicitamente richiesto dall’utente. Questo perché ogni paese ha una legislazione differente in materia di dati a cui sono sottoposti -ovviamente- anche i data center di AWS.

Detto questo, possiamo scegliere di replicare i nostri dati in una o più Region ad esempio per:

  • diminuire la distanza fisica tra utente e servizio riducendo in questo modo la latenza.
  • mantenere copie di dati a grandi distanze per motivi di sicurezza o compliance.

E sempre in materia di sicurezza introduciamo un ulteriore vantaggio di Amazon S3, il Versioning o Versioni Multiple.

Versioni multiple

Versioni Multiple è una funzione di S3, non attiva di default, che ci dà la possibilità di archiviare oggetti in più versioni, utile per:

  • proteggersi da cancellazioni o sovrascritture di oggetti accidentali.
  • accedere alle versioni precedenti di un oggetto avendo una sorta di cronologia delle modifiche.
  • configurare un piano di backup basato su regole di ciclo vita.

Quindi, cosa succede se attivo la funzione Versioni Multiple?

Facciamo un esempio:

Attivo la funzione e carico la mia foto.jpg sul mio bucket S3.

In questo caso, al mio Oggetto verrà associata non solo una Chiave univoca, ma anche un Version ID.

Nel momento in cui sovrascrivo l’oggetto in questione, questo non viene eliminato: all’oggetto “sovrascritto” viene assegnato un diverso Version ID e la mia foto.jpg viene quindi archiviata con due Version ID differenti:

  • foto.jpg
    1. Version ID 02
    2. Version ID 01
La funzione Versioning di Amazon S3 - operazione put
Il versioning in un’operazione di sovrascrittura

A questo punto, posso conservare ed avere accesso ad entrambe le versioni dello stesso oggetto all’interno dello stesso bucket s3.

Il meccanismo è simile in caso di eliminazione del file.

Quando elimino un oggetto in un bucket con il Versioning attivo, questo non viene realmente eliminato. All’oggetto viene assegnato un “delete marker“, e la versione “cancellata” dell’oggetto diventa la sua “versione corrente”.

La funzione Versioning di Amazon S3 - operazione delete
La funzione delete con Versioning attivo

In questo modo non corro il rischio di cancellare o sovrascrivere dati importanti perché posso accedere alle loro versioni meno recenti, e con le regole di ciclo vita posso associargli delle scadenze.

Regole di ciclo vita

Le regole di ciclo vita permettono di gestire il ciclo vitale degli oggetti all’interno di un bucket seguendo delle regole da noi stabilite che vengono eseguite in automatico da S3. Nello specifico, possiamo definire due tipi di azioni:

  • Transizioni: ad esempio, spostare gli oggetti ad una classe di storage più economica dopo 30 giorni dalla loro creazione.
  • Scadenze: possiamo stabilire dopo quanto tempo un oggetto deve essere eliminato.

Come anticipato sopra, possiamo utilizzare le regole di ciclo vita anche per spostare versioni meno recenti di un oggetto ad una classe di storage più economica dopo un determinato periodo di tempo. Infatti, esistono diverse classi di storage per diversi casi d’uso.

Classi di storage

Le classi di storage in Amazon S3 sono state ideate con in mente diversi casi d’uso per una vasta varietà di settori. Attualmente esistono sei diverse classi, ognuna con costi e caratteristiche diverse. Ne riassumo qui le caratteristiche principali.

S3 Standard

S3 Standard è la classe di storage per uso generico, ed ha tutte le caratteristiche di cui abbiamo discusso: ridondanza tra le Availability Zone, alta disponibilità e durevolezza del dato garantita al 99,999999999. È la classe più indicata per siti web, applicazioni o qualsiasi altro servizio che necessiti di storage ad accesso frequente.

S3 Intelligent Tiering

Questa classe di storage è simile ad S3 Standard ma è indicata per i casi in cui non siamo sicuri della frequenza con cui accederemo ai nostri oggetti. Con Intelligent Tiering, Amazon S3 si occupa di monitorare per conto nostro la frequenza di accesso agli oggetti, spostando in automatico quelli ad accesso meno frequente in una classe di storage meno costosa, ovvero S3 Standard Infrequent Access.

S3 Standard Infrequent Access

Pensata per lo storage a lungo termine e ad accesso sporadico, ad esempio backup e disaster recovery, S3 Standard Infrequent Access mantiene le stesse prestazioni delle classi di storage di cui abbiamo parlato sopra ad un costo inferiore.

Amazon S3 One Zone-Infrequent Access

A differenza della precedente classe e delle altre, in questa classe di storage i dati vengono archiviati esclusivamente all’interno di una singola Availability Zone. S3 One Zone costa il 20% in meno di S3 Standard IA ed è pensato per l’archiviazione di file facilmente ricreabili o copie di backup secondarie.

S3 Glacier

S3 Glacier è una classe di storage economica pensata per l’archiviazione a lungo termine e ad accesso sporadico in cui, oltre allo storage, si paga una commissione per il recupero dei dati archiviati. In Glacier esistono tre diverse opzioni per il recupero dei dati:

  • Expedited: tempi di recupero da 1 a 5 minuti
  • Standard: tempi di recupero da 3 a 5 ore
  • Bulk: tempi di recupero da 5 a 12 ore

S3 Glacier Deep Archive

Come S3 Glacier, quest’ultima classe di storage è pensata per l’accesso sporadico ma per tempi di archiviazione molto lunghi (7-10 anni) ed accessi meno frequenti (1-2 volte l’anno). S3 Glacier Deep Archive costa fino al 75% in meno rispetto ad S3 Glacier ed offre due opzioni per il recupero dei dati:

  • Standard: tempi di recupero entro le 12 ore
  • Bulk: tempi di recupero entro le 48 ore

 

CTMobi è AWS Partner

Costruiamo insieme il tuo successo


Ascolta l'articolo