La virtualisation de serveurs fait partie de ces technologies simples, mais dont l’impact sur les datacenters d'entreprise est important. Que se passerait-il si, au lieu d'exécuter une instance de système d'exploitation et une application par serveur, il était possible d’ajouter une couche logicielle, connue sous le nom d'hyperviseur, et d’exécuter plusieurs instances de système d'exploitation et des charges de travail associées sur un seul serveur physique ? Tout le concept de la virtualisation de serveurs repose sur ce principe. L’idée date des années 1960 et des mainframes IBM. Mais c’est VMware qui l’a étendu au début des années 2000 en livrant un logiciel de virtualisation pour serveurs x86. Depuis, d'autres fournisseurs (Citix, Microsoft ou encore Red Hat) ont développé leurs propres plates-formes de virtualisation de serveurs et l'industrie dans son ensemble a créé des outils avancés de gestion, d'automatisation et d'orchestration facilitant le déploiement, la migration et la gestion des charges de travail des machines virtuelles (VM).

Avant la virtualisation de serveurs, les environnements de datacenters posaient plusieurs problèmes aux entreprises : prolifération des serveurs, puissance de calcul sous-employée, factures d'énergie en forte hausse, processus manuels et inefficacité et rigidité générales. La virtualisation de serveurs a transformé tout ça, d’où son adoption massive. En fait, il est difficile de trouver aujourd'hui une entreprise qui n'exécute pas déjà la plupart de ses charges de travail dans un environnement VM. Mais on le sait, aucune technologie n'est à l'abri d'être détrônée par la prochaine grande innovation. Et la virtualisation de serveurs n’échappera pas à cette fatalité.

La virtualisation de serveurs consiste à prendre un périphérique physique et à le découper en tranches de façon à ce que de multiples systèmes d'exploitation et de multiples applications complètes tirent parti de la puissance de calcul sous-jacente. Désormais, les développeurs découpent les applications en micro-services plus petits qui tournent dans des conteneurs légers. Ils expérimentent aussi l'informatique sans serveur ou serverless (également connue sous le nom de fonction-as-a-service ou FaaS). Dans ces deux scénarios, la VM est complètement contournée et le code fonctionne sur du bare metal.

Les avantages de la virtualisation de serveurs

Les avantages de la virtualisation de serveurs sont nombreux, à commencer par la simple consolidation des serveurs. Il est possible de combiner plusieurs applications sur une portion de hardware et de réduire ainsi le nombre total de machines nécessaires dans le datacenters. Moins de serveurs, moins de racks, moins d'équipement réseau, tout cela permet de faire de sérieuses économies sur l'espace physique, les coûts de maintenance et la climatisation. La virtualisation de serveurs réduit les dépenses en capital sur le nouveau hardware. Elle permet également de réduire l’impact du cycle ininterrompu des mises à jour matérielles. De plus, les serveurs en surnombre peuvent être redéployés. Certains se souviendront de l’époque pas si lointaine où les administrateurs de datacenters devaient provisionner les serveurs manuellement… La virtualisation de serveurs s'accompagne de progrès en matière d'automatisation qui permettent de mettre en place une machine virtuelle en quelques secondes et de migrer plusieurs charges de travail en actionnant un simple bouton en fonction des besoins de l'entreprise. 

La virtualisation de serveurs offre également la haute disponibilité, le basculement en cas de panne, la vitesse, l'évolutivité, l'agilité, la performance et la flexibilité dont ont besoin les entreprises d’aujourd’hui, hautement connectées et basées sur le Web. La virtualisation de serveurs apporte aussi la technologie sous-jacente qui permet aux fournisseurs de cloud d'offrir leurs services. Quand un client commande une infrastructure en tant que service (IaaS) auprès d'un fournisseur de services cloud, tout commence par des machines virtuelles auxquelles sont ajoutées ensuite des fonctions de stockage, de gestion et de sécurité nécessaires à l'accomplissement de la tâche à accomplir.

Les différents types de virtualisation de serveurs

Dans le monde de la virtualisation de serveurs, le serveur physique est désigné sous le nom d'hôte et exécute un système d'exploitation hôte. Chaque VM est un invité et utilise un système d'exploitation invité. Les invités sont séparés les uns des autres. Dans la virtualisation courante basée sur l'hyperviseur, l'hyperviseur ou moniteur de machine virtuelle (VMM) se situe entre l'OS hôte et la couche matérielle sous-jacente. Il fournit les ressources nécessaires aux OS invités. La para-virtualisation et la virtualisation complète modifient le système d'exploitation invité avant l'installation dans la machine virtuelle. Ces variantes améliorent les performances dans la mesure où le système d'exploitation invité modifié communique directement avec l'hyperviseur, ce qui permet de se passer de l'émulation.

