Servizi di Object Storage vs. servizi di Block Storage

  • Home /
  • Server Side /
  • Servizi di Object Storage vs. servizi di Block Storage

Lo storage di dati flessibile e scalabile è un requisito di base per la maggior parte delle applicazioni e dei servizi sviluppati con tecniche e strumenti moderni.

Image Description

Introduzione

Lo storage di dati flessibile e scalabile è un requisito di base per la maggior parte delle applicazioni e dei servizi sviluppati con tecniche e strumenti moderni. Che si tratti di memorizzare grandi o piccole quantità di immagini, video o blocchi di testo, gli sviluppatori di applicazioni necessitano di una soluzione per l'archiviazione e il recupero di contenuti, registri, backup e così via generati dagli utenti.

Con le implementazioni complesse, i container e l'infrastruttura effimera di oggi, i tempi di salvare semplicemente i file sul disco su un singolo server sono finiti. I fornitori di servizi cloud hanno sviluppato servizi per soddisfare le esigenze di archiviazione delle moderne distribuzioni di applicazioni e si adattano principalmente a due categorie: archiviazione di oggetti e archiviazione a blocchi.

Diamo un'occhiata a entrambi e discutiamo i vantaggi, gli svantaggi e i casi d'uso generali per ciascuno.

Che cos'è il Block Storage

I servizi di archiviazione a blocchi sono relativamente semplici e familiari. Forniscono un tradizionale dispositivo di archiviazione a blocchi, come un disco rigido, sulla rete. I fornitori di servizi cloud spesso dispongono di prodotti in grado di fornire un dispositivo di archiviazione a blocchi di qualsiasi dimensione e di collegarlo alla macchina virtuale.

  • Da lì, lo tratteresti come un normale disco. È possibile formattarlo con un filesystem e archiviarvi i file, combinare più dispositivi in un array RAID o configurare un database per scrivere direttamente sul dispositivo a blocchi, evitando completamente il sovraccarico del filesystem. Inoltre, i dispositivi di archiviazione a blocchi collegati alla rete spesso presentano alcuni vantaggi unici rispetto ai normali dischi rigidi:

  • È possibile scattare facilmente istantanee live dell'intero dispositivo a scopo di backup
  • I dispositivi di archiviazione a blocchi possono essere overdimensionati per soddisfare esigenze crescenti
  • È possibile staccare e spostare facilmente i dispositivi di memorizzazione a blocchi tra le macchine

Questa è una configurazione molto flessibile che può essere utile per quasi tutti i tipi di applicazioni. Riassumiamo alcuni vantaggi e svantaggi della tecnologia.

Alcuni vantaggi dell'archiviazione a blocchi sono:

  • Lo storage a blocchi è un paradigma familiare. Persone e software comprendono e supportano file e filesystem quasi universalmente
  • I dispositivi a blocchi sono ben supportati. Ogni linguaggio di programmazione può facilmente leggere e scrivere file
  • Le autorizzazioni del file system e i controlli di accesso sono familiari e ben compresi
  • I dispositivi di archiviazione a blocchi forniscono una bassa latenza di I / O, quindi sono adatti all'uso da parte dei database.

Gli svantaggi dell'archiviazione di blocchi sono:

  • Lo spazio di archiviazione è legato a un server alla volta
  • Blocchi e filesystem hanno metadati limitati sui blob delle informazioni che stanno memorizzando (data di creazione, proprietario, dimensione). Eventuali informazioni aggiuntive su ciò che si sta archiviando dovranno essere gestite a livello di applicazione e di database, che è una complessità aggiuntiva per uno sviluppatore di cui preoccuparsi
  • Devi pagare tutto lo spazio di archiviazione a blocchi che hai allocato, anche se non lo stai utilizzando
  • È possibile accedere alla memorizzazione dei blocchi solo attraverso un server in esecuzione
  • Lo storage block ha bisogno di più lavoro pratico e setup vs storage degli oggetti (scelte del filesystem, permessi, versioning, backup, ecc.)
  • A causa delle sue caratteristiche IO veloci, i servizi di archiviazione a blocchi sono adatti per l'archiviazione di dati nei database tradizionali. Inoltre, molte applicazioni legacy che richiedono una normale archiviazione del filesystem dovranno utilizzare un dispositivo di archiviazione a blocchi.

