La technologie « object storage » est une technologie de stockage de données très répandue, en particulier dans le monde de l’analyse de données. Par conséquent, beaucoup d’entreprises cloud proposent leurs solutions d’objects storage, notamment les fournisseurs principaux (AWS, Microsoft et Google), mais aussi des acteurs niches ou régionaux (DigitalOcean ou OVH).
Parmi toutes ces solutions, la plus répandue et la plus emblématique est S3, proposée par AWS. Cette solution est si répandue qu’elle s’impose petit à petit comme un standard ; c’est ce que nous allons voir dans cet article.
Qu’est-ce que S3 ?
Rapide retour dans le passé : nous sommes en 2006, le web est encore un « truc de geek », l’iPhone n’existe pas et l’action d’Amazon (maison mère d’AWS) est cotée à un millième de sa valeur actuelle au NASDAQ.
C’est cette année-là qu’AWS lance son premier service aux États-Unis, qui n’est autre que S3 (comme dans Simple Storage Service).
Il s’agit alors de la première offre d’object storage destiné au public. Depuis lors, ce service est leader sur son segment.
S3 en quelques chiffres qui donnent le tournis :
- 100 000 000 000 000 d’objets stockés (estimation du 14 mars 2021) ;
- jusqu’à plusieurs dizaines de millions de requêtes par seconde.
Amazon S3 a clairement pris le devant sur la concurrence, si bien qu’aujourd’hui l’interface s’impose petit à petit comme un standard. Par « interface », il faut comprendre le schéma d’API, c’est-à-dire l’ensemble des méthodes disponibles ainsi que les paramètres associés permettant d’interagir avec un espace de stockage S3 (lire un object, le supprimer, en ajouter de nouveaux…).
Par conséquent, il est possible de trouver plusieurs solutions d’object storage estampillées « S3 compatible » sans pour autant être vendues par AWS. C’est le cas par exemple de DigitalOcean. Et pour les fournisseurs de cloud possédant leurs propres technologies, une interopérabilité avec S3 est souvent proposée, comme c’est le cas chez Google.
Cette vaste adoption de l’interface S3 présente un avantage majeur pour les développeurs : une application développée pour être compatible avec S3 est en réalité compatible avec plusieurs solutions d’object storage, du moment que ces dernières sont « S3 compatible ».
Il devient alors aisé de migrer vos applications et de changer de fournisseur sans devoir apporter de changements significatifs à votre code. Dans la suite de cet article, découvrons plus en détail l’interface Amazon S3.
Comment utiliser l’interface S3 ?
Disposer d’un espace de stockage compatible
Avant de pouvoir utiliser cette interface, il est évident que vous avez besoin d’un espace de stockage qui peut fonctionner avec S3. Vous pouvez soit vous tourner vers un service cloud (notamment chez l’un des fournisseurs susmentionnés), soit déployer votre propre serveur d’objects storage en local ou sur un serveur auquel vous avez accès.
Pour cette deuxième option, il existe notamment MinIO. MinIO est un logiciel d’object storage open-source (licence GNU AGPL v3) qui peut être exécuté sur l’infrastructure informatique de votre choix. En particulier, il est possible de le lancer directement sur votre ordinateur via Docker (avec cette image), c’est donc une option idéale pour pouvoir tester l’object storage et S3 sans débourser un euro.
Comprendre la gestion de vos objets par S3
Il y a plusieurs concepts clés à comprendre pour pouvoir utiliser une solution d’object storage comme S3 :
- Bucket : emplacement permettant de stocker les objets, à l’image d’un entrepôt. La taille d’un bucket n’a pas de limite et s’ajuste au besoin des utilisateurs. Notez qu’un bucket est associé à un data center et donc à une certaine zone géographique (cela peut avoir son importance pour des questions de bande passante et de réactivité).
- Object : objet qui sera stocké dans un bucket, à l’image d’une caisse dans un entrepôt. Cet objet est composé de données (vidéos, images, des fichiers pdf…) ainsi que de métadonnées (la date d’ajout de cet objet dans le bucket, par exemple).
- Clé : chaque objet est identifié par une clé unique dans un bucket. C’est cette clé qui permet d’accéder à l’object. De même, tous les buckets possèdent un nom permettant de les identifier.
Comme vous pouvez le constater, les concepts sont simples et faciles à saisir pour les utilisateurs. C’est d’ailleurs l’une des raisons expliquant la popularité de l’object storage.
Chaque fournisseur de service peut aussi proposer des fonctionnalités supplémentaires, telles que du « versioning » ou la gestion d’autorisations en lecture ou en écriture.
Utiliser la librairie qui correspond à vos besoins
Il est possible d’interagir avec un espace d’object storage via le protocole HTTP et l’API REST S3 dédiée. Cependant, S3 est si répandue qu’il existe des utilitaires bien plus pratiques d’utilisation, notamment des librairies externes dans de nombreux langages.
Vous pouvez par exemple utiliser les librairies développées par AWS pour divers langages (Boto3 pour Python, pour Java). Elles sont compatibles avec S3 et plus généralement avec tous les services AWS.
S3 est une solution de stockage simple à comprendre et rapide à maîtriser. Après seulement quelques heures de recherches et d’expérimentations, vous vous rendrez compte à quel point cet outil est pratique pour gérer dans le cloud des fichiers de tout type et de toute taille. C’est la solution idéale par exemple pour disposer d’un espace de stockage flexible et facile d’utilisation connecté à une API que vous souhaitez développer.