Pour ce qui est de la virtualisation assistée par matériel, elle tente également de réduire la charge de l'hyperviseur, cette fois par le biais d'extensions matérielles plutôt que de modifications logicielles. Dans le cas de la virtualisation au niveau du noyau, au lieu d'utiliser un hyperviseur, on exécute une version séparée du noyau Linux. Cette solution facilite l'exécution de plusieurs machines virtuelles sur un seul hôte, la communication entre le noyau Linux principal et les machines virtuelles étant assurée par un pilote de périphérique. Dans le cas de la virtualisation au niveau du système ou de l’OS, on peut exécuter des environnements multiples, mais logiquement distincts sur une seule instance du noyau du système d'exploitation. Enfin, dans la virtualisation au niveau du système, toutes les machines virtuelles doivent partager la même copie du système d'exploitation, alors que dans la virtualisation de serveurs, les différentes machines virtuelles peuvent tourner avec différents systèmes d'exploitation.

Machines virtuelles vs. conteneurs

Deux solutions ont encouragé la conteneurisation : Docker, un outil populaire de mise en route de conteneurs, et Kubernetes de Google, qui facilite la gestion de clusters de conteneurs (jusqu’à 5 000). Les conteneurs sont des environnements d'exécution de code autonomes qui partagent le noyau de l'OS hôte. Les conteneurs sont plus simples et plus légers que les machines virtuelles, car ils évitent la redondance des OS invités et les démarrages associés. En moyenne, les développeurs peuvent faire tourner six à huit fois plus de conteneurs que de machines virtuelles sur le même matériel. Mais les conteneurs ont leurs inconvénients. Étant donné que l’approche est relativement nouvelle, les outils de gestion n’offrent pas autant de fonctions qu’une technologie plus mature. Il y a donc encore beaucoup de travail d'installation et de maintenance à effectuer. Il reste aussi des préoccupations concernant la sécurité. Dans le cas des machines virtuelles, on peut facilement déplacer les charges de travail d'un hôte à l'autre en utilisant des images d'invités, mais les machines bare metal sont plus difficiles à mettre à niveau ou à déplacer. Dans le cas des serveurs bare metal, il est difficile aussi de revenir à un état antérieur.

Machines virtuelles vs. informatique sans serveur

Dans un environnement IaaS traditionnel, les clients provisionnent d'abord les machines virtuelles, le stockage, les bases de données et les outils de sécurité et de gestion associés, puis ils chargent les applications sur les machines virtuelles. Dans le cas de l'informatique sans serveur ou serverless, les développeurs écrivent du code et le fournisseur de services cloud s'occupe de tout le reste. Le développeur n'a jamais à se préoccuper des serveurs, des systèmes d'exploitation, de l'approvisionnement ou de la gestion. Bien sûr, il y a toujours un serveur physique qui exécute le code, mais la responsabilité en revient au fournisseur de services cloud. L’application n’est plus monolithique, le code étant décomposé en fonctions spécifiques. Lorsqu'un événement déclenche une fonction, le service sans serveur - comme Lambda d'Amazon - l'exécute. Les fournisseurs serverless facturent les clients à la fonction. Comme dans le scénario microservice/conteneur, l'informatique sans serveur contourne la couche VM et les fonctions s'exécutent sur du bare metal. Pour l’instant, l'informatique sans serveur est relativement immature et les cas d’usage sont limités.

Quel avenir pour la virtualisation de serveurs ?

Si la tendance des conteneurs reste forte et l’intérêt pour l'informatique sans serveur ne cesse d’augmenter, la virtualisation de serveurs apparaît toujours comme une technologie solide. Aujourd’hui, la grande majorité des applications d'entreprise tourne sur des VM. Selon certaines estimations, la saturation en VM atteint même parfois 90 %. Il est difficile d'imaginer qu'une entreprise puisse déplacer des applications critiques tournant sur des machines virtuelles vers des conteneurs ou une plate-forme sans serveur. Dans les environnements hétérogènes, les machines virtuelles seront probablement encore privilégiées parce que les conteneurs doivent tous tourner sur le même système d'exploitation et ne permettent pas de mélanger Linux et Windows. Par contre, pour les nouvelles applications construites selon les dernières méthodes DevOps et agiles, les développeurs disposent désormais d’autres options. À l'avenir, les développeurs pourront décider au cas par cas s’il est préférable de faire tourner les nouvelles charges de travail dans un environnement VM traditionnel, un conteneur ou un environnement sans serveur.