Corso
Un sistema di archiviazione dati efficace è un elemento cruciale per il successo operativo di qualsiasi azienda, in tutti i settori. Più dati si raccolgono, più diventa essenziale disporre di soluzioni di storage scalabili, affidabili ed economiche.
Scegliere lo storage giusto può essere complesso per l’ampia gamma di opzioni, sia nel cloud sia on-premises, ciascuna con vantaggi e limiti.
Questo articolo non intende coprire tutte le opzioni possibili, ma si concentra su servizi scalabili, affidabili ed economici: Amazon Simple Storage Service (Amazon S3) e Amazon Elastic File System (EFS).
Inizieremo spiegando perché le aziende dovrebbero adottare servizi di storage e poi tratteremo i fondamenti dei servizi di archiviazione. Forniremo quindi indicazioni su come integrare i servizi di storage in un processo operativo. L’ultima sezione approfondisce i concetti avanzati, con particolare attenzione a ottimizzazioni di prestazioni e costi.
Se cerchi una risorsa introduttiva completa su Amazon Web Services (AWS), dai un’occhiata a questo corso di Introduzione ad AWS.
Perché AWS per l’archiviazione di file?
Con tutte le opzioni di storage disponibili, è importante chiarire perché un’azienda dovrebbe usare AWS per l’archiviazione dei file: è lo scopo di questa sezione.
Partiamo con un’analisi comparativa tra i servizi di storage AWS e quelli tradizionali, con brevi esempi di applicazioni reali. Questo dovrebbe rafforzare la pertinenza di AWS S3 ed EFS in vari scenari.
Confronto tra opzioni di storage
I servizi di storage tradizionali e quelli AWS offrono insiemi diversi di funzionalità e benefici. Eseguiamo un’analisi comparativa nella tabella seguente:
|
Caratteristiche |
Storage tradizionale |
AWS S3 & EFS |
|
Costo |
Spesa in conto capitale per l’hardware e costi continui di manutenzione—possono risultare imprevedibili nel tempo. |
Il modello di prezzo pay-as-you-go riduce i costi iniziali e aiuta a gestire meglio i costi in base all’uso. |
|
Conformità |
Raggiunta tramite controlli interni e audit; può richiedere risorse aggiuntive per mantenere gli standard. |
AWS è conforme a un’ampia gamma di standard di settore come HIPAA e GDPR, semplificando la conformità per gli utenti. |
|
Accessibilità dei dati |
Accessibili principalmente da sedi o reti specifiche. L’accesso remoto può essere meno sicuro e complesso. |
Accessibili globalmente via internet, con alta disponibilità e ridondanza dei dati. |
|
Durabilità dei dati |
Soggetti a danni fisici, furti o disastri naturali. |
Offrono una durabilità del 99.99999999999% (11 nove) replicando automaticamente i dati su più zone di disponibilità. |
|
Gestione e manutenzione |
Richiedono un team dedicato per manutenzione hardware, aggiornamenti software e troubleshooting. |
Gestite da AWS. Questo riduce l’onere amministrativo per gli utenti. |
|
Prestazioni |
Dipendono dall’hardware e dall’infrastruttura di rete specifici. Anche gli upgrade possono essere costosi. |
Offrono opzioni di prestazioni personalizzabili. S3 fornisce classi di storage e funzionalità di accelerazione, mentre EFS supporta workload burst e modelli di throughput. |
|
Scalabilità |
Limitata dall’infrastruttura fisica e richiede interventi manuali per scalare. |
Altamente scalabili, consentono di adeguare facilmente lo storage senza provisioning iniziale. |
|
Sicurezza |
Dipende dalle misure di sicurezza locali. Richiede un notevole impegno per garantire sicurezza e conformità. |
Offrono controlli di sicurezza completi, inclusa la crittografia dei dati (a riposo e in transito), gestione degli accessi e certificazioni di conformità. |
Sia S3 sia EFS hanno un ampio ventaglio di applicazioni nei vari settori. Di seguito alcuni esempi reali per entrambi i servizi, a evidenziarne rilevanza e utilità in diversi scenari.
Casi d’uso di Amazon S3
Vediamo prima i casi d’uso di Amazon Simple Storage Service (S3):
- Hosting di siti web: S3 ospita siti statici come blog, siti di marketing e portfolio. La sua copertura globale e l’elevata durabilità garantiscono una distribuzione rapida e affidabile dei contenuti in tutto il mondo.
- Backup e disaster recovery: S3 può essere usato per backup, archiviazione dei dati e ripristino di emergenza grazie all’elevata durabilità e disponibilità.
- Data lake per analytics: Le aziende possono aggregare grandi quantità di dati strutturati e non strutturati su S3 per analisi big data.
- Distribuzione e delivery di contenuti: Le media company usano S3 per archiviare e distribuire grandi file video, audio e immagini per ulteriori analisi. Insieme a CloudFront e ai servizi di Content Delivery Network, S3 consente di distribuire contenuti agli utenti con bassa latenza.
Casi d’uso di EFS
Vediamo ora i casi d’uso di Amazon Elastic File System (EFS):
- File storage condiviso per istanze EC2: EFS funge da storage file altamente disponibile e scalabile per le istanze EC2. Le applicazioni in esecuzione su più istanze possono condividere dati tramite EFS, ideale per workload che richiedono funzionalità tipiche dei file system, come archiviazione gerarchica, navigazione tra directory e file locking.
- Storage per container: EFS può essere usato con applicazioni containerizzate, incluse quelle orchestrate da Amazon ECS e Kubernetes su AWS. Offre uno strato di storage persistente per i container, permettendo ai dati di sopravvivere oltre il ciclo di vita di una singola istanza di container.
- Big data e analytics: EFS è adatto ad applicazioni di Big Data Analytics che richiedono file storage condiviso. Può supportare workload analitici complessi fornendo il throughput, gli IOPS e la bassa latenza necessari per elaborare grandi dataset.
Fondamenti dello storage AWS
Alla luce di queste informazioni su S3 ed EFS, è fondamentale sapere quando usare quale servizio: è l’obiettivo di questa sezione. Introdurremo prima block, file e object storage, quindi passeremo al confronto tra S3 ed EFS.
Introduzione a block, file e object storage
Block storage, file storage e object storage sono tre tipologie fondamentali di sistemi di archiviazione. Ognuna serve a scopi diversi nel cloud computing e nella gestione dei dati.
Block storage
Il block storage segmenta i dati in blocchi, ciascuno con un identificatore univoco, consentendo una gestione dei dati flessibile ed efficiente. Amazon Elastic Block Store (EBS) e Instance Store Volumes sono esempi di block storage nell’ecosistema AWS.
Instance Store fornisce storage effimero collegato direttamente a un host, ideale per dati temporanei. EBS, invece, offre storage a blocchi persistente, adatto a database, applicazioni e file system che richiedono durabilità e backup incrementali tramite snapshot.
File storage
Il file storage organizza i dati in una struttura gerarchica di file e cartelle, simile a un tradizionale file system su un computer. Questo approccio intuitivo semplifica l’accesso e la gestione dei dati in molte applicazioni e servizi.
Amazon Elastic File System (EFS) è un esempio di file storage nel cloud. Fornisce un file system condiviso che scala automaticamente e supporta l’accesso simultaneo da più istanze.
EFS è particolarmente utile per applicazioni che richiedono accesso condiviso ai file o per servire contenuti che devono essere accessibili e modificabili da più utenti o sistemi.
Object storage
L’object storage, come Amazon S3, è progettato per archiviare enormi quantità di dati non strutturati. A differenza di block e file storage, l’object storage gestisce i dati come oggetti all’interno di bucket.
Ogni oggetto include i dati, i metadati e un identificatore univoco, consentendo un recupero e una gestione efficienti a qualsiasi scala. S3 è versatile e supporta un’ampia gamma di casi d’uso, dall’hosting di siti statici all’archiviazione di dati, grazie alle sue varie classi di storage, tra cui Standard, Standard-Infrequent Access (IA), Glacier Flexible Retrieval e Glacier Deep Archive.
S3 vs. EFS
La scelta tra Amazon S3 e Amazon Elastic File System (EFS) dipende dai requisiti specifici della tua applicazione o del tuo carico di lavoro. Vediamo le differenze:
|
Caratteristica |
Amazon S3 |
Amazon EFS |
|
Tipo di dati |
Dati non strutturati come immagini, video, log e backup. |
File condivisi che devono essere accessibili contemporaneamente da più istanze EC2. |
|
Scala dello storage |
Progettato per enormi quantità di dati, scalabile fino agli exabyte. |
Scala automaticamente in base alle tue esigenze di storage senza interventi manuali. |
|
Pattern di accesso |
Ideale per dati con pattern di accesso variabili, dal frequente all’archivio. |
Adatto a dati che richiedono accesso costante e simultaneo da parte di più applicazioni. |
|
Integrazione |
Si integra con i servizi AWS per elaborazione dati, analytics e distribuzione di contenuti. |
Supporta applicazioni che richiedono un’interfaccia da file system tradizionale. |
|
Classi di storage |
Multiple classi di storage. |
Non applicabile. |
|
Considerazioni sui costi |
I costi di storage variano in base alla classe, con opzioni per accesso infrequente per ridurre i costi. |
Costo basato sulla capacità utilizzata, senza costi iniziali e con scalabilità automatica. |
|
Scalabilità e flessibilità |
Altamente scalabile sia per capacità di storage che per prestazioni. |
Flessibilità nello scalare senza dover eseguire provisioning, gestendo facilmente i picchi di carico. |
Primi passi con Amazon S3
Ora che abbiamo una migliore comprensione del concetto di file storage, è il momento di sporcarci le mani con un po’ di implementazione tecnica.
Questa sezione copre il processo di gestione dei dati con Amazon S3. In particolare, impareremo a creare un bucket per lo storage, organizzare i dati in cartelle, caricare file, regolare i permessi per l’accesso pubblico quando necessario, applicare metadati per la gestione e infine eliminare il bucket e i suoi contenuti per liberare risorse ed evitare costi aggiuntivi.
Il prerequisito principale per completare con successo questa sezione è avere un account AWS, che può essere creato dal sito web di AWS.
Crea un bucket
Il punto di partenza è la AWS Management Console, come mostrato di seguito:

Questa console aiuta a gestire tutte le risorse AWS, dalle istanze di calcolo come EC2 ai servizi di accodamento dei messaggi come SQS, inclusa la gestione della sicurezza.
Una volta nella console, il primo passo è creare un’istanza S3. Puoi farlo con i passaggi seguenti (segui i numeri nell’immagine sotto):

Procediamo ora con qualche altro passaggio:

Aggiungiamo alcune note ad alcuni dei passaggi visti:
- Passaggio 4: abbiamo creato il bucket nella regione US East (Ohio) us-east-2.
- Passaggio 5: i nomi dei bucket sono globalmente univoci, quindi è importante sceglierne uno non già in uso. In questo modo nessun altro, a prescindere dalla posizione, potrà creare un bucket con lo stesso nome.
- Passaggio 6: l’opzione ACLs enabled consente di impostare permessi dettagliati su chi può accedere ai file del bucket e cosa può farne. È utile per gestire l’accesso a livello di singolo file. L’opzione ACLs disabled non permette di impostare permessi sui singoli file.
- Passaggio 8: l’opzione Bucket owner preferred assicura che siamo proprietari di tutti i file caricati nel bucket, indipendentemente da chi li carica. Questo semplifica la gestione di permessi e accessi.
Creiamo il bucket con altri tre passaggi:


