Jump to section

Conteneurs et machines virtuelles

Copier l'URL

Red Hat classé leader dans le rapport Magic Quadrant™ de Gartner® de 2023

Red Hat a obtenu la meilleure note pour sa capacité d'exécution et sa vision globale dans la catégorie Gestion des conteneurs du rapport Magic Quadrant de Gartner de 2023.

Les conteneurs et les machines virtuelles sont des environnements informatiques mis en paquet selon deux approches différentes, qui associent divers composants et les isolent du reste du système. Ils se différencient principalement par les types de composants qu'ils isolent, ce qui détermine leurs niveaux d'évolutivité et de portabilité.

 

Un conteneur est une unité logicielle qui renferme tous les composants et fonctionnalités dont a besoin une application pour s'exécuter. Aujourd'hui, la plupart des applications sont composées de plusieurs conteneurs qui ont tous une fonction précise. En règle générale, les conteneurs se mesurent en mégaoctets. Ils n'utilisent pas d'hyperviseur et sont considérés comme une méthode d'isolation des processus rapide et agile.

Si les conteneurs sont si utilisés, c'est notamment parce qu'ils offrent un haut niveau de portabilité.À la manière de briques LEGO™, il est possible d'intervertir des conteneurs et de les déplacer dans d'autres environnements. Une fois qu'une application a été mise en paquet avec ses dépendances dans un conteneur, celle-ci peut être déployée selon les besoins (ordinateur portable, datacenter, cloud ou périphérie du réseau) et fonctionner comme d'habitude.

La technologie des conteneurs a évolué au fil des ans, en particulier avec Docker, une plateforme Open Source pour la création, le déploiement et la gestion des applications conteneurisées. 

Essentielles au cloud computing, les machines virtuelles émulent les ordinateurs physiques en exécutant des systèmes d'exploitation sur des instances isolées. Elles sont souvent toutes hébergées sur un seul serveur et séparées de l'hôte physique par un hyperviseur qui agit comme une couche logicielle légère. Cet hyperviseur gère efficacement l'accès aux ressources afin que les machines virtuelles offrent de meilleurs niveaux de flexibilité et d'agilité en tant que serveurs distincts.

Les machines virtuelles ont commencé à être largement utilisées dans les années 2000, en raison d'initiatives de consolidation et de réduction des coûts. Elles ont depuis beaucoup évolué. Les entreprises ont perfectionné leurs déploiements pour affecter les machines virtuelles à d'autres cas d'utilisation que la consolidation, par exemple la mise à disposition de ressources à la demande pour les applications ou l'optimisation de l'accès à des ressources coûteuses, comme les processeurs.

Les machines virtuelles ont aussi souvent été à la base des premiers environnements de cloud computing. Elles ont facilité la virtualisation des ressources et ont rendu possible l'exécution de systèmes aux ressources identiques par plusieurs clients via l'architecture multi-client et l'isolation.

Les machines virtuelles intègrent leur propre système d'exploitation et peuvent ainsi exécuter simultanément plusieurs fonctions gourmandes en ressources. Grâce aux gros volumes de ressources auxquels elles ont accès, les machines virtuelles peuvent dissocier, séparer, dupliquer et émuler des serveurs, des systèmes d'exploitation, des postes de travail, des bases de données et des réseaux entiers. 

Au-delà des différences technologiques, lorsque l'on compare les conteneurs et les machines virtuelles, c'est comme si l'on comparait les pratiques cloud-native modernes et les architectures informatiques classiques. 

