Lezioni apprese dalla recente interruzione di AWS S3

Amazon S3 è alla base di molti servizi AWS, tra cui AWS Lambda, Elastic BeanStalk e il dashboard sull'integrità dei servizi di Amazon. Serve anche come oggetto e archivio multimediale per molti altri servizi Internet che si basano su di esso ogni giorno.

Il 28 febbraio 2017 AWS ha registrato un'interruzione di ore del servizio Amazon S3 nella regione US-EAST-1. Ciò ha creato un effetto a cascata di interruzioni su una buona parte di Internet, inclusi servizi come Dockerhub.

Un errore umano si è rivelato essere la causa principale:

Alle 9:37 AM PST, un membro del team S3 autorizzato che utilizzava un playbook stabilito ha eseguito un comando che aveva lo scopo di rimuovere un piccolo numero di server per uno dei sottosistemi S3 utilizzati dal processo di fatturazione S3. Sfortunatamente, uno degli input del comando è stato immesso in modo errato e un insieme di server più ampio del previsto è stato rimosso.

A quanto pare, c'è un malinteso comune sulla differenza tra durata e disponibilità. La durabilità misura l'affidabilità dello storage e risponde alla domanda "Sto per perdere i miei dati?" La disponibilità, d'altra parte, misura quanto sono accessibili i dati, ad es. "Sarò in grado di recuperare i miei dati?"

AWS S3 offre una durabilità del 99,999999999% in una singola regione. Se esaminiamo l'esempio di Amazon, ciò significa che se immagazzini 10.000 oggetti in S3, in media un singolo oggetto potrebbe perdersi una volta ogni 10 milioni di anni. Amazon S3 ottiene questo risultato replicando i dati su più strutture all'interno di una regione.

La disponibilità degli oggetti standard S3, d'altra parte, è del 99,99% all'anno all'interno di una regione. Ciò significa che in un dato periodo di 12 mesi dovresti aspettarti un totale di 52 minuti e 33 secondi di non essere in grado di accedere ai tuoi dati.

AWS offre servizi IaaS e PaaS. A livello IaaS, i clienti AWS hanno il pieno controllo dei server e delle reti virtuali. Possono configurare qualsiasi software e servizio desiderino e lo gestiscono da soli. Qualsiasi interruzione è responsabilità del cliente.

A livello di PaaS, AWS offre servizi di piattaforma completamente gestiti come storage di oggetti, database, code e così via. Il client delega la responsabilità per la disponibilità e la durata di questi servizi al provider di servizi gestiti, in questo caso AWS. I servizi della piattaforma AWS utilizzati tramite la loro API proprietaria sono particolarmente vulnerabili a un'interruzione regionale a causa di un errore umano in AWS.

L'errore umano può causare un'interruzione ovunque: in sede, nel cloud, gestito o ospitato autonomamente. Considera la recente interruzione del computer Delta come un esempio di un intero sistema self-hosted che si arresta. Delegare la responsabilità della gestione di un servizio di piattaforma a un provider di cloud non cambia il fatto che l'errore umano può abbatterlo, ma ne amplifica l'impatto. Mentre l'interruzione di Delta ha avuto un impatto solo su Delta, un'interruzione di AWS S3 ha avuto un impatto su una buona parte di Internet.

Fortunatamente, AWS S3 offre numerosi strumenti per ridurre l'impatto di un'interruzione. Consideriamone solo alcuni.

Replicazione interregionale S3

I dati archiviati in una particolare regione S3 vengono replicati in tutte le zone di disponibilità e possono sostenere un'interruzione in qualsiasi zona. Tuttavia, non può sopravvivere a un'interruzione in un'intera regione, come quella avvenuta il 28 febbraio. La replica di oggetti S3 in aree geografiche aiuta a soddisfare i maggiori requisiti di ridondanza.

Backup

La replica in più regioni può aiutare ad aumentare la disponibilità. I backup su AWS Glacier possono contribuire a una maggiore durata. Convenientemente, AWS offre un meccanismo automatico per il backup degli oggetti in S3 su Glacier.

Considera la distribuzione dei contenuti con CloudFront

Se si accede frequentemente agli oggetti S3, potrebbe essere opportuno configurare AWS CloudFront per servire gli oggetti da S3. CloudFront replicherà i dati dove gli utenti ne hanno più bisogno e può aiutare ad alleviare gli effetti di un'interruzione di S3 in alcuni casi d'uso.

Pensieri finali

I servizi di piattaforma gestita sono la pietra angolare dei servizi cloud. L'utilizzo di uno come S3 può ridurre i costi DevOps e aiutare a portare le applicazioni sul mercato più velocemente. Sebbene AWS sia stato estremamente affidabile nel corso degli anni, Amazon ha subito interruzioni autoinflitte in passato. La recente interruzione di S3 non fa eccezione. Alcune combinazioni di replica, backup e distribuzione del contenuto su più regioni dovrebbero ridurre l'impatto di tali interruzioni.