Dovresti usare un'alternativa S3 per l'archiviazione di oggetti?

0
169
Shutterstock/Gorodenkoff

Simple Storage Service (S3) di Amazon fornisce un'interfaccia molto utile per l'archiviazione di oggetti in un cloud storage ridondante, dove non devi preoccuparti dell'hardware sottostante. Oltre ad essere un servizio offerto da Amazon, è anche un'API standard del settore e ci sono molti servizi compatibili con essa.

Cosa È compatibile con S3?

In molti casi, se passi a un altro provider cloud, dovrai rielaborare gran parte della tua applicazione. Tuttavia, se utilizzi S3 come backend di archiviazione degli oggetti, sarai in grado di passare senza problemi a molti altri servizi.

Questo perché S3 è uno standard API aperto. Simple Storage Service di AWS è solo un'implementazione di questo standard; è nativo e ovviamente avrà il miglior supporto, ma ci sono altri servizi che offriranno prestazioni e stabilità accettabili, spesso a un costo inferiore.

Passare a questi servizi è facile, devi semplicemente cambiare l'endpoint URL utilizzato dall'applicazione e di solito è bene fare qualche piccola modifica alla gestione delle chiavi. Dovrai migrare i tuoi dati con rclone, ma non è un processo difficile, solo lungo in alcuni casi.

Non è un segreto che AWS sia costoso. S3 non è diverso e, sebbene l'archiviazione dei file sia molto economica, in realtà l'accesso a tali file non lo è. In un tipico carico di lavoro pesante di lettura/scrittura che serve file live agli utenti, l'archiviazione dei file è generalmente economica; i costi più elevati sono in realtà gli addebiti per il trasferimento dei dati AWS e gli addebiti per le richieste S3:

Pubblicità

Vedendo una ripartizione di Cost Explorer come questa, potresti essere tentato di prendere in considerazione un servizio di terze parti che sarà più economico sui costi di trasferimento dati per il tuo carico di lavoro.

I due principali concorrenti di AWS S3 provengono da Google e Microsoft. Google ha il suo nome non creativo “Cloud Storage,” e Microsoft Azure dispone di Archiviazione BLOB di Azure. Lo spazio di archiviazione di Google è compatibile con S3 ed è anche relativamente facile da migrare. Azure, d'altra parte, non è compatibile con S3, sebbene ci siano strumenti come S3Proxy che possono patcharli insieme.

Tuttavia, tutti i servizi di archiviazione dei tre grandi fornitori di cloud ti addebiteranno commissioni elevate per dati. Sono progettati per i clienti aziendali e se sei una piccola impresa che cerca di ridurre al minimo i costi, dovresti cercare altrove. Esistono altri fornitori di cloud alternativi come Digital Ocean e Vultr che offrono modelli di prezzo più snelli con un servizio di qualità simile.

Oceano digitale

< /p>

Digital Ocean è un provider cloud progettato per essere semplice. Sebbene non offra tante funzionalità come i principali fornitori come AWS, di solito funziona bene grazie ai servizi che offre. Uno di questi servizi è lo storage di oggetti, con i bucket chiamati Spaces, ed è ciò che ti consigliamo se stai cercando di allontanarti da AWS.

Gli spazi sono piuttosto semplici. La tariffa di base è di $ 5 al mese e include 250 GB di spazio di archiviazione insieme a un intero TB di trasferimento dati in uscita. Questo è un affare follemente buono—lo stesso utilizzo costerebbe oltre $ 90 su AWS S3.

Lo storage di dati aggiuntivo è di $ 0,02 per GB, abbastanza standard rispetto a S3 (anche se superiore se prevedi di utilizzare un archivio più economico storage) e i dati aggiuntivi hanno un prezzo ragionevole di $ 0,01 per GB trasferito, ovvero il 90% in meno rispetto ai prezzi di AWS.

Pubblicità

Naturalmente, questo ha alcuni limiti e sfortunatamente ci sono molti altri aspetti negativi e vincoli legati a questo grande affare.

  • 750 richieste, per indirizzo IP, a tutti i tuoi spazi.< /li>
  • 150 operazioni combinate al secondo per qualsiasi spazio, escluse le richieste GET.
  • 240 operazioni totali comprese le richieste GET.
  • 5 richieste PUT o COPY ogni 5 minuti per qualsiasi singolo oggetto in uno spazio

Sebbene questi limiti di velocità non siano fantastici da avere, i limiti sono abbastanza generosi e probabilmente non li raggiungerai. Se stai per andare oltre, puoi minimizzare l'effetto di loro avendo più spazi. Se non sei sicuro, puoi abilitare i parametri del bucket in S3 per verificare l'utilizzo corrente.

RELAZIONATO: Come abilitare e visualizzare i parametri delle richieste per un AWS Bucket S3 in CloudWatch