Se il proprio provider cloud non offre un servizio di archiviazione a blocchi, è possibile eseguire il proprio utilizzando OpenStack Cinder, Ceph o il servizio iSCSI integrato disponibile su molti dispositivi NAS.

Cos'è l' object storage

Nel mondo moderno del cloud computing, l'archiviazione di oggetti è l'archiviazione e il recupero di blob non strutturati di dati e metadati mediante un'API HTTP. Invece di spezzare i file in blocchi per archiviarli su disco usando un filesystem, ci occupiamo di interi oggetti memorizzati sulla rete. Questi oggetti potrebbero essere un file immagine, registri, file HTML o qualsiasi blob di byte autonomo. Non sono strutturati perché non c'è uno schema o un formato specifico che devono seguire.

L'archiviazione degli oggetti è decollata perché ha semplificato notevolmente l'esperienza degli sviluppatori. Poiché l'API è costituita da richieste HTTP standard, le librerie sono state rapidamente sviluppate per la maggior parte dei linguaggi di programmazione. Salvare un blob di dati è diventato facile come una richiesta PUT HTTP all'archivio oggetti. Il recupero del file e dei metadati è una normale richiesta GET. Inoltre, la maggior parte dei servizi di archiviazione degli oggetti può anche servire i file pubblicamente agli utenti, eliminando la necessità di mantenere un server Web per ospitare asset statici.

Oltre a ciò, i servizi di archiviazione degli oggetti si caricano solo per lo spazio di archiviazione che si utilizza (alcuni anche a carico per richiesta HTTP e per larghezza di banda di trasferimento). Questo è un vantaggio per i piccoli sviluppatori, che possono ottenere uno storage di classe mondiale e l'hosting di risorse a costi scalabili con l'uso.

Tuttavia, l'archiviazione degli oggetti non è la soluzione giusta per ogni situazione. Diamo un'occhiata a un riepilogo dei vantaggi e degli svantaggi.

Alcuni vantaggi della memorizzazione degli oggetti sono:

  • Una semplice API HTTP, con client disponibili per tutti i principali sistemi operativi e linguaggi di programmazione
  • Una struttura di costo che significa che paghi solo ciò che usi
  • Il servizio pubblico incorporato di risorse statiche implica un server in meno per te da eseguire
  • Alcuni negozi di oggetti offrono l'integrazione CDN integrata, che memorizza in cache le risorse di tutto il mondo per rendere i download e il caricamento delle pagine più veloci per gli utenti
  • Il versioning opzionale significa che è possibile recuperare vecchie versioni di oggetti per il ripristino da sovrascritture accidentali di dati
  • I servizi di archiviazione degli oggetti possono facilmente scalare da esigenze modeste a casi d'uso veramente intensi senza che lo sviluppatore debba avviare più risorse o rearchitect per gestire il carico
  • L'utilizzo di un servizio di archiviazione oggetti significa che non è necessario mantenere i dischi rigidi e gli array RAID, in quanto gestiti dal fornitore di servizi
  • La possibilità di archiviare blocchi di metadati insieme al blob di dati può semplificare ulteriormente l'architettura dell'applicazione

Alcuni svantaggi dell'archiviazione di oggetti sono:

  • Non è possibile utilizzare i servizi di archiviazione oggetti per il backup di un database tradizionale, a causa dell'elevata latenza di tali servizi
  • L'archiviazione degli oggetti non consente di modificare solo un frammento di un blob di dati, è necessario leggere e scrivere un intero oggetto contemporaneamente. Questo ha alcune implicazioni sulle prestazioni. Ad esempio, su un file system, è possibile aggiungere facilmente una singola riga alla fine di un file di registro. Su un sistema di archiviazione di oggetti, è necessario recuperare l'oggetto, aggiungere la nuova riga e scrivere di nuovo l'intero oggetto. Ciò rende l'archiviazione degli oggetti meno ideale per i dati che cambiano molto frequentemente
  • I sistemi operativi non possono montare facilmente un archivio oggetti come un normale disco. Ci sono alcuni client e adattatori per aiutare con questo, ma in generale, l'uso e la navigazione in un archivio di oggetti non è così semplice come sfogliare le directory in un browser di file
  • A causa di queste proprietà, l'archiviazione oggetti è utile per l'hosting di risorse statiche, ad esempio il salvataggio di contenuti generati dall'utente come immagini e filmati, l'archiviazione di file di backup e la memorizzazione di registri.

