Le stockage objet à la loupe
De nombreuses solutions de stockage objet existent. Initialement appelé CAS pour Content Access Storage ou Content Aware Storage, un certain Philippe Nicolas de la Silicon Valley nous dresse un historique complet en 2016, et nous présente cette carte retraçant l'histoire de l'object storage :
Il nous offre une rétrospective de l'implication des grandes firmes de la Tech, de la logique de ses évolutions en trois vagues, de son parcours de maturités sur 10 ans et de ses points forts, à savoir :
- le protocole HTTP a démontré sont efficacité en matière d'accès au stockage ;
- S3 est de facto devenu un standard ;
- depuis les dix dernières années, le besoin de stockage piloté applicativement est un réel besoin ;
- la fonctionnalité erasure coding est incontournable ;
- l'opensource est un atout indéniable pour une intégration rapide et facile d'un système de stockage à forte capacité ;
- ne pas oublier que le fichier reste le support de l'information bien que de nombreux acteurs cachent cette réalité alors qu'il a toujours été au centre de leurs préoccupations ;
- Microsoft (à l'exception de son offre Azure) et Veritas sont totalement absents.
Pour en savoir plus, lire : L'histoire du CAS et du Stockage Objet.
Faisons un tour d'horizon de six solutions opensources, certaines historiques et d'autres plus récentes. Elles sont toutes testées dans les labos Bosstek puis comparées en fonction des retours d'expériences respectifs dans une synthèse, sous forme d'un tableau en fin d'article.
Swift
Soutenu par la fondation OpenStack, écrit en Python sous licence Apache 2.0. Robuste et performant, la complexité de son déploiement est atténué par l'outil kolla-ansible qui supporte les conteneurs Linux.
Fait partie des composants de l'écosystème OpenStack. Muni d'un riche panel d'outils pour son exploitation (audit des disques et des noeuds de stockage), il comporte de nombreuses options de déploiement notamment grâce au soutien par de grands contributeurs opensource tels que Opendev, IBM RedHat, Nvidia, OVH et Mirantis.
Au coeur des services proposés par des plateformes de stockage-as-service majeures (dont RackSpace et Infomaniak). Repose sur l'algorithme de stockage consistent hashing (introduit initialement par Amazon DynamoDB) qui offre des possibilités multi-régions et une meilleure sécurité des données.
- Tips : constitue une solution de stockage orientée long-durée, optimisé pour de grands nombres de conteneurs mais de taille limitées ;
- Avantages : sécurité renforcée, fonctionne sur du matériel hétérogène de tous types, gestion par projet (multi-tenant, grande résilience grâce à la fonctionnalité multi-régions et multi-zones, boîte à outils pour le diagnostic très avancées ;
- Inconvénients : pas de Lifecycle Management (auto-expiration) par conteneurs, pas de gestion des classes de stockage, performances limitées, complexité de mise en oeuvre (monitoring compris) ;
- Version initiale : 2010 (opensource par RackSpace - initialement Rackspace's Cloud Files).
Ceph
Soutenu par la Foundation Ceph, écrit en C++ et Python sous licence LGPL version 2.1 ou 3.0. C'est un système de stockage distribué basé sur RADOS (Reliable Autonomic Distributed Object Store), extensible avec plusieurs services qui proposent un large choix de protocoles :
- Stockage Bloc via RDB ;
- Stockage Objet via RGW compatible S3, Swift et NFS ;
- FileSystem Ceph conforme POSIX ;
- Très bonne performances.
Son déploiement et son exploitation sont facilités grâce à une API d'orchestration utilisée par des outils tels que cephadm (avec conteneurisation) et Rook (avec Kubernetes).
Le plus souvent destiné aux centres de données, il est optimisé pour de gros volumes de données avec des recommandations materielles élevées. Il est pilotable par CLI et une interface web.
Première version stable : 2012.
OpenIO
Solution opensource en language python et C d'origine française (respectivement 60 et 40%) sous licence "GNU Public License". Très légère et facilement scalable, elle peut être déployée par ansible directement sur les serveurs (ou par conteneur communautaire pré-buildé pour ses anciennes versions, sur image de base Ubuntu 20.04). Rachetée par OVHCloud en 2020 qui en a effectué un fork sous le nom oio-sds. Retirée du marché, elle est aujourd'hui au coeur de son offre de service.
Son API compatible swift et S3, openio a été élu "meilleures performances" en 2019. Fonctionnalités diverses : s'appuie sur Zookeper pour la gestion de son architecture distribuée, supporte la réplication (nb_copy) avec sécurité par distance entre chunks, algorithme erasure coding, storage policy.
- Avantage : performance, légèreté, théoriquement utilisable avec k8s ;
- Inconvénient : sous-projets FS Architecture et Replicator Service en close source ;
- Tips : version conteneurisée idéale pour avoir un stockage objet "clés en main" immédiatement fonctionnel pour des petits besoins hors production en auto-hébergement ;
- Intégrations validées : Cloudberry Backup, RClone, Dovecot Obox, Nextcloud, Mattermost, Cyberduck ;
- Version initiale : 2015.
GarageHQ
Soutenu par l'association Deuxfleurs, écrit en Rust sous licence AGPL version 3.
C'est un magasin de données geo-distribué léger qui implémente le protocole S3 avec de la compression et déduplication des données. Il permet aussi l'hébergement de sites webs statiques.
Il utilise un type de données répliqué sans conflit (Conflict-Free Replicated Data Type, abrégé CRDT) adapté aux connexions internet de tous les jours (à fortes latences) pour la réplication multi-sites. Ici la recherche de la performance se fait par le minimaliste, il ne supporte donc pas de fonctionnalités comme l'erasure coding, compatibilité POSIX et garde un prérequis matériel bas.
Son utilisation est simple tout en restant robuste au pannes, il est pilotable par CLI et une API.
Première version stable : 2022.
Minio
Minio est une solution opensource haute-performance sous License GNU Affero General Public License v3, écrite en language Go, avec une version Enterprise pour des fonctionnalités supplémentaires.
- Tips : version kubernetes idéale pour avoir un stockage object clés en main immédiatement opérationnel ;
- Fonctionnalités : versionning, erasure coding, dashboard et console, client mc compatible S3 ;
- Intégration : Nextcloud, RClone, Cloud Native Postgresql ;
- Avantage : calculette design de performance https://min.io/pricing, pour tous les besoins prod/hors prod en auto-hébergement.
- Inconvénient : mise à l'échelle (scaling) pas toujours intuitif, généralement géré par un outil d'orchestration type Kubernetes, Licence commerciale pour une console d'administration et observabilité avancée ;
- Version initiale : 2016.
SeaweedFS
SeaweedFS est idéal pour le stockage d'objets de petites taille, pour des grands volumes d'accès concurrents. Écrit en Go, Apache License, Version 2.0.
Le projet SeaweedFS reprend de nombreux principes implémentés par le stockage élaboré par Facebook (Haystack, Warm BLOB Storage, Tectonic Filesystem) mais descend la charge de gestion des buckets et des métadonnées des objets du serveur central (master) vers les serveurs de volumes dédiés. Est utilisé par des acteurs de grandes envergures comme Mirantis ou Apple.
Ses principaux atouts résident dans l'utilisation du protocole RAFT pour gérer les clusters multi-master, ainsi qu'une optimisation du stockage qui repose sur la gestion distincte entre :
- le stockage 'local' (en anglais : hot), basé sur une réplication des objets ;
- le stockage distant (en anglais : warm), basé sur l'algorithme l'erasure-coding.
SeaweadFS propose une fonctionnalité 'Cloud Drive' encore limitée qui permet de fédérer localement un entrepôt de données S3 distant via un système de synchronisation bi-directionnelle ; et de construire un cache local pour ses données distantes via de nombreuses options de filtrage (répertoire, pattern, dates, age, etc).
- Tips : cache Internet intégré (CDN) peut servir des images redimensionnées à la volée ;
- Avantages : large couverture du protocole S3 (cycle de vie / auto-expiration, événements), outils de montage local natifs (type fuse), simplicité de mise en oeuvre, outils de benchmark intégré pour optimiser son architecture, mise en oeuvre et extensibilité simples à prendre en main, shell interactif, intégration aux outils de monitoring récents ;
- Inconvénients : maturité limitée notamment en termes de documentation, adoptions faibles, pas de containers docker prêts à l'usage permettant de reproduire / simuler un cluster ;
- Version initiale : 2015
Tableau comparatif des solutions :
Légende : * indique le plus facile, *** le plus complexe.
De nombreux acteurs historiques dans le domaine du stockage proposent aujourd'hui des solutions de stockage objet tel que NetApp, StorageGRID, HPE, Dell EMC ECS, Quantum ActiveScale, etc.
Dans le cloud, la sécurité des données n’est pas une option mais une nécessité, le stockage objet se révèle être la clé pour la sécurité des applications modernes. Au delà de cet aspect, les leviers restent autour de la donnée elle-même : sa localisation, son détenteur (propriétaire), sa sensibilité et sa performance d'accès.
Investir dans un cloud privé permet aux entreprises de bénéficier d’une sécurité renforcée, de performances optimisées et d’économies. Les solutions opensources sont idéales pour maîtriser durablement son offre de services, protéger les données sensibles et finalement garder le contrôle des infrastructures informatiques sur le long terme.
Nous avons fait notre choix, peut-être pouvez-vous maintenant faire le vôtre ?