C’est l’automne, c’est (encore) la Technozaure de Lille

1

Les arbres se colorent, et avec l’automne qui arrive, Lille organise son technozaure de rentrée. Le technozaure, c’est une conférence interne dédiée aux consultants de Zenika. De quoi a-t-on parlé cet automne à Lille ?

Juju l’Office Manager : c’est quoi son taf ? (Julien Hespel)

Dans une entreprise comme Zenika, l’office manager a un travail varié et somme toute assez complexe. Mais Office Manager, ça veut dire quoi ?

Ça veut dire l’intendance (locaux, parking, nourriture et autres), l’accueil des externes à la porte ou au téléphone, l’accueil des nouveaux arrivants, la compta et les budgets (parce qu’il faut bien prévoir un budget pour nos locaux), l’organisation des événements (encore en rapport avec les locaux), le suivi des formations, en lien avec l’équipe parisienne et pour l’intendance, le relais RH, le relais ops (bientôt, c’est Julien qui s’occupera de gérer nos déplacements), et enfin un peu d’assistance commerciale.

Evidemment, Julien n’est pas un super-héros. Il a besoin de notre aide. Par exemple, il vaut mieux prévoir ses voyages un peu à l’avance.

 

AGC, l’ordinateur du projet Apollo 11 (Javier Linan Manzaneda)

Les ordinateurs de l’époque sont des monstres en terme de gabarit.

AGC pour Apollo Guidance Computer. Son seul objectif est d’envoyer l’homme sur la Lune. C’est un ordinateur fonctionnant à 1 MHz avec 2K W de RAM, avec des mots de 15 bits.

Ça n’est pas un ordinateur généraliste : le programme est directement écrit dans le matériel, sans OS ni rien. L’ordinateur a été conçu au MIT et construit par Raytheon.

À l’origine, c’est IBM qui devait le construire, mais le MIT avait l’expérience du guidage inertiel de missiles.

Dans Saturn V, il y avait un ordinateur à chaque étage de la fusée, et deux instances AGC, une dans la capsule et l’autre dans l’atterrisseur.

Et là, Javier nous bruite à la bouche une mission Apollo. Et pour récapituler, la mission n’est pas facile.

Pour mesurer la position, il y a dans la capsule un gyroscope, l’IMU (unité de mesure inertielle), qui doit être périodiquement recalibré à partir de la position des étoiles. Avec cet IMU, on peut piloter les réacteurs de positionnement de la capsule. Et donc, il faut réaligner la position avec un sextant. En fait, le sextant n’était pas vraiment utilisé, et la position était obtenue à partir des communications avec le réseau de radiotélescopes terrestres.

L’ordinateur utilise une interface innovante : le DSKY qui permettait d’entrer des instructions avec verbes et mots.

L’AGC avait un processeur à 36 instructions, couvrant l’ensemble des usages courants.

La mémoire contenait 4096 mots, avec une RAM couvrant les 400 premiers mots et une ROM contenant le reste …

La RAM et la ROM sont paginées.

L’ordinateur était facilement démontable. Et était composé de plusieurs tiroirs contenant les différents circuits. Chacun est constitué d’un seul type de circuit intégré : des portes NAND à trois portes.

La mémoire morte était une mémoire à tores magnétiques destructive.

La RAM était une mémoire à fils, pour laquelle il fallait tricoter les fils pour définir les bits, hyper fastidieux pour saisir les données.

Le code source est disponible sur GitHub, mais n’est pas forcément très intéressant parce qu’extrêmement spécifique.

 

Engagement, Identité et Idiocratie (Matthieu Salikhov et Nicolas Delsaux)

Dans Idiocracy, les idiots ont beaucoup d’enfants mais les intellos assez peu. Donc la population devient de plus en plus bête.

Selon les époques, l’intelligence a des significations différentes.

Durant l’antiquité, c’est la culture générale qui en tient  lieu. Au Moyen âge, il faut lire et interpréter la bible. Au XXème siècle, l’intelligence est réduite au QI. Au XXIème, il y a différentes formes d’intelligence. C’est aussi ce que montre Simon Sinek avec les différents cerveaux selon l’activité.

 

Qu’est-ce qui améliore votre intelligence ? Le regret, le doute, la curiosité.

Qu’est-ce qui inhibe votre intelligence ? La peur, la satisfaction, l’indignation.

 

Des business models se sont montés sur la réaction des gens face à ce qu’ils proposent

Twitter, Youtube

→ les éléments présentés sont proposés pour faire réagir et donc inciter à rester et continuer à regarder, lire…

→ les éléments présentés ne sont pas proposés pour faire réfléchir et nous faire grandir

En tant que dev, on a une responsabilité dans le devenir de la société et des utilisateurs de nos applications. Nous avons à réfléchir sur notre participation à des projets qui pourraient influencer les masses.

 

