Pourquoi privilégier la virtualisation des environnements de développement ?

Comment pouvons-nous être capables de se mettre dans les mêmes conditions d’exécution du code chez le client ?

 Lors du développement d’une application, il nous arrive parfois de faire face à cette situation : des comportements diffèrent entre l’environnement client et l’environnement de développement. Pourtant, le code source est dans la plupart des cas le même. Si l’environnement de développement est figé, il est difficile de reproduire l’anomalie et de se mettre dans le même contexte que le client. Dans certains cas, il est également difficile d’intervenir directement sur les environnements clients et donc d’identifier le problème.

Comment pouvons-nous être capables de se mettre dans les mêmes conditions d’exécution du code chez le client ? Comment pouvons-nous facilement et rapidement avoir une image ISO de l’environnement client et pouvoir la modifier sans compromettre à chaque fois le fonctionnement d’un serveur/machine ? Je vous propose de regarder ensemble comment la virtualisation est la solution idéale.  

La virtualisation, vers le presque infini...

L’un des principaux buts de la virtualisation est de créer un ou plusieurs environnements virtuels sur une machine hôte. La virtualisation permet ainsi, à partir des contraintes du client, de mettre en place une copie conforme à son environnement, d’identifier le problème et d’apporter rapidement une solution. Elle permet aussi d’allier à la fois les problématiques de code et d’infrastructure. Nous pouvons donc intégrer les problématiques de déploiement/mise en production le plus tôt possible dans le cycle de développement. Nous pouvons ainsi procéder à une mise en production à la demande  

Pourquoi j’ai opté pour la virtualisation pour tous mes développements :

  • Rapidité de mise en place des environnements, gain de temps en productivité en phase de développement
  • Facilité de l’intégration et de la livraison continue
  • Mutualisation des ressources matérielles et donc réduction des coûts
  • Conformité par rapport au contexte client
  • Facilité d’adaptation en cas de changement d’architecture de l’application
  • Rapidité de réaction en cas de problème de production
  • Possibilité de tester des solutions et des évolutions sans compromettre la stabilité de l’existant

Malgré tout cela, la virtualisation peut avoir quelques contraintes :

  • Le partage de ressources implique un impact sur les performances
  • L’attente du client est plus accrue, que ce soit au niveau applicatif ou architectural
  • Dépendance d’une machine hôte, qui en cas de problème, peut avoir un impact sur plusieurs environnements ou machines virtuelles

La virtualisation s’est aussi accompagnée d’un mouvement DevOps. Il a pour objectif de mettre en phase le développement et la mise en production d’applications, son principe étant de faire intégrer les problématiques d’infrastructure tout le long de la phase de développement.  

Quid des outils de virtualisation

En ce qui concerne les outils de virtualisation, que ce soit pour la mise en place ou l’administration des machines virtuelles, nous avons l’embarras du choix. J’utilise quotidiennement avec mes collaborateurs des applications dites « clients lourds ». Par exemple VirtualBox ou des logiciels comme Vagrant peuvent être directement intégrés et gérés via des scripts. Sans oublier bien sûr Docker, la plateforme de containérisation.

La virtualisation est devenue un enjeu majeur en ce qui concerne les systèmes d’information modernes. De plus en plus d’entreprises investissent dans cette solution. L’agilité des projets et l’émergence du mouvement DevOps favorisent en effet cette approche du développement et de maintien des systèmes d’information ; reste à choisir les bons outils qui ne manquent pas de couvrir la plupart des problématiques clients.