Ti sei mai chiesto come archiviare petabyte e petabyte di dati senza possedere nemmeno un solo disco rigido???
No, no, no, non è fantascienza, ma la realtà dell’architettura Disco zero. Vedrai, è divertente.
In un mondo Zero Disk, dove i tuoi database non sarebbero più limitati dalla capacità dei tuoi dischi locali, potresti espandere o ridurre la tua infrastruttura in pochi clic, senza preoccuparti dei vincoli hardware. Ebbene questo mondo esiste già grazie all’architettura Zero Disk e al cloud storage S3!
I database tradizionali come PostgreSQL o MySQL hanno un’architettura che associa strettamente l’elaborazione delle query (frontend) con l’archiviazione dei dati (backend). Questo approccio ci incatena ai nostri dischi rigidi come una palla al piede e se abbiamo bisogno di più spazio, dobbiamo acquistare nuove unità. E in caso di guasto hardware, è un disastro. Per non parlare della scalabilità orizzontale che sta diventando un vero grattacapo cinese!
Qui è dove l’architettura Disco zero entra in scena. L’idea è di una semplicità disarmante: invece di archiviare i propri dati su dischi fisici, li si invia direttamente nel cloud, più precisamente sugli hard disk di qualcun altro chiamato Amazon S3. Questo servizio è la cassaforte digitale più affidabile al mondo con la sua durata di undicinove (99,999999999%). In sostanza, questo significa che se conservassi 10 milioni di oggetti oggi, potresti perderne solo uno… tra 10.000 anni!
In questo modo, invece di scrivere direttamente su un disco locale, la tua applicazione invia i suoi dati a S3 sotto forma di oggetti. Questi oggetti vengono quindi replicati automaticamente in diverse zone di disponibilità per la massima disponibilità. L’architettura offre inoltre una notevole elasticità: puoi avviare o arrestare le istanze istantaneamente, senza preoccuparti della migrazione dei dati.
Naturalmente, questo approccio presenta alcune sfide, la principale delle quali è la latenza. Infatti, un accesso di rete a S3 richiede più tempo di un accesso al disco locale. Quindi per aggirare questo problema sono possibili diverse strategie:
- Batching: invece di scrivere singolarmente ogni pagina da 4KB, le raggruppiamo in pacchetti più grandi (ad esempio 512KB) prima di inviarli a S3.
- Caching intelligente: conserviamo i dati a cui si accede frequentemente nella RAM.
- Utilizzo di S3 Express One Zone. È una versione ottimizzata di S3 che offre latenze ridotte fino a 10 volte.
Sento che sei dubbioso, soprattutto gli appassionati di self-hosting, ma sappi che questa architettura ha dato prova di sé! Alle aziende piace Fiocco di neve, WarpStream O ClickHouse l’hanno già adottato con successo. Alcuni hanno addirittura sviluppato approcci ibridi: ad esempio, utilizzando un cluster Raft come cache di scrittura prima di rendere persistenti i dati su S3, ottimizzando così sia le prestazioni che i costi.
Attenzione però: non si tratta di una soluzione universale. Se gestisci alcuni database di piccole dimensioni, la complessità aggiuntiva potrebbe non valerne la pena. È come comprare una canotta per fare shopping, è divertente quando ti chiami Lulu, ma non è necessariamente pratico!
La vera magia dell’architettura Zero Disk risiede nella sua capacità di trasformare problemi complessi in soluzioni eleganti. Non dovrai più destreggiarti tra dischi, RAID o backup. Puoi concentrarti su ciò che conta davvero: sviluppare la tua app.
E le prospettive sono entusiasmanti! Man mano che le prestazioni di S3 continuano a migliorare, i costi diminuiscono e vengono aggiunte nuove funzionalità come le scritture condizionali, possiamo immaginare un futuro in cui l’archiviazione locale diventerà obsoleta quanto i floppy disk da 3,5 pollici. Un futuro in cui gli sviluppatori potranno distribuire applicazioni di grandi dimensioni senza preoccuparsi dei vincoli di storage. E dove gli americani avrebbero ancora più dati su di noi!! (beh cosa?)
E forse tra qualche anno guarderemo i nostri vecchi server dotati di dischi rigidi e sorrideremo, proprio come guardiamo oggi i vecchi modem 56k!
Fonte