Rex Gravitee par David Brassely

David implémente à sa sauce le programming motherfucker. Il est aussi le CTO de GraviteeSource, la société des core commiters Gravitee. Ils fournissent formation, expertise…

Gravitee est une API gateway, mais qui fournit d’autres services, orientés vers les grands comptes (qui ont très rapidement adopté la solution).

Dans Gravitee Platform, il y a

  • une API gateway qui expose des services
  • un developer portal qui fournit la documentation des services exposés (qui ont été un peu perdus lors du passage des services SOAP aux services REST)
  • des analytics sur les services exposés

Une nouvelle version de Gravitee sort tous les mois, avec deux versions majeures (LTS) par an.

Depuis le début, Gravitee est open-source, et ça n’a pas vraiment été une question pour l’équipe de développement. D’abord, parce que l’équipe y croyait. Ensuite parce que ça permet facilement l’extension de la plateforme. Mais aussi parce que l’open-source permet plus facilement de rentrer chez les clients. Enfin parce que ça permet facilement d’avoir plus d’utilisateurs, et donc plus de contextes différents, plus de feedback qui permettent de renforcer la qualité de la plateforme.

En tant qu’entreprise, ça n’est pas forcément facile. Parce qu’il faut générer des revenus, ce qui n’est pas facile quand le produit est “gratuit”.

Techniquement, Gravitee est entièrement basé sur Java. Et 60% de la plateforme est basé sur Vert.x (serveur/client HTTP, résolution DNS, bus d’événements). Et une autre partie repose sur Spring (juste l’injection de dépendances).

Pour l’anecdote, certains utilisateurs de Gravitee s’en servent comme plateforme de streaming video …

En termes de déploiement, on peut facilement implémenter une séparation entre accès public et accès privé via du sharding. On peut aussi faire du déploiement multi datacenter de la même manière ou encore du déploiement hybride avec une partie des API hébergées dans le cloud, et l’autre dans un datacenter. Et même du déploiement sidecar, comme dans Kubernetes.

 

Sel ou Poivre : DEV, OPS, ou les deux ?  (Sébastien Nahelou)

Pour nous relancer, Sébastien nous propose un kahoot à base de citations de dévs, d’ops, de devops, ou pas. Évidemment, c’est Gwen qui gagne à la fin 

 

Cachez ce Dockerfile que je ne saurais voir (Nicolas Lassalle)

Nicolas commence par un rapide retour sur la manière dont on construit et exécute une image Docker.

Comment s’exécute un conteneur ? Via le démon Docker, qui sert à toutes les images. Et surtout, qui tourne en tant que root. C’est inutile pour construire les images, et c’est un risque de sécurité évident. 

En plus, pour pouvoir travailler sur notre dossier courant, il faut en envoyer le contenu au daemon, ce qui est lourd. Évidemment, on peut ne pas tout envoyer en ajoutant un fichier .dockerignore, qui pose lui aussi problème.

Par ailleurs, les calques sont immutables, et servent en fait de cache, ce qui n’est pas fou.

Quand on utilise la commande RUN, on crée des calques qui ne sont pas forcément maîtrisés. Typiquement, supprimer un fichier dans un calque n’a aucune influence sur les calques parent, et est donc à peu près inutile en termes d’optimisation d’espace.

Dans le même ordre d’idées, CMD selon la forme, peut lancer un shell qui lancera l’application, et ne recevra donc pas les signaux Linux, on démarrer directement l’exécutable, mais sans le PATH

Et ENTRYPOINT n’est pas vraiment mieux, puisqu’il y a là aussi deux formes aux propriétés différentes.

Pour éviter tout ça, on peut utiliser d’autres outils que Docker, par exemple Buildah (qui va avec podman ou skopeo). Buildah s’installe bien dans les distributions RedHat (normal, c’est développé par RedHat), mais pas ailleurs, il n’y a pas de démon, et donc pas besoin de root, et ça ne crée qu’un seul calque. Et évidemment, on peut builder des images OCI avec. On peut les builder de manière compatible avec Docker, mais on peut aussi l’utiliser sans Dockerfile. Pour ça, on aura des commandes buildah from, buildah add, buildah copy, buildah run et buildah commit (pour commiter l’image produite).

 

L’agile par la peur (Matthieu Salikhov)

Quand l’agile a démarré, les créateurs étaient poussés par l’enthousiasme. Résultat, les grandes entreprises sont passées à l’agile, poussées par cette peur. Les entreprises ont donc choisi la facilité avec Scrum qui est très facilement compréhensible (le guide fait 15 pages), et qui est surtout la méthode la plus simple et la plus facilement adaptable à ces groupes (par rapport à XP, Prince, Cristal). Et là-dessus est arrivé SaFE.

