Stockage d’objets vs Services de stockage en bloc

introduction

Le stockage de données flexible et évolutif est une exigence de base pour la plupart des applications et des services développés avec des techniques et des outils modernes. Qu'il s'agisse de stocker de grandes ou de petites quantités d'images, de vidéos ou de morceaux de texte, les développeurs d'applications ont besoin d'une solution pour le stockage et la récupération du contenu, des journaux, des sauvegardes, etc. générés par l'utilisateur.

Avec les déploiements, les conteneurs et l’infrastructure éphémère complexes d’aujourd’hui, il n’est plus possible de simplement sauvegarder des fichiers sur disque sur un seul serveur. Les fournisseurs de services cloud ont développé des services pour répondre aux besoins de stockage des déploiements d’applications modernes. Ils se rangent principalement dans deux catégories: le stockage d’objets et le stockage en blocs.

Examinons les deux et discutons des avantages, des inconvénients et des cas d’utilisation généraux pour chacun.

Qu'est-ce que le stockage en bloc?

Les services de stockage en bloc sont relativement simples et familiers. Ils fournissent un périphérique de stockage en bloc traditionnel - comme un disque dur - sur le réseau. Les fournisseurs de cloud ont souvent des produits capables de provisionner un périphérique de stockage en bloc de toute taille et de le connecter à votre machine virtuelle.

À partir de là, vous le traiteriez comme un disque normal. Vous pouvez le formater avec un système de fichiers et y stocker des fichiers, combiner plusieurs périphériques dans une grappe RAID ou configurer une base de données pour écrire directement sur le périphérique en mode bloc, en évitant entièrement la surcharge du système de fichiers. De plus, les périphériques de stockage en bloc connectés au réseau présentent souvent des avantages uniques par rapport aux disques durs normaux:

  • Vous pouvez facilement prendre des instantanés en direct de tout le périphérique à des fins de sauvegarde.

  • Les périphériques de stockage en mode bloc peuvent être redimensionnés pour répondre aux besoins croissants

  • Vous pouvez facilement détacher et déplacer des périphériques de stockage en mode bloc entre des ordinateurs.

C'est une configuration très flexible qui peut être utile pour la plupart des applications. Résumons quelques avantages et inconvénients de la technologie.

Certains avantages du stockage en bloc sont:

  • Le stockage en bloc est un paradigme familier. Les utilisateurs et les logiciels comprennent et prennent en charge les fichiers et les systèmes de fichiers presque universellement.

  • Les dispositifs de blocage sont bien pris en charge. Chaque langage de programmation peut facilement lire et écrire des fichiers

  • Les autorisations et les contrôles d'accès au système de fichiers sont familiers et bien compris

  • Les périphériques de stockage en mode bloc fournissent des E / S à faible temps de latence, ils conviennent donc aux bases de données.

Les inconvénients du stockage en bloc sont:

  • Le stockage est lié à un serveur à la fois

  • Les blocs et les systèmes de fichiers ont des métadonnées limitées sur les blobs d’informations qu’ils stockent (date de création, propriétaire, taille). Toute information supplémentaire sur ce que vous stockez doit être traitée au niveau de l'application et de la base de données, ce qui complique la tâche du développeur.

  • Vous devez payer pour tout l’espace de stockage en bloc que vous avez alloué, même si vous ne l’utilisez pas.

  • Vous ne pouvez accéder au stockage en mode bloc que via un serveur en cours d'exécution

  • Le stockage en mode bloc nécessite davantage de travail pratique et de configuration par rapport au stockage objet (choix du système de fichiers, autorisations, gestion des versions, sauvegardes, etc.)

En raison de ses caractéristiques d'E / S rapides, les services de stockage en mode bloc conviennent parfaitement au stockage de données dans des bases de données traditionnelles. En outre, de nombreuses applications héritées nécessitant un stockage de système de fichiers normal devront utiliser un périphérique de stockage en mode bloc.

Si votre fournisseur de cloud ne propose pas de service de stockage par blocs, vous pouvez exécuter le vôtre en utilisantOpenStack Cinder,Ceph ou le service iSCSI intégré disponible sur de nombreux périphériques NAS.

Qu'est-ce que le stockage d'objets?

Dans le monde moderne de l'informatique en nuage, le stockage objet est le stockage et la récupération de blobs non structurés de données et de métadonnées à l'aide d'une API HTTP. Au lieu de diviser les fichiers en blocs pour les stocker sur un disque à l'aide d'un système de fichiers, nous traitons des objets entiers stockés sur le réseau. Ces objets peuvent être un fichier image, des journaux, des fichiers HTML ou tout blob d'octets autonome. Ce sont desunstructuredcar il n'y a pas de schéma ou de format spécifique à suivre.

