Autour du conteneur

Docker et les microservices apportent une flexibilité et des économies nouvelles au sein du centre de données.

L'émergence des technologies de conteneurs, telles que Docker, a ouvert un champ de possibilités qui intéresse au plus haut point les grandes entreprises. Chez Juniper Networks, nous considérons ces technologies comme une avancée majeure dans l'évolution des centres de données, mais surtout comme une innovation porteuse d'efficacité, de productivité et de flexibilité pour les grandes entreprises qui proposent le cloud en tant que service.

Avec les progrès toujours plus rapides de certaines technologies d'accompagnement telles Kubernetes, l'association des applications conteneurisées et des architectures de microservices offre des perspectives extrêmement prometteuses à toutes ces entreprises en 2016.

Conteneurs et microservices

La vocation première des applications conteneurisées est d'améliorer l'efficacité des équipes de développement logiciel en facilitant leur collaboration et en allégeant le coût des communications. Dans les grandes entreprises, il n'est pas rare que des projets d'applications initialement simples prennent de l'ampleur au fil du temps et perdent rapidement en efficacité avec une base de code monolithique qui ralentit les efforts de développement des équipes. Les suites logicielles de gestion de la relation clients (CRM) et de planification des ressources d’entreprise (ERP) en sont de bons exemples.

Une nouvelle approche remédie à ce problème. Elle consiste à subdiviser les applications en plus petits éléments aisément gérables que l'on appelle microservices. L'adoption d'une architecture de microservices permet aux équipes de développement de travailler avec un code de base réduit sur leur élément d'application, autrement dit de gagner en flexibilité et en efficacité.

L'adoption d'une architecture de microservices permet aux équipes de développement de travailler avec un code de base réduit sur leur élément d'application, autrement dit de gagner en flexibilité et en efficacité.

Au cours de son cycle de développement, l'application peut passer de l'ordinateur d'un développeur à un environnement de test ou de laboratoire. Elle peut aussi transiter entre plusieurs environnements, du physique au virtuel pour partir, finalement, en production. À chacune de ces étapes, elle doit fonctionner de manière cohérente. Les conteneurs apportent une réponse à la question des environnements variés dans lesquels tourne l'application. Ils permettent aux développeurs d'encapsuler un élément de l'application dans un package unique et léger. Les conteneurs Linux assurent ainsi un fonctionnement uniforme d'un environnement informatique à l'autre, qu'il soit physique ou virtuel.

Composante d'une approche DevOps

Les microservices s'inscrivent dans la tendance actuelle qui porte les services informatiques à se tourner vers une culture DevOps, qui encourage une collaboration étroite entre les équipes de développement et d'exploitation en vue d'accompagner l'application sur tout son cycle de vie. Les conteneurs eux-mêmes constituent un outil DevOps idéal pour les développeurs et les administrateurs système. Ils permettent aux développeurs de se concentrer sur leur cœur de métier tandis que l'équipe d'exploitation gagne en flexibilité, réduit les coûts et libère de l'espace dans le centre de données.

Les conteneurs révèlent tout leur intérêt lorsqu'ils sont affectés individuellement à un seul processus. Si la mise en place d'une architecture de microservices pour un vaste projet d'application ou de logiciel peut s'avérer consommatrice en ressources dans un premier temps, la flexibilité qu'elle amène contrebalance l'inconvénient initial. Cette flexibilité provient en partie de la vitesse à laquelle les conteneurs peuvent être déployés, une vitesse de quelques secondes, voire millièmes de secondes. La charge de travail de l'application dans le conteneur s'appuie sur le noyau du système d'exploitation du serveur hôte. Ainsi, nul besoin de récupérer le système d'exploitation au lancement.

Les conteneurs permettent aux développeurs de se concentrer sur leur cœur de métier tandis que l'équipe d'exploitation gagne en flexibilité, réduit les coûts et libère de l'espace dans le centre de données.