Aujourd’hui, Scrum et SaFE sont des solutions de pure fainéantise intellectuelle. Sans doute parce que, dans le top management, on est avant tout là pour conserver son poste, son pouvoir politique, son influence… à cause de… (vous l’aurez deviné) la peur.

Aujourd’hui, l’agile a atteint son pic, et sans doute que d’ici dix ans, d’autres personnes créeront une nouvelle méthode qui marchera, parce que ceux qui l’appliqueront seront motivés. Et à nouveau, cette méthode sera dévoyée par de grandes entreprises qui réagiront par la peur.

 

Sécurisez votre application avec WebAuthn (Arnaud Locquet)

Pourquoi WebAuth ? Parce que les mots de passe exposés en public, c’est moyen. C’est pour éviter ça qu’existe le site haveibeenpwned.com.

Du coup, si on revient à l’authentification, des bons moyens d’authentification, c’est 

  • ce qu’on sait (un mot de passe)
  • ce qu’on possède (une clé USB)
  • ce qu’on est (l’empreinte digitale)

On peut aussi utiliser des mots de passe à usage unique (OTP). Pour éviter les failles de l’envoi des mots de passe par SMS, on peut utiliser des générateurs de mot de passe (comme FreeOTP).

Enfin, on peut utiliser WebAuthn, qui est un standard du groupe FIDO2 du W3C. Ça fonctionne en lien avec une clé hardware (comme une Yubikey, Titan, Solokey ou un téléphone Android) qui fournit les mots de passe asymétriques.

Avec ça, on peut faire de la double authentification, ou de l’authentification sans mot de passe.

Et on passe à la démo .. de l’authentification via webauthn, avant d’enchaîner avec une démo de realm Keycloak utilisant Webauthn.

 

Github Actions : Un concurrent sérieux ? (Jeffrey Duroyon)

Avec GitHub Actions, on peut mettre Jenkins dans GitHub. Ca existe depuis mars, et c’est du YAML. Et Jeffrey va donc nous montrer un processus simple : du build, du test, du déploiement sur différents environnements selon la branche.

Une action est donc un ensemble de jobs, déclenché par un événement GitHub (push, release…). Les différents jobs s’exécutent théoriquement en parallèle, mais on peut les chaîner au besoin. Dans un job, on exécute une suite d’actions. Chacune des actions est une image Docker qui sera téléchargée à l’exécution. Si des jobs s’exécutent en parallèle, chacun d’entre eux doit faire un checkout du code.

On peut écrire soi-même des actions de deux façons : du Nodejs ou du Docker. Chacune des actions peut avoir des entrées et des sorties, et est décrite par un nom, le tout dans un fichier action.yaml.

 

Code moi un python (Olivier Huber)

L’éducation nationale a récemment choisi de former certains enseignants pour apprendre le Python aux lycéens. Mais évidemment, ils ont choisi de ne former que quelques enseignants par académie. Du coup, comme Olivier était déjà passé dans son lycée, il a dérivé code-moi un mouton en code-moi un python pour former les enseignants au Python.

Évidemment, quand il a présenté le sujet aux enseignants, il y a eu des divergences sur les usages entre profs de maths et de physique.

Olivier a donc lancé un exemple de code Python pour appliquer les forces sur des boules de billard. Et les aspects relationnels sont aussi importants  que le développement pour lancer les sessions.

Tout le code se trouve sur https://github.com/Zenika/code-moi-un-python

Dans les aspects utiles à retenir, il faut leur faire des exemples avec matplotlib pour les familiariser avec l’affichage, et évidemment travailler en CSV pour intégrer les données des appareils de mesure.

 

Wasmer : la VM du futur ? (Arnaud Locquet et Logan HAUSPIE)

Wasmer, c’est du WebAssembly côté serveur. Mais webassembly, keskecé ? C’est une solution pour faire tourner du code natif dans le navigateur. C’est théoriquement plus performant, et surtout ça permet d’exécuter du code coûteux sur le poste client, donc c’est plus efficace parce que plus réparti. Et enfin, ça permet de porter du code d’un autre langage dans le navigateur. Ca crée un binaire léger, sécurisé (parce qu’il s’exécute dans le process et la mémoire du navigateur).

Ca n’est pas la première tentative de faire du binaire dans le navigateur : Flash, ActiveX, Java, Silverlight, …

C’est le moment de la première démo avec Epic Zen Garden, Doom, jqkunfu.com, et la suite de Fibonacci implémentée en JS, C++ et Rust.

Côté backend, ça donne quoi ?

D’abord, Solomon Hykes qui dit le plus grand bien de Wasm côté back-end.

En fait, ça a les avantages du WASM client : léger, portable, et sécurisé.