Le stockage d'objets a pris son essor car cela simplifiait grandement l'expérience des développeurs. Comme l’API se compose de requêtes HTTP standard, les bibliothèques ont été rapidement développées pour la plupart des langages de programmation. L'enregistrement d'un blob de données est devenu aussi simple qu'une demande HTTP PUT au magasin d'objets. La récupération du fichier et des métadonnées est une requête GET normale. En outre, la plupart des services de stockage d'objets peuvent également servir les fichiers publiquement à vos utilisateurs, évitant ainsi la nécessité de maintenir un serveur Web pour héberger des actifs statiques.

De plus, les services de stockage d'objets facturent uniquement l'espace de stockage que vous utilisez (certains facturent également des frais par requête HTTP et pour la bande passante de transfert). Ceci est une aubaine pour les petits développeurs, qui peuvent obtenir un stockage et un hébergement d'actifs de classe mondiale à des coûts évocateurs.

Le stockage d’objets n’est pas la solution adaptée à chaque situation. Regardons un résumé des avantages et des inconvénients.

Certains avantages du stockage d'objets sont:

  • Une simple API HTTP, avec des clients disponibles pour tous les principaux systèmes d'exploitation et langages de programmation

  • Une structure de coûts qui signifie que vous ne payez que ce que vous utilisez

  • La diffusion publique intégrée des actifs statiques signifie un serveur de moins pour que vous puissiez vous exécuter vous-même.

  • Certains magasins d'objets offrent une intégration CDN intégrée, qui met en cache vos ressources dans le monde entier pour accélérer les téléchargements et le chargement de pages pour vos utilisateurs.

  • La gestion des versions en option signifie que vous pouvez récupérer les anciennes versions des objets pour récupérer des écrasements accidentels de données.

  • Les services de stockage d'objets peuvent facilement passer de besoins modestes à des cas d'utilisation très intenses sans que le développeur ait à lancer plus de ressources ou à effectuer une nouvelle recherche pour gérer la charge.

  • L’utilisation d’un service de stockage d’objets signifie que vous n’avez pas besoin de maintenir des disques durs et des matrices RAID, car cela est géré par le fournisseur de services.

  • Le fait de pouvoir stocker des morceaux de métadonnées en même temps que votre blob de données peut simplifier davantage votre architecture d'application.

Certains inconvénients du stockage d'objets sont:

  • Vous ne pouvez pas utiliser les services de stockage d'objets pour sauvegarder une base de données traditionnelle, en raison de la latence élevée de ces services.

  • Le stockage d’objets ne vous permet pas de modifier un élément de blob de données, vous devez lire et écrire un objet entier à la fois. Cela a des conséquences sur les performances. Par exemple, sur un système de fichiers, vous pouvez facilement ajouter une seule ligne à la fin d'un fichier journal. Sur un système de stockage d’objets, vous devez extraire l’objet, ajouter la nouvelle ligne et réécrire l’intégralité de l’objet. Cela rend le stockage d'objet moins idéal pour les données qui changent très fréquemment

  • Les systèmes d’exploitation ne peuvent pas facilement monter un magasin d’objets comme un disque normal. Certains clients et adaptateurs peuvent vous aider, mais en général, utiliser et parcourir un magasin d’objets n’est pas aussi simple que de parcourir des répertoires dans un navigateur de fichiers.

En raison de ces propriétés, le stockage d'objets est utile pour héberger des actifs statiques, notamment pour enregistrer le contenu généré par l'utilisateur, tel que des images et des vidéos, pour stocker les fichiers de sauvegarde et pour stocker les journaux.

Il existe certaines solutions de stockage d'objets auto-hébergées, bien que vous abandonniez certains des avantages d'une solution hébergée (par exemple, ne plus avoir à vous soucier des disques durs et des problèmes de dimensionnement). Vous pouvez essayerMinio, un serveur de stockage d'objets populaire écrit en langage Go, ouCeph ouOpenStack Swift.

Conclusion

Le choix d'une solution de stockage peut être une décision complexe pour les développeurs. Dans cet article, nous avons présenté les avantages et les inconvénients des services de stockage de blocs et d'objets. Il est probable que toute application suffisamment complexe aura besoin des deux types de stockage pour couvrir tous ses besoins.