Minio cible les développeurs avec son stockage objet compatible S3
Cofondé par le créateur et CTO de Gluster, Minio a développé un stockage objet open source compatible S3 et déployable sous forme de conteneur Docker. La technologie est simple, gratuite et séduisante et elle connait un succès grandissant.
Cofondé par Anand Babu Periasamy, l’un des principaux développeurs et ex-CTO de Gluster, la startup californienne Minio a conçu une solution de stockage objet open source compatible S3, dont l’objectif est de délivrer un stockage simple, rapide et performant aux développeurs d’applications cloud.
La société, créée en novembre 2014, compte moins de 20 salariés et a levé un total de 3,35 M$ auprès des fonds AME Cloud Ventures, General Catalyst Partners, Index Ventures et Nexus Venture et d’investisseurs privés dont Mark Leslie (CEO historique de Veritas), Jeff Rottschild (cofondateur de Veritas), Ben Golub (CEO de Docker) ou Marten Mickos (ex-MySQL). Periasamy parle vite, très vite même, et son équipe code vraisemblablement tout aussi vite. Il a fallu moins d'un an à la firme pour produire la première version de son logiciel et l'équipe n'a cessé d'en améliorer les capacités tout au long de l'année 2016.
Le plus impressionnant est que contrairement aux habitudes de la Silicon Valley, Minio a géré ses fonds de façon très prudente. La firme dispose encore de plus de la moitié de son trésor de guerre et n'entend pas se livrer à l'habituelle courses aux levées de fonds commune dans la Valley. Comme l'explique Periasamy le but est de produire un code de qualité, facile à déployer et à utiliser et que les développeurs puissent s'approprier de façon simple pour l'intégrer à leurs applications. "Nous voulons être le MySQL du stockage objet" explique ainsi le fondateur de Minio.
Un stockage objet simple et compact déployable sous forme de conteneur Docker
Le logiciel de stockage objet de la firme, Minio Cloud Storage, a été développé en langage Go et est fourni avec plusieurs SDK pour les langages Go, Java, JavaScript et Python. Le code source du logiciel est accessible sur GitHub (sous licence Apache) et il aurait déjà été téléchargé plus de 490 000 fois.
Minio peut se déployer comme un exécutable traditionnel sous Windows, Linux, MacOS ou FreeBSD. Mais dans 90% des cas, il est mis en oeuvre sous la forme d’un conteneur Docker. Le logiciel n’a pas pour ambition de concurrencer les grands systèmes de stockage objet massifs comme Scality ou IBM Cloud Storage, mais plutôt de délivrer du stockage au plus près des applications. Idéalement, explique Anand Babu Periasamy, l’objectif est que les développeurs déploient programmatiquement leurs applications en même temps que Minio.
Le logiciel dispose de deux modes de fonctionnement. Le premier permet de mettre en place un stockage compatible S3 au-dessus de volumes classiques en mode bloc. Déployé sur un serveur x86 ou ARM, Minio peut consommer un volume de stockage et le faire apparaître comme un stockage S3. Dans ce mode Minio permet à un développeur de disposer d’un stockage objet à peu près n’importe où, y compris sur sa machine de travail. L’intégrité des données est assurée par les mécanismes mêmes de protection du volume sous-jacent. S’il s’agit d’un simple disque dur et qu’il tombe en panne, les données sont perdues. En revanche, s’il s’agit d’un volume SAN, le niveau de protection dépend de la baie de stockage.
Le second mode de déploiement, bien plus sophistiqué, est baptisé Distributed Minio. Dans ce mode, Minio est capable d’agréger la capacité de multiples volumes résidants sur un ou plusieurs serveurs physiques ou virtuels en un espace objet protégé par un mécanisme de code à effacement. Distributed Minio peut agréger jusqu’à 16 disques dispersés sur un maximum de 16 nœuds différents(1 disque par serveur sur 16 machines, 2 disques par serveur sur 8 machines, etc.). Le logiciel assure l’intégrité des données tant qu’au moins la moitié des disques du cluster restent disponibles. Et il est possible de créer de nouveaux objets sur le cluster dans que sur un total de n disques, n/2 +1 disques sont accessibles. Minio intègre également un mécanisme de protection contre la corruption silencieuse des données (ce que l’on appelle « bit-rot »).
L’object store est compatible avec le protocole S3 et accepte l’écriture de tout type d’objets tant que leur taille unitaire ne dépasse pas 5 To. Point intéressant, Minio supporte aussi les mécanismes de notification Lambda d’AWS, ce qui permet à certains événements de déclencher des appels à des fonctions spécifiques. Cela peut aller de la conversion automatique d’une image ou d’une vidéo après ingestion, à la mise en œuvre de mécanisme de scoring ou de filtrage de données.
Minio Client : un ensemble de commandes shell pour gérer, répliquer ou synchroniser des données entre stockage S3
Minio est aussi fourni avec Minio Client ou « mc », un composant client indépendant qui fonctionne avec tout type de stockage S3 et délivre l’équivalent de commandes shell Unix pour le stockage objet. Minio Client inclut ainsi des commandes comme ls, cp, diff, mkdir, mirror, rm ou rsync, et permet par exemple de lister les objets d’un bucket, de répliquer de façon transparente le contenu d’un bucket d’un stockage S3 à un autre, ou de synchroniser les données d’un service de stockage local Minio vers un autre stockage compatible S3 (et vice-versa). Il est à noter que Minio Client fonctionne avec Minio, mais aussi avec toute forme de stockage compatible S3. Pour l'anectode, il est par exemple couramment utilisé par les équipes de Scality pour répliquer des données d'un stockage objet à un autre.
Minio dispose déjà d’une large communauté, avec plus de 125 contributeurs actifs au code du logiciel. Il est téléchargeable et utilisable gratuitement, mais comme dans le cas de nombreux projets open source, Minio entend générer des revenus via ses prestations de support. De façon intéressante, la cible de l’éditeur est plutôt celle des très grands comptes. Lorsque nous devenons un composant critique chez certains clients, ceux-ci sont prêts à nouer un contrat avec nous pour du support, indique le CEO de Minio. La firme n’entend toutefois pas se disperser et veut privilégier les grands contrats. Elle se satisfait tout à fait de voir des partenaires assurer le support de clients plus petits. Cela lui permet de concentrer l’essentiel de ses efforts sur l’enrichissement du code de Minio.
Minio X : Un moteur d'apprentissage machine au service de la gestion des données
Le prochain projet de la firme est d’ailleurs en cours de développement. Baptisé Minio X, il s’agit d’un moteur d’apprentissage machine autonome, qui pourra être couplé à Minio. L’idée est de permettre d’exploiter plus intelligemment les contenus stockés dans le stockage objet, mais aussi d’enrichir les métadonnées de façon automatique afin de permettre des recherches plus intelligentes sur les données. Minio X permettra par exemple sur une base de photos de poser des questions de type « trouver les personnes aux yeux bleus » ou « trouver les photos de chiens ». Minio X devrait faire ses premiers pas en 2017.