Carica dati nel bucket
Dopo aver creato il bucket, possiamo vederne i dettagli qui sotto. Un bucket è un contenitore che può contenere risorse. Il caricamento delle risorse parte dalla creazione di una cartella. Iniziamo con questi due passaggi:

Ora creiamo la cartella:

Nota che la cartella è stata creata!

È il momento di caricare i dati nella cartella. Proviamo a caricare un’immagine:

Abbiamo caricato l’immagine con successo!

Configura il controllo degli accessi
Per impostazione predefinita, tutti i file caricati nel bucket sono privati e di proprietà del creatore, e solo il proprietario può visualizzarli, modificarli o scaricarli. Tuttavia, potremmo dover configurare il bucket in modo che chiunque possa accedere al file—utile quando tutti devono vedere le foto su un sito web.
Possiamo fare questa configurazione consentendo l’accesso pubblico all’immagine. Questo dovrebbe permetterci di accedere all’Object URL con accesso pubblico, ma purtroppo otteniamo un messaggio di Access Denied.

Per risolvere, dobbiamo andare nella scheda Permissions a livello di bucket e modificare la Bucket Policy:
Ora modifichiamo lo statement:
Ora che abbiamo fatto queste modifiche, l’immagine viene finalmente visualizzata!

Logo AWS dopo la configurazione del controllo accessi
Introduzione ad Amazon EFS
Questa sezione illustra la creazione di un file system EFS, con enfasi su impostazioni di prestazioni e sicurezza.
Crea un security group
Creiamo prima un security group scegliendo l’opzione “Security Groups” sotto la scheda Security nel banner di sinistra.

