Virtualisation d’un programme

une première possibilité pour faire face à la limitation des environnements virtuels est de fournir le code source dans un environnement complet d’exécution, c’est à dire avec une machine virtuelle.

Cette solution est relativement fiable, pour ce qui concerne ses résultats. Elle permet de faire tourner le code source avec la version de R ou Python requise sans changer la version qui est déjà installée dans le système hôte.

Un environnement très inclusif comportant également le code source et les données peut être capturé et partagé depuis un serveur sous la forme d’une image .iso par exemple depuis le serveur VMware ou bien un repository type SourceForge (voir exemple ici : https://sourceforge.net/projects/budden2014predictive/postdownload ) 📓1

Mais cette solution est lourde, particulièrement si les données sont elles-mêmes volumineuses. Mettre au point une image virtuelle prend du temps, la partager n’est pas aisé, compte tenu de la lourdeur du fichier (c’est un système d’exploitation complet qui est fourni avec le code source). Exécuter l’image peut prendre aussi du temps.

De plus, l’usage d’une machine virtuelle, au moyen d’un outil de type Oracle VM, ne permet pas d’utiliser les ressources du système hôte. C’est conçu pour cela à des fins d’étanchéité, mais cela signifie qu’une même machine doit supporter en même temps deux systèmes d’exploitation actifs, le système hôte (mettons Windows) et le système invité (mettons Ubuntu 20 chargé dans une machine virtuelle type Oracle VM). Ce nécessaire partage des ressources entre les deux deux systèmes amoindrit les performances constatées.

Figure 1

Pour ces différentes raisons (partage de l’image et perte de performantes), l’usage de conteneurs est généralement préféré à celui des machines virtuelles 📓2

Comme l’indique le schéma ci-dessous. le conteneur peut utiliser les ressources de l’hôte pour répliquer l’image du logiciel et l’exécuter, ce qui garantit de meilleures performances. L’appareil peut conserver et exécuter successivement plusieurs conteneurs (App1, App2, etc.), ce qui paraît peu faisable avec le même nombre de machines virtuelles en terme de volume. Pour cette raison, il est plus courant aujourd’hui de mettre à disposition son code et l’environnement computationnel de celui-ci sous la forme d’un conteneur.

C’est ce que nous allons voir à présent.

montrer comment on peut faire une image .iso avec le code war_cemeteries

References

1.
Hurley, D. G., Budden, D. M. & Crampin, E. J. Virtual Reference Environments: A simple way to make research reproducible. Briefings in Bioinformatics 16, 901–903 (2015).
2.
Ziemann, M., Poulain, P. & Bora, A. The five pillars of computational reproducibility: Bioinformatics and beyond. Briefings in Bioinformatics 24, 1–13 (2023).