Zoo maritime du Bas-Saint-Laurent. Comment trois époques et sept prestataires ont bâti le bordel actuel, et pourquoi Docker en est la seule sortie viable.
Scénario du TP final - Dockers et scripts
Trois époques d'investissement
Comment on en est arrivé là
01
2010 - 2015
L'âge doré, l'ouverture
À l'ouverture du zoo, l'institution dispose d'un budget conséquent. On achète du matériel sérieux : tours bureau pleines pour l'administration, un PC complet pour la borne d'accueil, des laptops Linux Mint pour la salle éducative. Un studio créatif local livre le site vitrine en PHP. Les premiers stagiaires Cégep en informatique produisent des pages HTML simples pour les annonces. Les bénévoles artistes du dimanche fabriquent de petits jeux interactifs avec p5.js pour les enfants.
Tours PC + Ubuntu 18.04PHP / FlatPressHTML statiqueJeux p5.js
02
2016 - 2021
Le resserrement budgétaire
Les subventions diminuent. On ne remplace plus le matériel, on l'entretient avec les moyens du bord. Une nouvelle génération de biologistes arrive, autodidactes en programmation. Ils écrivent leurs propres scripts Python pour traiter les observations, calculer les corridors de migration, analyser les données de capteurs. Les plus chevronnés bâtissent même des outils d'analyse en C++ avec Qt pour le poste de laboratoire. Les stagiaires scientifiques de l'UQAR utilisent ces outils, en demandent toujours plus, parfois en bricolent eux-mêmes. Le vieux site web reste en place, on n'y touche plus de peur que ça casse.
Aucun nouveau matérielScripts PythonC++ / QtDocumentation manquante
03
2022 - aujourd'hui
Le virage muséologique par écosystèmes
Une nouvelle direction scientifique réoriente le zoo vers un concept hybride : musée par parcours croisé avec biodôme par écosystème. Quatre pavillons écosystèmes ouvrent successivement (marin, forestier, pollinisateurs et jardins, oiseaux migrateurs). Pour ouvrir vite et sans casser la banque, on adopte la stratégie petit matériel ARM bon marché : Raspberry Pi et mini-PC dans chaque pavillon, OS Linux léger. Une agence web moderne est mandatée pour développer les apps interactives en React, Vite et Next.js qui tourneront sur ces bornes.
Deux générations de matériel, cinq stacks de prestataires, sept distributions Linux différentes, aucune documentation centralisée. Aucun budget pour uniformiser. La seule sortie viable est une couche d'abstraction commune : Docker. C'est précisément ce qu'on apprend à mettre en place dans ce TP final.
Les personnages du bordel
Sept profils, sept stacks, zéro coordination
Le studio créatif local
Âge doré · 2010-2015
Artisan web vétéran, fier de son savoir-faire. Aime le PHP qui tourne sur n'importe quel hébergement. A livré le site vitrine principal et plusieurs sites évènementiels.
Livre du PHP / FlatPress
Stagiaires débutants en informatique
Âge doré · 2010-2015
Tout premiers stagiaires, encore en initiation au web. Découvrent HTML et CSS pendant leur stage. Faisaient des pages simples pour les annonces et infos pratiques. Boutons mal alignés, fautes d'orthographe charmantes, code copié-collé de tutoriels Geocities.
Livre du HTML statique
Bénévoles artistes
Âge doré · 2010-2015
Créatifs du dimanche, peintres et illustrateurs. Ont fabriqué de petits jeux interactifs avec p5.js pour amuser les enfants dans la salle éducative. Code coloré, peu structuré, charmant.
Livre des jeux p5.js
Biologistes autodidactes
Resserrement · 2016-2021
Scientifiques de terrain, bottes boueuses, ont appris à coder tout seuls pour résoudre leurs propres problèmes. Scripts Python pour traiter les observations et les données de capteurs. Quelques-uns plus chevronnés ont bâti des outils d'analyse en C++ avec Qt pour le poste de laboratoire (microscopie, instrumentation).
Livre du Python et du C++ / Qt
Stagiaires scientifiques UQAR
Resserrement · 2016-2021
Étudiants en biologie, blouse blanche le matin, bottes l'après-midi. Utilisent les outils Python des biologistes, en demandent toujours plus, en bricolent parfois eux-mêmes. Pas de coordination.
Bricolent du Python
L'agence web moderne
Virage écosystèmes · 2022+
Jeunes pros urbains, MacBook et café spécialité, slogans startup. Livrent des apps en Next.js, React, Vite. Build moderne, CI/CD, lighthouse 100. Mais ne savent pas tester sur Raspberry Pi ARM.
Livre du Next.js / React
L'équipe TI (vous)
Aujourd'hui
Casque audio en permanence, plusieurs cafés à la fois. Hérite de tout : sept stacks, sept distros Linux, aucune documentation. Mission : déployer le tout uniformément, sauvegarder les données, surveiller les services.
Doit faire tourner le bordel
Cohérences obtenues "gratuitement"
Chaque techno présente dans le parc est expliquée par sa génération d'origine. Rien d'aléatoire, tout est conséquence narrative.
Tours PC + Ubuntu 18.04 / Fedora
->
matériel acheté à l'âge d'or, qu'on ne remplace plus faute de budget
PHP / FlatPress
->
livraison du studio créatif des années 2010, techno mature et stable
Scripts Python (sans framework web)
->
outils écrits par les biologistes autodidactes pour traiter données et observations
C++ avec Qt
->
outils de laboratoire (microscopie, instrumentation) bâtis par les biologistes plus chevronnés
Raspberry Pi + Alpine + ARM
->
stratégie économique de la phase virage écosystèmes
Next.js / React / Vite
->
livraison récente de l'agence web moderne mandatée pour les bornes
HTML statique + p5.js
->
bénévoles et stagiaires d'autrefois, code encore en service
"
Principe directeur de la direction scientifique
On ne peut pas se permettre, dans une installation où se croisent la rigueur scientifique et la vulgarisation grand public, de tuer les élans créatifs en imposant des langages ou des frameworks uniformes. On souhaite accueillir la diversité.
La sortie de crise
Docker comme couche d'abstraction commune
L'équipe TI ne peut ni uniformiser le matériel (pas de budget) ni demander aux anciens prestataires de refaire leur travail dans une seule techno (cela tuerait la diversité que la direction veut préserver). La seule voie réaliste, qui respecte à la fois les contraintes budgétaires et le principe directeur d'accueil de la diversité : emballer chaque livraison dans un container Docker, et laisser les bornes hétérogènes exécuter ces containers sans savoir ce qu'il y a dedans. C'est exactement ce que ce TP final vous apprend à faire.