Reproductibilité
WIP : Reproductibilité / Répétabilité / etc késako en 3 lignes.
WIP : Pourquoi cette question de la reproductibilité est importante au delà de la question scientifique, ici sur le plan technique.
En vérité, la plupart des scripts simples que l’on retrouve dans les exercices de webscraping ne suffisent plus lorsqu’il s’agit de passer à l’échelle. Le terme peut préter à confusion en Francais, et on lui préfère son équivalent francisé. La scalabilité ou “scalability” en anglais, est vue par les informaticiens comme un “desirable attribute of a network, system, or process. The concept connotes the ability of a system to accommodate an increasing number of elements or objects, to process growing volumes of work gracefully, and/or to be susceptible to enlargement” (Bondi, 2000)
Dans notre cas, il s’agit de réfléchir puis de mettre en oeuvre l’ensemble des moyens techniques qui permettront de passer d’un premier script prototype ad-hoc, lancé manuellement depuis un ordinateur de bureau allumé quelque heures par jour, dont les résultats sont ensuite consolidés à la main… à une plateforme executée sur serveur, si possible résiliente et capable de collecter et de consolider des données automatiquement, sans être detecté comme un robot, sur une période de plusieurs semaines, voire plusieurs années ?
La reproductibilité d’un système logiciels et/ou matériel est donc un élément important, ne serait ce que parcequ’elle simplifie grandement le travail des différents métiers informatiques à l’oeuvre dans cette équation.
Docker est une plateforme de virtualisation par conteneurs qui se différencie des solutions classiques (machines virtuelles) par la flexibilité et l’économie de ressources qu’elle permet. En répondant aux problématiques posées à la croisée de deux métiers (les administrateurs systèmes et développeurs), la mouvance “DevOps” rencontre à la fois un très grand succès dans la communauté des informaticiens1, mais également des chercheurs impliqués dans le développement logiciel, nous discuterons rapidement pourquoi.
Mais alors, qu’est ce que la virtualisation par conteneurs ? d’ou ca vient ? a quoi ca sert ?
WIP : virtualisation par conteneurs en 3 lignes
Docker est une plateforme qui s’installe facilement sur tous les systèmes (macOS, windows, linux). Docker permet de télécharger des images2 qui peuvent ensuite être utilisées pour instancier une infinité de containers qui offre pour chacun un environnement relativement isolé3 du reste du système hôte.
Par exemple, admettons qu’un utilisateur, Paul, veuille mettre à disposition de Yoko et John deux containers autonomes avec Ubuntu 18.04 sur lesquels ils pourront installer et tester chacun leurs différents programmes.
Paul télécharge une image Docker Ubuntu 18.04 sur le système (
docker pull ubuntu:18.04), avec laquelle il peut créer autant de containers qu’il le souhaite (docker create -t -i --name John ubuntu:18.04 bashetdocker create -t -i --name Yoko ubuntu:18.04 bash).John peut ensuite se connecter de façon interactive à son container avec la commande
docker start -a -i John, et installer/tester tout ce qu’il souhaite.S’il veut partager ses résultats avec Yoko, il peut exporter son container (
docker export John > John_export.tar) et le transmettre à Yoko qui pourra l’importer et exécuter son contenu à l’identique.
Une des forces de Docker est qu’il est également possible de définir ses propres images grâce à un fichier Dockerfile écrit dans un langage propre à Docker. Il est ainsi possible d’expliciter au sein d’un seul fichier toutes les dépendances et les variables d’environnements nécessaires pour construire une image puis un container qui permettra à quelqu’un d’extérieur d’exécuter quasiment4 à coup sûr le programme.
On comprend bien l’intérêt que peut avoir cette technologie pour palier aux problèmes posés par l’absence de reproductibilité computationnelle de bien des publications en informatique (Colberg, 2016), mais également en sciences sociales (Marwick, 2017, Rey-Coyrehourcq 2017, Angus 2015, etc.).
Si l’usage de Docker n’a en soit rien d’exceptionnel compte tenu de sa banalité d’usage en informatique, il y a encore peu d’usage et/ou de formations à cette technologie en géographie. Avec cette formation, nous esperons aussi faire progresser la connaissance de ces outils, avec la mise à disposition des programmes documentés, sous licences Gplv3, avec un fichier Dockerfile permettant de construire l’image, puis le container qui permet d’exécuter une version autonome du script de collecte sur un ordinateur local ou sur un serveur (Rey-Coyrehourcq, 2019b).
Reprise de contenu existant, very WIP
Notes de bas de page
Voir le sondage annuel de stackoverflow : https://insights.stackoverflow.com/survey/2019↩︎
Un paquet qui contient toutes les dépendances, les configurations, les informations permettant ensuite d’en dériver des containers qui à la différence de l’image sont exécutables.↩︎
En effet, même si Docker donne l’impression d’offrir au travers des containers un système complètement autonome isolé, ce n’est qu’une impression. Docker offre un environnement moins isolé qu’une machine virtuelle.↩︎
Nous avons volontairement écrit quasiment car si Docker permet certe de résoudre une partie des problèmes liés à la reproductibilité, il ne les résoud malheureusement pas tous. Des systèmes plus perfectionnés, comme les systèmes de packages/OS type Guix ou Nix, mais le coût d’entrée est elevé, y compris pour un public d’informaticien.e.s.↩︎