Poi:
- Selezioniamo Create security group.
- Usiamo un nome significativo—MyDataCampEFSGroup nel nostro caso.
- Scriviamo una breve descrizione del security group.
- Lasciamo VPC con il valore predefinito.

Non aggiungiamo alcuna inbound rule:

Il tipo di Outbound rule 1 dovrebbe essere All traffic:

Completata la configurazione, possiamo cliccare il pulsante Create security group.

Il security group appena creato viene mostrato nella sezione Security Groups.

Configura il tuo primo file system EFS
Successivamente creiamo un file system EFS. Iniziamo cercando e selezionando EFS:

Clicchiamo ora su Create file system.

Usiamo un nome significativo, lasciamo la sezione VPC invariata e poi clicchiamo su Customize.

Per accedere alla pagina di configurazione della rete, clicchiamo Next.

Compiliamo ora le sezioni dei security group di ogni zona di disponibilità con MyDataCampEFSGroup.

Una volta fatto, clicchiamo di nuovo su Next.

L’ultimo passaggio consente di rivedere l’intera configurazione. Quando è tutto a posto, clicchiamo su Create.

Una volta completato con successo, dovremmo vedere il file system EFS appena creato nella scheda File systems.

Crea un’istanza EC2
Il passo successivo è creare un’istanza EC2, che fornisce a EFS l’ambiente di calcolo necessario e accede simultaneamente agli stessi dati.
Procediamo passo dopo passo! In console selezioniamo EC2. Quindi clicchiamo su Launch instance. Sceglieremo Amazon Linux 2, idonea al free tier.

Ora creiamo una coppia di chiavi per connetterci in modo sicuro all’istanza. Quella che creiamo qui ha estensione .pem e nome efs_ec2_key_pair. Il file viene scaricato e salvato in locale per usi successivi.

La capacità di storage predefinita è 8GiB, sufficiente per il nostro scenario, e il numero di istanze viene aumentato a 3. Il passaggio finale è avviare le istanze cliccando il pulsante Launch instance, e il risultato finale mostra le istanze appena create.

Prima di proseguire, verifichiamo di poterci connettere alle istanze. Useremo il seguente comando SSH (Secure Shell):
ssh -i [path_to_the_key] ec2-user@[Public IPv4 address]
Analizziamo il comando passo per passo:
ssh: comando che avvia la connessione SSH.-i [path_to_the_key]: opzione che specifica il percorso al file di chiave privata SSH, necessario per l’autenticazione sul server remoto.ec2-user: username predefinito per le istanze Linux di EC2. Possiamo usare uno username diverso se configurato.@: separa lo username dall’indirizzo del server.[Public IPv4 address]: l’indirizzo IP pubblico della nostra istanza EC2. Possiamo trovarlo nella AWS Management Console.
Vediamo i risultati della connessione a ciascuna istanza tramite SSH.
Risultato della connessione SSH per la prima istanza.

Risultato della connessione SSH per la seconda istanza.

Risultato della connessione SSH per la terza istanza.
Configura EFS
Questo ultimo passaggio permette il mount delle istanze EC2 create sopra. Possiamo farlo dall’interfaccia generale di EFS.
Per semplicità, il processo di mount è mostrato per una sola istanza, ma lo stesso approccio vale per le altre.
Iniziamo installando l’helper di mount EFS su ciascuna istanza usando il seguente comando:
sudo yum install -y amazon-efs-utils

Installazione delle utilità Amazon EFS—trace log.
Creiamo quindi una cartella efs nelle nostre istanze alla root usando sudo, assicurandoci di usare la stessa cartella su tutte le istanze.
sudo mkdir /efs