Autre avantage notable de l'utilisation d'applications conteneurisées : l'efficacité qu'elles procurent, tant d'un point de vue organisationnel qu'en termes d'espace et de puissance au sein du centre de données, grâce à leur usage minime de la mémoire. Contrairement aux machines virtuelles qui ont besoin d'un système d'exploitation complet et d'une image du système, surchargeant le processeur, les conteneurs sont légers. Ils partagent le noyau du système d'exploitation hôte et peuvent utiliser plus efficacement le processeur ainsi que la mémoire. Les coûts informatiques s'en trouvent diminués au même titre que la consommation énergétique et l'espace occupé dans le centre de données.

Gestion du cluster

Un cluster est un groupe de machines virtuelles ou physiques sur lesquelles des conteneurs peuvent être exécutés. Or, ces clusters appellent une certaine forme de gestion. Avec l'évolution des technologies de conteneurs, les entreprises peuvent désormais employer des outils de gestion de clusters comme OpenShift ou Kubernetes, le gestionnaire développé par Google qui s'associe à Docker. Moteur d'exécution pour les conteneurs, Docker permet également l'administration de leurs systèmes de fichiers.

Les outils de gestion de clusters tels Kubernetes offrent généralement une abstraction au niveau d'un élément d'application. Cette abstraction ou « pod » comprend un ou plusieurs conteneurs, leur stockage partagé et des options pour leur mode d'exécution. Lorsque des pods sont programmés sur une machine appartenant au cluster, Docker exécute un conteneur.

Création d'un réseau pour les conteneurs

Le réseau joue un rôle clé dans la conteneurisation. Au sein des environnements multi-utilisateurs, le contrôle des accès et les audits sur les flux réseau sont deux paramètres essentiels. Les contrôles des accès fournis par le réseau s'ajoutent aux mécanismes applicatifs d'autorisation et d'authentification. Ainsi combinés, ils offrent une couche commune au-dessus des méthodes d'authentification hétérogènes. Ce contrôle global est tout particulièrement requis dans les environnements intégrant des logiciels tiers (pare-feu virtualisés, entres autres) ou plusieurs générations de technologies logicielles qui s'exécutent en parallèle.

Chez Juniper Networks, nous misons sur le potentiel des conteneurs. Nous estimons que l'engouement des sociétés informatiques pour les architectures de microservices et les applications conteneurisées, sécurisées par un pare-feu, va s'accélérer.

Le contrôle des accès réseau, doublé d'une protection au niveau des couches 3 à 7, doit englober les clusters qui exécutent les charges de travail conteneurisées, mais aussi les environnements externes, comme les serveurs « bare metal » ou OpenStack existants. Dans ces environnements hétérogènes, le réseau est le ciment entre les différents éléments.

Notre technologie Contrail Networking illustre parfaitement cette fonctionnalité. Elle offre une microsegmentation pour les écosystèmes de conteneurs, isolant ainsi de façon sécurisée les réseaux au sein d'un environnement multi-utilisateurs. L'outil de gestion des clusters peut alors connecter différents réseaux virtuels entre les applications qui s'exécutent sur des conteneurs et des machines virtuelles ainsi que des éléments extérieurs à cette gestion, comme d'anciennes infrastructures ou des bases de données tournant sur des serveurs « bare metal ».

Avec la maturation des technologies de conteneurs, des technologies réseau vont voir le jour pour soutenir les applications conteneurisées. Le besoin d'une protection capable de s'adapter à ces environnements va grandir avec la question des technologies de conteneurs pouvant être exécutées aux mêmes vitesses que les éléments applicatifs.

Chez Juniper Networks, nous misons sur le potentiel des conteneurs. Nous estimons que l'engouement des sociétés informatiques pour les architectures de microservices et les applications conteneurisées, sécurisées par un pare-feu, va s'accélérer. Notre mission est de protéger le réseau dans sa globalité en automatisant ses aspects jusqu'ici complexes et en développant des plates-formes ouvertes et robustes qui ouvrent la voie à l'adoption de technologies telles que celles présentées ici.

Apprenez-en davantage sur les applications conteneurisées et la construction d'un réseau adapté dans les ressources associées à cet article.