Afin de gagner en efficacité, le secteur informatique imagine actuellement une nouvelle façon de créer et d’exécuter des applications grâce aux technologies de containerisation comme Kubernetes. Mais qu’est-ce qu’un conteneur ? Il s’agit d’une unité logicielle standard qui regroupe le code et toutes ses dépendances afin qu'une application s'exécute rapidement et de manière fiable, d'un environnement informatique à un autre. En contenant toutes les informations nécessaires à leur exécution dans des paquets gérables, ils simplifient le déploiement d'applications basées sur le cloud. Les entreprises ne peuvent plus passer à côté de l'importance stratégique de cette technologie.
Rendre les données centrales
Les données occupent aujourd’hui une position névralgique. Les entreprises numériques ont recours à une nouvelle pile technologique "cloud native" qui permet de transformer ces données en valeur et en informations. Les applications dites cloud-natives sont spécifiquement développées pour fonctionner dès le départ comme dans le cloud et font preuve d’une grande agilité puisqu’elles sont facilement déployables, réparables et déplaçables entre différents environnements. Généralement composées de microservices, elles sont regroupées dans des conteneurs. Les applications qui composent cette nouvelle pile cloud-native ont plusieurs fonctions : si certaines sont en charge de l’analyse des flux de données en temps réel, d'autres doivent indexer des quantités massives de données pour la recherche, sans oublier celles qui entraînent des algorithmes d'apprentissage automatique sur des ensembles de données de plus en plus volumineux. Toutefois, cette révolution cloud-native ne pourrait se faire sans une combinaison de conteneurs et de Kubernetes.
Grâce aux conteneurs, les applications désagrégées peuvent être facilement exécutées avec une très forte évolutivité et fluidité, et une surcharge minimale. Quant à Kubernetes, ce système open-source apporte l'orchestration pilotée par la machine. Il permet de jongler avec tous ces fragments d'applications et de les assembler en une application composite si cela est nécessaire.
Un taux d’adoption stupéfiant
La forte adoption de cette nouvelle pile cloud-native parle d’elle-même. Une étude de 451 Research révèle que 95% des nouvelles applications sont développées dans des conteneurs. Les conteneurs sont un élément clé du multicloud, alors les entreprises font évoluer leurs stratégies de cloud computing. Selon une étude de Gartner, 81% des entreprises sont déjà multicloud, et travaillent donc avec plus de deux fournisseurs de cloud. Le cabinet d’analystes prédit également une hausse considérable de l’usage des conteneurs, passant de 35 % en 2019 à 85 % d’ici 2025.
S’il s'agit encore d'un marché précoce, il présente un énorme potentiel de croissance qui rend les prévisions difficiles. Selon IDC, le marché des logiciels d'infrastructure de conteneurs dépassera à lui seul 1,5 milliard de dollars d'ici 2022.
L’union parfaite des micro-services et des conteneurs
Pour expliquer cela simplement, une application repose sur des fonctions individuelles appelées micro-services, qui s'appuient sur une nouvelle approche architecturale de la création d'applications. Grâce à ces derniers, les équipes informatiques peuvent créer et exécuter plus facilement les applications nécessaires à la création d’un avantage concurrentiel. Une majorité des plus grandes applications connues du grand public et des professionnels fonctionnent aujourd'hui avec des micro-services et sont la preuve qu'il s'agit bien d’une tendance pour toutes les entreprises, qu’elles soient grandes et complexes ou petites. Au contraire, plus l'entreprise est grande, plus il est avantageux d'adopter les micro-services, car ils facilitent la communication directe entre les équipes dispersées.
Les services de streaming sont un très bon exemple : ils n'interrompent jamais leur activité pour effectuer une maintenance et permettent à leurs utilisateurs de bénéficier d'une expérience de visionnage en continu. Comment cela est possible ? Grâce aux micro-services ! Ils permettent de diviser une application en petites parties qui communiquent via des API ;les mises à jour se font indépendamment de chaque partie et sont ainsi facilitées. Par conséquent, lorsqu’un service de streaming met à jour sa fonctionnalité de réinitialisation du mot de passe, il n'a pas besoin de déconnecter des millions d'utilisateurs, car cette fonctionnalité repose sur un micro-service différent qui peut être mis à jour de manière indépendante. C’est un gain de temps pour les développeurs et pour les utilisateurs, qui entraine une grande satisfaction.
Les micro-services sont l’avenir de l’informatique et constitueront la base des applications de demain. Dans quel type d'environnement faut-il les exécuter ? Socle idéal pour les micro-services, les conteneurs leur offrent un environnement léger et cohérent, qui permet de suivre l'application depuis l'ordinateur du développeur jusqu’au déploiement final, en passant par les tests. Enfin, la possibilité de les exécuter sur des machines physiques ou virtuelles, en quelques secondes, voire quelques millisecondes, seulement ce qui est plus rapide que les machines virtuelles.
Une application ne va pas sans dépendances
Traditionnellement, l’ensemble du code nécessaire pour exécuter l'application sur un système d'exploitation particulier, tel que Windows ou Linux, est regroupé en paquets logiciels. Néanmoins, une application peut s’exécuter lorsqu'on dispose de son code, mais aussi d'autres applications. À titre d’exemple, une application qui permet de consulter les valeurs boursières et leurs évolutions peut avoir recours à une bibliothèque pour convertir les noms de sociétés en code mnémonique et vice versa. Si cette fonctionnalité générique n'apporte pas de valeur ajoutée, elle est toutefois importante pour permettre à un utilisateur de taper "Apple" et d'obtenir le titre "AAPL". Lorsqu’on parle de dépendance, la bibliothèque en est un parfait exemple. Chaque application peut avoir des centaines de dépendances de ce type, et ce à l’insu du service informatique.
Si les conteneurs sont devenus aussi populaires, c'est la conséquence de plusieurs raisons. Premièrement,
ils ont fourni un mécanisme et un format qui permet de regrouper le code d'une application avec ses dépendances, et ce afin de faciliter l'exécution d'une application dans différents environnements. Ainsi, d’importants problèmes pour les développeurs ont été résolus. Auparavant, ces derniers luttaient constamment contre les problématiques de compatibilité d'environnement entre leurs ordinateurs portables dédiés au développement, et leurs environnements de test et la production. En ayant recours à des conteneurs pour packager leurs applications, ils sont désormais en mesure de « coder une fois et d’exécuter n’importe où », ce qui accélère grandement le rythme de livraison des applications.
Faire le choix du bon service de conteneurs
Conçue pour être « stateless », la première génération d'applications cloud-natives utilisait des conteneurs qui effectuaient le travail d'applications sans qu’il soit nécessaire de stocker des données persistantes dans les volumes associés.
Or, l’utilisation des conteneurs évolue. Aujourd’hui, les développeurs créent de plus en plus d'applications "stateful" à l'intérieur des conteneurs. Ces dernières stockent des données dans un volume qui doit être persistant et conservé. Cette nouvelle façon de faire engendre un réel défi pour le monde du stockage. Si les conteneurs sont généralement associés à la flexibilité et à l’ouverture, ces deux qualités deviennent de réels obstacles et goulots d'étranglement au niveau de la couche de stockage. En conséquence, les capacités de stockage simples tenues pour acquises depuis des années dans la pile d'applications traditionnelle (haute disponibilité, reprise après sinistre, sauvegarde, cryptage) représentent à leur tour des défis dans le monde des conteneurs. Pire encore, chaque application peut souvent élaborer sa propre stratégie de stockage, rendant alors impossibles l'application de normes et la conformité des données au sein de l'entreprise.
Face à l’essor des conteneurs, il est important de rappeler que les applications traditionnelles ne sont pas près de disparaître ! Opter pour une solution qui fournit les services de données natifs de Kubernetes dont les applications traditionnelles et cloud-natives ont besoin est fortement recommandé. Pour les acteurs du stockage, cela signifie offrir des services de stockage en mode bloc, fichier et objet, et ce dans plusieurs classes de performance, provisionnées à la demande selon les besoins de Kubernetes. L’objectif est d’accéder aux données de manière instantanée, de protéger contre l’ensemble des types de défaillances, de mobiliser les données entre les clouds et même vers/depuis les sites périphériques où sont produites les données. Sans oublier une sécurité robuste, quel que soit l'endroit où l'application se déplace. Kubernetes est devenu la clé des entreprises modernes et toutes les entreprises peuvent le devenir si elles appliquent cela.
Par Gabriel Ferreira, Directeur technique France chez Pure Storage