
Team di archiviazione oggetti S3 ha tradotto un articolo sui criteri importanti da considerare nella scelta di un'archiviazione oggetti. Di seguito il testo dal punto di vista dell'autore.
Quando si parla di archiviazione oggetti, di solito le persone pensano solo a una caratteristica: il prezzo per TB/GB. Certo, questa metrica è importante, ma la rende un approccio unilaterale e associa l'archiviazione oggetti a uno strumento per conservare archivi. Inoltre, questo approccio riduce l'importanza dell'archiviazione oggetti per il stack tecnologico dell'azienda.
Quando si sceglie un'archiviazione oggetti, è importante considerare cinque caratteristiche:
- prestazioni;
- scalabilità;
- compatibilità con S3;
- risposta ai guasti;
- integrità.
Queste cinque caratteristiche sono nuove metriche dell'archiviazione oggetti, al pari del costo. Esaminiamole tutte.
Prestazioni
Le tradizionali archiviazioni oggetti non si distinguono per le prestazioni. I fornitori di servizi hanno costantemente sacrificato questo aspetto nella corsa ai prezzi più bassi. Tuttavia, con le moderne archiviazioni oggetti, la situazione è cambiata.
La velocità di vari storage si avvicina a Hadoop o la supera. Le moderne esigenze di velocità di lettura e scrittura vanno da 10 GB/s per gli hard disk a 35 GB/s per gli NVMe.
Questa larghezza di banda è sufficiente per Spark, Presto, Tensorflow, Teradata, Vertica, Splunk e altri moderni framework di calcolo nel stack di analisi. Il fatto che i database MPP siano configurati per storage a oggetti indica che viene sempre più utilizzato come storage principale.
Se il tuo sistema di storage non offre la velocità necessaria, non puoi utilizzare i dati e trarne valore. Anche se estrai dati dallo storage a oggetti in una struttura di elaborazione in memoria, è comunque necessaria larghezza di banda per trasferire i dati dentro e fuori dalla memoria. Gli storage a oggetti obsoleti non ne hanno a sufficienza.
È un punto chiave: il nuovo indicatore di prestazione è la larghezza di banda, non la latenza. È necessaria per i dati scalabili ed è la norma nell'infrastruttura dati moderna.
Sebbene i test delle prestazioni siano un buon modo per determinare le capacità, non è possibile misurare con precisione le prestazioni fino all'esecuzione dell'applicazione in un ambiente reale. Solo dopo, si può identificare esattamente dove si trova il collo di bottiglia: nel software, nei dischi, nella rete o a livello di calcolo.
Scalabilità
La scalabilità si riferisce alla quantità di petabyte che possono essere inseriti in uno spazio dei nomi. I fornitori parlano di scalabilità semplice, ma omettono di menzionare che, man mano che si scalano, i massicci sistemi monolitici diventano fragili, complessi, instabili e costosi.
Il nuovo indicatore di scalabilità è il numero di spazi dei nomi o clienti che è possibile servire. Questa metrica è presa direttamente dai hyperscaler, dove i blocchi costitutivi dello storage sono piccoli ma possono scalare fino a miliardi di unità. In generale, questa è una metrica cloud.
Quando i blocchi standard hanno dimensioni ridotte, è più facile ottimizzarli, garantendo così sicurezza, controllo degli accessi, gestione delle politiche, del ciclo di vita e degli aggiornamenti senza interrompere il funzionamento. E infine, garantire le prestazioni. La dimensione del blocco costruttivo è una funzione della controllabilità dell'area di guasto, ed è esattamente così che vengono costruiti i sistemi altamente resilienti.
La multiclientela presenta molte caratteristiche. Sebbene il parametro parli di come le organizzazioni forniscono accesso a dati e applicazioni, si riferisce anche alle stesse applicazioni e alla logica della loro isolamento reciproco.
Caratteristiche dell'approccio moderno alla multiclientela:
- In breve tempo, il numero di clienti può crescere da alcune centinaia a diversi milioni.
- I clienti sono completamente isolati l'uno dall'altro. Questo consente loro di eseguire diverse versioni della stessa applicazione e di memorizzare oggetti con varie configurazioni, autorizzazioni, funzionalità, livelli di sicurezza e manutenzione. Questo è necessario quando si scalano nuovi server, aggiornamenti e regioni geografiche.
- Lo storage è elastico e scalabile, le risorse vengono fornite su richiesta.
- Ogni operazione è gestita tramite API e automatizzata senza intervento umano.
- Il software può essere eseguito in container e utilizzare sistemi di orchestrazione standard come Kubernetes.
Compatibilità con S3
L'API Amazon S3 è di fatto lo standard per gli storage oggettivi. Ogni fornitore di software per storage oggettivo dichiara di essere compatibile con esso. La compatibilità con S3 è binaria: o è implementata completamente o non lo è.
Nella pratica, è possibile che si verifichino centinaia o migliaia di scenari ai confini, in cui l'uso dello storage oggettivo non funziona come previsto. Questo accade soprattutto con i fornitori di software e servizi proprietari. I principali casi d'uso sono l'archiviazione diretta o il backup, quindi ci sono pochi motivi per chiamare l'API e le modalità di utilizzo sono omogenee.
Il software open source presenta vantaggi significativi. Copre la maggior parte degli scenari ai confini, tenendo conto delle dimensioni e della varietà delle applicazioni, dei sistemi operativi e delle architetture hardware.
Tutto questo è importante per gli sviluppatori di applicazioni, quindi è essenziale testare il funzionamento dell'applicazione con i fornitori di archiviazione. Il codice sorgente aperto semplifica il processo: è più facile capire quale piattaforma sia adatta alla tua applicazione. Il fornitore può essere utilizzato come un unico punto di accesso agli archivi, il che significa che soddisferà le tue esigenze.
Il codice sorgente aperto significa che le applicazioni non sono vincolate al fornitore e sono più trasparenti. Ciò garantisce un lungo ciclo di vita per l'applicazione.
E qualche altra osservazione riguardo al codice sorgente aperto e S3.
Se stai lanciando un'applicazione per la gestione di grandi quantità di dati, S3 SELECT migliora significativamente le prestazioni e l'efficienza. Questo avviene grazie all'utilizzo di SQL per estrarre solo quegli oggetti di cui hai bisogno dall'archivio.
Un aspetto chiave è il supporto delle notifiche dei bucket. Le notifiche dei bucket semplificano l'elaborazione serverless, un elemento fondamentale di qualsiasi architettura a microservizi fornita come servizio. Poiché lo storage degli oggetti è essenzialmente uno storage cloud, questa funzionalità diventa cruciale quando l'archiviazione degli oggetti viene utilizzata da applicazioni cloud.
Infine, l'implementazione di S3 deve supportare le interfacce di crittografia lato server di Amazon S3: SSE-C, SSE-S3, SSE-KMS. È ancora meglio se S3 supporta misure di protezione contro l'accesso non autorizzato che siano realmente sicure.
Reazione ai guasti
Un indicatore che probabilmente viene spesso trascurato è come il sistema gestisce i guasti. I guasti possono avvenire per vari motivi e lo storage degli oggetti deve poterli gestire tutti.
Ad esempio, c'è un singolo punto di guasto, la cui metrica è zero.
Sfortunatamente, molti sistemi di archiviazione degli oggetti utilizzano nodi specializzati che devono essere attivati per il corretto funzionamento del cluster. Tra questi ci sono i nodi di nome o i server dei metadati, il che crea un singolo punto di guasto.
Anche dove sono previsti più punti di guasto, ciò che ha la priorità è la capacità di resistere a guasti catastrofici. I dischi possono guastarsi, i server possono fallire. Il punto chiave è sviluppare software progettato per gestire i guasti come uno stato normale. Quando si verifica un guasto in un disco o in un nodo, tale software continuerà a funzionare senza interruzioni.
La protezione integrata contro la cancellazione e la degradazione dei dati garantisce: puoi perdere tanti dischi o nodi quanti blocchi di parità hai — generalmente è la metà dei dischi. Solo allora il software non sarà in grado di recuperare i dati.
Il fallimento viene raramente testato sotto carico, ma una tale verifica è indispensabile. La simulazione del guasto sotto carico mostrerà i costi complessivi sostenuti dopo il guasto.
Coerenza
Un indicatore di coerenza del 100% è anche indicato come coerenza rigorosa. La coerenza è un componente chiave di qualsiasi sistema di archiviazione, ma la coerenza rigorosa è piuttosto rara. Ad esempio, Amazon S3 ListObject non è rigorosamente coerente, ma è coerente solo alla fine.
Cosa si intende per coerenza rigorosa? Per tutte le operazioni dopo un'operazione PUT confermata, deve essere soddisfatta la seguente condizione:
- Il valore aggiornato è visibile leggendo da qualsiasi nodo.
- L'aggiornamento è protetto da failover del nodo.
Questo significa: se stacchi la spina a metà scrittura, non si perde nulla. Il sistema non restituisce mai dati danneggiati o obsoleti. Questo è un requisito elevato che è fondamentale per molti scenari: dalle applicazioni transazionali al backup e ripristino.
Conclusione
Queste sono le nuove metriche per lo storage degli oggetti che riflettono i modelli di utilizzo nelle organizzazioni moderne, dove prestazioni, coerenza, scalabilità, domini di failure e compatibilità con S3 sono i mattoni fondamentali per le applicazioni cloud e l'analisi dei big data. Consiglio di utilizzare questo elenco in aggiunta al prezzo nella creazione di stack dati moderni.
Sullo storage degli oggetti Mail.ru Cloud Solutions: .
Cosa altro leggere:
- .
- .
- .
Fonte: habr.com