Inoltre, gli spazi con oltre 3 milioni di oggetti o 1,5 milioni con il controllo delle versioni abilitato potrebbero richiedere “periodi di manutenzione intermittenti” per garantire prestazioni costanti. Tuttavia, personalmente ho un bucket con oltre 2 milioni di oggetti con versione che non sembra aver subito tempi di inattività significativi in ​​6 mesi, quindi questo potrebbe non essere un evento comune.

Uno dei principali svantaggi di Spaces rispetto a S3 è l'interfaccia. Spaces è semplice e se stai solo cercando di caricare il contenuto del tuo sito web o archiviare alcuni file di base, l'interfaccia web consentirà il caricamento, il download e la modifica della maggior parte delle impostazioni. Tuttavia, se stai memorizzando molti file o hai bisogno di una configurazione avanzata, francamente è piuttosto scadente e dovrai principalmente lavorarci sopra l'API S3.

Ad esempio, Spaces non dispone nemmeno di un editor Web per selezionare la configurazione del ciclo di vita, che gestisce l'archiviazione di vecchie versioni di oggetti utilizzati come backup in caso di cancellazione dell'utente. Ciò significa anche che non è possibile accedere o eliminare oggetti con versione senza elencare le versioni tramite l'API e accedervi direttamente tramite l'ID versione.

Inoltre non hanno molta documentazione. Per attivare il controllo delle versioni, ad esempio, abbiamo dovuto consultare la documentazione di S3 per utilizzare l'endpoint PutBucketVersioning per lo più ignorato, che fortunatamente è supportato su Spaces nonostante sia stato ignorato nei documenti di DO. Dovrai abilitarlo tramite questo endpoint:

PUT ?versioning <VersioningConfiguration xmlns=”http://s3.amazonaws.com/doc/2006-03-01/”> <Stato>Abilitato</Stato> </VersioningConfiguration>

E quindi abilita la scadenza della versione:

PUT ?lifecycle <LifecycleConfiguration xmlns=”http://s3.amazonaws.com/doc/2006-03-01/”> <Regola> <ID>Secchio</ID> <Prefisso>*</Prefisso> <Stato>Abilitato</Stato> <Scadenza versione non corrente> <GiorniNoncorrenti>90</GiorniNoncorrenti> </NoncurrentVersionExpiration> </Regola> </Configurazione del ciclo di vita> Pubblicità

Anche le chiavi API sono molto semplici. Non avrai un controllo granulare su singoli bucket, oggetti o qualsiasi altra cosa fornita con AWS IAM. Questo può essere un problema se prevedi di dare le chiavi a terze parti.

Nel complesso, l'esperienza Digital Ocean non è assolutamente lontana dall'efficacia dell'S3 di AWS. Ma, se ti piacciono i limiti e non ti dispiace usare l'API per determinate attività, puoi sicuramente farti risparmiare un sacco di soldi sui costi della larghezza di banda.

Self Host

Dal momento che S3 è uno standard aperto, è anche qualcosa che puoi ospitare da solo , che sarà preferibile per molte persone. Ci sono molti strumenti per farlo, ma uno dei migliori è MinIO, che gira su Kubernetes (K8s).

Essere su K8 significa che puoi eseguirlo su ogni cloud pubblico, incluso l'esecuzione tramite serverless Servizi K8 come AWS EKS. Ma in questo caso saresti comunque soggetto ai costi della larghezza di banda.

Dove MinIO brilla davvero è con server dedicati, soluzioni cloud ibride e l'esecuzione su data center on-premise. Se stai pagando per una connessione di rete dedicata a un server, non verrai saturato se saturerai quella connessione. Ciò può rendere l'archiviazione self-hosted molto economica se hai intenzione di fornire molti dati agli utenti finali.

Inoltre, l'esecuzione sul proprio hardware non è soggetta agli stessi limiti dei servizi come S3. Puoi ospitare MinIO su server velocissimi e ottenere prestazioni migliori con carichi di lavoro pesanti di lettura/scrittura (e non ti verrà addebitato alcun costo per le richieste). Naturalmente, ti verrà richiesto di pagare i costi dell'hardware per queste prestazioni.

Pubblicità

Dove non funziona è in ridondanza—perché S3 memorizza i tuoi dati in così tanti posti diversi, è 8217; è praticamente garantito per funzionare sempre e non perdere mai i tuoi dati, salvo una meteora gigante. MinIO, d'altra parte, può essere ospitato su un singolo server o tramite una distribuzione distribuita. Se stai ospitando su un singolo server, sarai fregato se la tua istanza non funziona. È l'opzione più economica, ma consigliamo vivamente più server in un cluster o almeno fare un qualche tipo di backup su S3.

MinIO è libero di ospitare sotto la licenza GNU AGPL, ma hai vinto& #8217;non ho alcun supporto. Le licenze aziendali partono da $ 1000 al mese e forniscono supporto 24 ore su 24, 7 giorni su 7 e un “Panic Button,” che avranno i loro ingegneri di recupero dati pronti ad aiutarti a risolvere gravi guasti del server.