Esistono alcune soluzioni di archiviazione degli oggetti auto-ospitate, anche se si rinunciano ad alcuni dei vantaggi di una soluzione ospitata (come non doversi preoccupare dei dischi rigidi e dei problemi di ridimensionamento). Si potrebbe provare Minio, un popolare server di archiviazione oggetti scritto in lingua Go o Ceph o OpenStack Swift.

Conclusione

La scelta di una soluzione di archiviazione può essere una decisione complessa per gli sviluppatori. In questo articolo abbiamo discusso i vantaggi e gli svantaggi di entrambi i servizi di archiviazione di oggetti e blocchi. È probabile che qualsiasi applicazione sufficientemente complessa abbia bisogno di entrambi i tipi di storage per coprire tutte le sue esigenze.


Server Side

  • Dependency injections in PHP

    Dependency injections (DI) è un design pattern della Programmazione orientata agli oggetti il cui scopo è quello di semplificare lo sviluppo e migliorare la testabilità di software di grandi dimensioni.

    Leggi
  • Il garante privacy sta sviluppando un crawler per scandagliare il web alla ricerca di siti non in regola con il GDPR

    Il garante privacy sta sviluppando un crawler per scandagliare il web alla ricerca di siti non in regola con il GDPR

    Leggi
  • Configurazione iniziale del server con Ubuntu 16.04

    Quando crei per la prima volta un nuovo server Ubuntu 16.04, ci sono alcuni passaggi di configurazione da eseguire in anticipo come parte della configurazione di base. Ciò aumenterà la sicurezza e l'usabilità del server e fornirà una solida base per le azioni successive.

    Leggi
  • Come installare WordPress con LAMP su Ubuntu 16.04

    WordPress è il CMS più popolare su Internet. Ti consente di impostare facilmente blog e siti web flessibili su un backend MySQL con elaborazione PHP. WordPress ha visto un'adozione incredibile ed è un'ottima scelta per far funzionare rapidamente un sito web. Dopo l'installazione, è possibile eseguire quasi tutta l'amministrazione tramite il front-end Web.

    Leggi
  • Come proteggere WordPress dagli attacchi XML-RPC

    WordPress è una piattaforma CMS (content management system) popolare e potente. La sua popolarità può portare ad un' attenzione indesiderata sotto forma di traffico malevolo appositamente mirato a un sito WordPress.

    Leggi
  • Servizi di Object Storage vs. servizi di Block Storage

    Lo storage di dati flessibile e scalabile è un requisito di base per la maggior parte delle applicazioni e dei servizi sviluppati con tecniche e strumenti moderni.

    Leggi
  • Come fare il backup di un sito wordpress sul cloud di Digital Ocean

    Il servizio Spaces di DigitalOcean può fornire una soluzione di archiviazione di oggetti per i dati dei siti di WordPress

    Leggi
  • Come installare lo stack Apache, MySQL, PHP (LAMP) su Ubuntu 16.04

    In questa guida, verrà installato uno stack LAMP su una macchina Ubuntu 16.04. Ubuntu soddisferà il nostro primo requisito: un sistema operativo Linux.

    Leggi
  • Installare il certificato Let's Encrypt per Apache su Ubuntu 16.04

    Questo tutorial vi spiegherà come configurare un certificato TLS / SSL da Let's Encrypt su un server Ubuntu 16.04 che esegue Apache come server web.

    Leggi

Logo

Sviluppo progetti web dall'analisi alla produzione

Interventi di implementazione su software esistenti.

Contatti

4, av du Ray, Nice
France, FR
Email: massimo.ivaldi@codegarage.it