De nouvelles pratiques informatiques 
(développement d'applications cloud-native, CI/CD et DevOps) émergent grâce à la possibilité de décomposer des charges de travail en unités de services bien plus petites, en général une seule fonction ou un microservice. Ces unités sont ensuite exécutées, développées, déployées, gérées et mises à l'échelle de manière isolée et indépendante.

La meilleure façon de les mettre en paquet est d'utiliser des conteneurs, qui permettent à plusieurs équipes de travailler sur des parties spécifiques d'une application ou d'un service sans interrompre ni compromettre le code dans les autres conteneurs.

Dans les architectures traditionnelles
(monolithiques et existantes), chaque aspect d'une charge de travail est étroitement lié à l'architecture globale et ne peut fonctionner sans elle. Parce que ces aspects ne peuvent être séparés, ils doivent être mis en paquet ensemble dans un environnement plus grand, souvent une machine virtuelle.

Avant, il était courant de créer et d'exécuter une application entière au sein d'une machine virtuelle. Cependant, l'hébergement de l'ensemble du code et des dépendances dans un seul endroit nécessitait des machines virtuelles surdimensionnées, ce qui entraînait des défaillances et des temps d'arrêt en cascade lors des mises à jour.

 

virtualization vs containers

Virtualisation

Un hyperviseur est un logiciel qui sépare les ressources de leurs machines physiques pour les allouer à des machines virtuelles. Si une instruction donnée à une machine virtuelle nécessite davantage de ressources de l'environnement physique, l'hyperviseur transmet la requête au système physique et met en cache les modifications. Les machines virtuelles ressemblent à des serveurs physiques et agissent comme tels, ce qui présente des inconvénients au niveau des dépendances des applications et de la taille du système d'exploitation (le plus souvent surdimensionné pour exécuter une seule application ou un microservice).

Conteneurs

Les éléments inclus dans un conteneur sont toujours mis en paquet et fournis dans une image de conteneur, un fichier qui comprend toutes les bibliothèques et dépendances. Les images de conteneurs ressemblent à des paquets d'installation de logiciels (comme les RPM dans Linux), mais nécessitent seulement un noyau compatible et un environnement d'exécution de conteneur pour faire fonctionner une application. Elles n'ont pas besoin d'un système d'exploitation ou d'une source de bibliothèques spécifique. En raison de leur taille réduite, les conteneurs sont souvent faiblement couplés par centaines. D'où l'utilité de plateformes d'orchestration des conteneurs (comme Red Hat OpenShift et Kubernetes) pour les provisionner et les gérer.

Pour faire le meilleur choix, il faut vous demander si vous avez besoin d'une petite instance facilement modulable (des conteneurs) ou de ressources informatiques personnalisées qui sont allouées de manière semi-permanente.

D'autres facteurs entrent également en compte : l'architecture des applications, les pratiques de développement, les exigences réglementaires et de sécurité, etc.

Petits et légers, les conteneurs sont faciles à déployer dans les systèmes bare metal ainsi que dans les environnements de cloud public, privé, hybride et multicloud. Il n'est pas rare non plus que les entreprises disposent d'infrastructures existantes basées sur des machines virtuelles qui leur permettent d'exécuter des conteneurs, ce qui témoigne de leur flexibilité.

Les conteneurs sont également adaptés au déploiement d'applications cloud-native modernes, constituées de microservices conçus pour fournir une expérience cohérente de développement et de gestion automatisée dans les environnements de cloud public, privé, hybride et multicloud. Cette approche du développement accélère la création d'applications, l'optimisation des applications existantes et la façon dont elles sont connectées. 

Les conteneurs sont à privilégier par rapport aux machines virtuelles pour les cas suivants :

  • Création d'applications cloud-native
  • Mise en paquet de microservices
  • Intégration des applications aux pratiques DevOps et CI/CD (intégration et distribution continues)
  • Déplacement des projets informatiques évolutifs entre différents environnements

Les machines virtuelles sont à privilégier par rapport aux conteneurs pour les cas suivants :

  • Hébergement des charges de travail existantes, monolithiques et traditionnelles
  • Isolation des cycles de développement risqués
  • Provisionnement des ressources d'infrastructure (réseaux, serveurs et données)
  • Exécution d'un système d'exploitation au sein d'un autre système d'exploitation (Unix sous Linux, par exemple)

 

Si vous utilisez à la fois des machines virtuelles et des conteneurs, la technologie Red Hat Service Interconnect peut vous aider à connecter vos applications et services entre différents environnements.

Il est possible de déployer des machines virtuelles et des conteneurs sur divers types d'infrastructures, notamment des serveurs bare metal.

Que signifie bare metal ?

On dit d'un ordinateur ou d'un serveur qu'il est « bare metal » s'il s'exécute sur du matériel physique sans avoir besoin d'un hyperviseur, de machines virtuelles ou de conteneurs. Les serveurs bare metal sont également appelés serveurs dédiés, car leurs composants matériels ne sont pas partagés avec d'autres utilisateurs, mais réservés uniquement à un client.

Rapides et puissants, les serveurs bare metal peuvent traiter un gros volume de données avec peu de latence. L'utilisateur contrôle entièrement l'infrastructure du serveur. Il peut choisir son propre système d'exploitation et adapter son matériel et ses logiciels à ses besoins spécifiques en matière de charges de travail.

Les avantages des environnements bare metal se limitent cependant aux cas qui reposent essentiellement sur les performances et l'accès direct au matériel. Leurs niveaux de flexibilité et de gestion des ressources s'avèrent moins élevés que ceux des conteneurs et des machines virtuelles.

Est-il possible d'héberger des machines virtuelles dans un environnement bare metal ?

Oui. Les serveurs bare metal peuvent héberger des machines virtuelles à l'aide d'un hyperviseur et d'un logiciel de virtualisation.

Est-il possible d'héberger des conteneurs dans un environnement bare metal ?

Oui. Grâce à des plateformes telles que Docker, Kubernetes et Podman, les utilisateurs peuvent gérer et déployer des conteneurs à grande échelle sur de nombreuses infrastructures, notamment des serveurs bare metal. 

Plateforme d'applications d'entreprise basée sur des conteneurs, Red Hat® OpenShift® est une solution centralisée qui inclut des options de déploiement et de consommation pour tous types d'applications et d'environnements. Elle permet aux entreprises de concevoir, de déployer, d'exécuter et de gérer rapidement des applications dans tous les environnements, à grande échelle et en toute sécurité. 

Red Hat OpenShift Virtualization est une fonction de Red Hat OpenShift qui permet aux équipes informatiques d'exécuter des machines virtuelles parallèlement à des conteneurs sur la même plateforme Kubernetes, avec à la clé une simplification de la gestion et une réduction des délais de mise en production.

Les entreprises peuvent ainsi tirer parti des investissements déjà réalisés en matière de virtualisation, et profiter de la simplicité et de la rapidité qu'offre cette plateforme d'applications moderne. L'intégration de machines virtuelles à la plateforme d'applications OpenShift permet de proposer un environnement cohérent pour le développement et le déploiement d'applications. Les équipes de développement peuvent concevoir, tester et déployer des applications plus rapidement, et ainsi réduire le délai de mise sur le marché.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

Développement d'applications cloud-native avec des architectures de microservices