Dopo aver creato la cartella, il passo successivo è montarla. L’ID del file system è l’ID dell’EFS creato nella sezione EFS, e lo usiamo nel comando sudo mount -t efs [file system ID]:/ /efs:
sudo mount -t efs fs-088faeea6372efa83:/ /efs

Questo timeout si verifica perché il security group associato al sistema EFS creato non consente traffico in ingresso dalle nostre istanze EC2. Possiamo risolvere abilitando il security group ad accettare queste connessioni in ingresso:

Creiamo ora una nuova inbound rule:

Un’opzione più sicura è creare un security group separato per le istanze EC2 e consentire la connessione solo da quel security group. Tale configurazione è fuori dallo scopo di questo articolo.
Dopo aver completato correttamente questo processo su ciascuna istanza EC2, il sistema EFS può accettare connessioni da ovunque (incluse le nostre istanze EC2). Questa volta non otteniamo timeout:

Per verificare che il processo di mount sia riuscito, dovremmo poter:
- Creare una cartella all’interno della cartella condivisa efs da una istanza EC2
- Accedere a quella cartella da un’altra istanza EC2.
L’illustrazione seguente mostra come la cartella my_DataCamp_data venga creata dalla prima istanza EC2, insieme a un file README.txt. Lo stesso file README è visibile sulle restanti istanze EC2.

Condivisione file EFS.
Grazie alla potenza della configurazione EFS, un file creato da un’istanza è accessibile dalle altre istanze.
Per una panoramica più ampia dell’ecosistema AWS, dai un’occhiata a questo corso su AWS Cloud Technology and Services.
Strategie avanzate di storage
Strategie di storage efficaci sono essenziali per gestire i dati in modo efficiente. Due aspetti chiave sono l’ottimizzazione delle prestazioni e l’ottimizzazione dei costi.
Queste strategie sono particolarmente rilevanti per Amazon Simple Storage Service (S3) ed Elastic File System (EFS).
L’ottimizzazione delle prestazioni in S3 ed EFS implica la scelta di classi di storage e modalità di throughput adeguate per migliorare velocità ed efficienza.
L’ottimizzazione dei costi implica l’uso di diversi tier di storage in base alla frequenza di accesso ai dati e l’utilizzo degli strumenti di monitoraggio AWS per la gestione dei costi. Queste strategie aiutano a gestire i dati in modo efficiente e a ridurre i costi nel cloud storage.
Conclusione
Congratulazioni per essere arrivato fin qui! Speriamo che questo approfondimento ti metta nelle condizioni di iniziare a usare lo storage AWS.
Un modo efficace per padroneggiare i servizi AWS è applicarli a scenari reali—non solo singolarmente, ma anche combinando più servizi. Se questo tipo di esercizio ti interessa, dai un’occhiata al corso su Streaming Data con AWS Kinesis e Lambda.
Se stai cercando lavoro nell’ambito AWS, assicurati di consultare le certificazioni AWS nel 2024. Inoltre, può essere molto utile rivedere le domande e risposte per i colloqui AWS più frequenti.
Un data scientist poliedrico che ama condividere le proprie conoscenze e restituire valore agli altri, Zoumana è un content creator su YouTube e un top writer tech su Medium. Trova soddisfazione nel parlare in pubblico, programmare e insegnare. Zoumana ha due lauree magistrali: la prima in informatica con specializzazione in Machine Learning conseguita a Parigi, Francia, e la seconda in Data Science alla Texas Tech University negli Stati Uniti. Ha iniziato la sua carriera come Software Developer presso Groupe OPEN in Francia, per poi passare a IBM come Machine Learning Consultant, dove ha sviluppato soluzioni di IA end-to-end per compagnie assicurative. Successivamente, è entrato in Axionable, la prima startup di Sustainable AI con sede a Parigi e Montréal. Lì ha lavorato come Data Scientist e ha implementato prodotti di IA, principalmente casi d’uso di NLP, per clienti in Francia, Montréal, Singapore e Svizzera. Inoltre, ha dedicato il 5% del suo tempo ad attività di Ricerca e Sviluppo. Attualmente lavora come Senior Data Scientist presso IFC - World Bank Group.