Mais il manque des choses dans WASM. Par exemple, il n’y a pas d’interface OS (comme la lecture/écriture de fichiers). Du coup, Mozilla a créé WASI pour définir les interfaces système. Ca implique évidemment d’avoir de bonnes abstractions. Il y a aujourd’hui 45 interfaces système. Et grâce à ça, normalement, la sécurité du programme est à peu près assurée.

Il y a actuellement plusieurs implémentations WASI : Lucet, Wasmtime, polyfill, Wasmer et Wasmer.js. La suite de la démo se fera avec Wasmer.

Parlons compilation … Globalement, pour arriver à du WASM exécutable côté serveur, on passe par

  • une compilation WASM
  • une transformation en module WASM
  • une compilation machine
  • une transformation WASI ou Emscriptem

Et finalement, on l’exécute “facilement” avec wasmer run fibo.wasm 10. Et ça marche sur MacOS aussi bien que sur Windows.

En termes de performances, on est à peu près équivalent aux performances natives (selon les langages).

Il y a également un WebAssembly Package Manager pour installer, exécuter et publier des packages wasm.

A noter que le runtime Wasmer est intégrable dans une application (c’est ce que fait Postgres). Et Arnaud se lance dans une démo de code Rust qui appelle du C++ compilé en Wasm. Et pour continuer, wasmer-js est un portage Javascript de Wasmer pour exécuter du code natif dans le navigateur (comme par exemple Nginx ou sqlite). Et avec ça, sur http://webassembly.sh, on peut lancer quickjs pour exécuter du Javascript dans le navigateur … Fou, non ?

Par contre, évidement, c’est très loin d’être mature ou utilisé. Et comme c’est peu mature, il y a parfois des surprises.

 

Maesh : Il n’y a pas que Istio dans la vie… (Aymeric Defossez)

Maesh est un service mesh développé par Containous (ceux de Traefik).

Mais c’est quoi un service mesh ? Un moyen de savoir ce qu’il se passe dans un cluster Kubernetes. Ca fournit de l’observabilité, du contrôle, de la sécurité, … Il y a quelques concurrents : Istio, linkerd, …

Maesh est plus léger que les autres. Pourquoi ?

Istio, par exemple, installe dans vos pods des sidekicks pour intercepter l’ensemble du trafic réseau.

Maesh, au contraire, se contente d’installer un traefik dans chaque noeud du cluster Kubernetes.

Ca fournit l’observabilité (Prometheus, Grafana, Jaeger), le circuit breaker, et d’autres petites facilités.

En termes de fonctionnement, c‘est assez simple : Maesh patche le DNS de Kubernetes pour ajouter une règle routant tout le monde vers .maesh.

 

Tekton kubernetes-native CI/CD building blocks (par Laëtitia Diverchy et Pierre Malherbe)

Tekton est un projet de la CD Foundation. C’est surtout un projet portant la philosophie cloud native de Google dans le monde Kubernetes. Il vise à être reproductible. Et il se base sur la déclaration des composants qu’on va pouvoir réutiliser dans des pipelines. Actuellement, on est encore en Alpha … Donc tout peut changer de façon désastreuse.

Dans Tekton, on met des tâches dans des pipelines qui vont s’exécuter dans des PipelineRun qui utiliseront des PipelineResource (dépôts Git, registries, …).

Et c’est le moment de la démo !

Laetitia installe donc Tekton et son dashboard dans un cluster GKE.

Et ils construisent ensuite une application Python avec Kaniko et Tekton.

Bon, clairement, c’est pas facilement facile, surtout parce que c’est loin d’être mature. Le pire, c’est qu’il n’y a pas de hooks …

 

Donne moi ta CB, Je te dirai qui tu es ! (Mickaël Boixière et Antoine Philippe)

Antoine commence par une rapide histoire de l’argent pour arriver jusqu’à la carte de paiement à puce, brevetée en 1974.

Le premier prototype était … assez différent.

Elle s’est démocratisée à partir de 1992, et son premier usage était la carte France Télécom (dans les cabines téléphoniques) !

Sur une carte bleue, beaucoup de choses sont normalisées : la taille, la position du texte, la position de la puce, …

Dans la puce, il y a un CPU, un co-processeur cryptographique.

Un achat se passe, au niveau de la puce, comme n’importe quel échange réseau : initialisation de la communication, négociation du protocole, sélection de l’application utilisée. Il faut noter que le code PIN est chiffré lors de son échange entre la carte et le terminal. Et ensuite, en terme de transaction, c’est sacrément complexe. Côté carte, tout ça est géré par du code Java ! Bon, du Java qui date probablement de 1997 … Et surtout du Java sauce JCVM, ce qui signifie que la VM n’a pas de garbage collector, pas non plus de ClassLoader, pas de types complexes. Évidemment, il y a une version plus récente, mais

Partagez cet article.

A propos de l'auteur

Un commentaire

Ajouter un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.