Le tremplin permet à des professionnels de l’informatique qui n’ont jamais donné de conférence de se lancer auprès d’un public bienveillant. Cloud Nord l’organise cette année avec le support de Julien Topçu
Devenez développeur senior en seulement 20 minutes
Claude, avec lequel j’ai partagé un open-space il y a quelques années, est tech-lead depuis 6 ans pour Equité. En général, il faut une dizaine d’année pour développer une seniorité dans le code.
Claude va nous parler de passion, et de partage.
La passion
Avec la passion viennent deux choses qui vont être utiles : le fun, et l’envie d’investir du temps. Par exemple, Claude a commencé par le DOS, le Pascal, le DOS, il a aussi fait du Scala, du Python, de la 3D. Ca lui a apporté la compréhension de la diversité des langages et des contextes. C’est extrêmement utile.
Evidement, comme tout le monde, Claude fait du Java en entreprise. Mais en-dehors, il fait autre chose. Claude a par exemple essayé d’écrire son propre éditeur (ça n’a pas vraiment marché), mais il a aussi essayé des tonnes d’outils divers et variés. Il a aussi essayé de faire son propre système d’authentification … troué en 5 minutes. Donc autant ne pas réinventer la roue.
Et par ailleurs, n’oubliez pas les bons principes : YAGNI (you ain’t gonna need it), KISS (Keep It Simple, Stupid!), DRY (don’t repeat yourself).
Le partage
Partager permet d’apprendre beaucoup. Vous pouvez par exemple créer des projets avec d’autres personnes. Ca vous oblige à produire un code lisible, compréhensible et maintenable. Ca vous oblige aussi à lire du code.
N’hésitez pas non plus à partager aux code reviews, ca vous aidera à voir d’autres façons faire.
Dans le même ordre d’idées, faites du TDD, et pensez aux tests croisés (tester le code écrit par quelqu’un d’autre).
Le partage, c’est aussi participer aux communautés locales, comme les conférences et les meetups. Si vous préférez coder participez aux coding dojos.
Conclusion
En fait, tout ça se retrouve dans le software craftmanship.
Jib – Osez le dockerless pour vos projets Java
Ludovic aime Docker, mais pas le Dockerfile. Parce que c’est inefficace, et que le Dockerfile introduit plein de failles. En plus, si on prend le même code source et qu’on lance deux fois la construction de l’image, on a deux signatures différentes.
Donc Ludovic va nous montrer pourquoi Jib est bien. Jib permet de construire des images Docker optimisées pour les projets Java avec trois objectifs
- Simplicité (ça s’intègre bien dans l’écosystème)
- Rapidité (l’application est séparée en couches optimisées)
- Reproductibilité (le même code source génère la même image avec des layers strictement identiques).
Gestion des layers
Classiquement, dans une image Docker, on builde un fat jar, et quand on change une ligne de code, ce fat jar est reconstruit. Dans Jib, il y a un layer pour les dépendances, un layer pour les ressources, et enfin un layer pour les classes de notre application. Il est bien plus léger, et change bien moins souvent.
Démo !
Ludovic compile l’image dans son build maven : mvn clean compile jib:build. Ca va vite (8 secondes pour son image élémentaire). Et en plus, il n’a pas besoin de Docker sur sa machine !
Docker sans Docker
En fait, Jib construit de lui-même une image OCI et l’envoie dans la registry. OCI ? C’est le standard des images Docker, qui est en fait une archive contenant la structure de notre image Docker.
Comment ça marche ?
Le plugin Jib contient en fait toute la configuration de création de l’image. Il permet même de construire l’image avec le démon Docker. Attention, petite astuce : pour s’assurer que le même code source crée la même image, Jib met toujours comme date de modification des fichiers le 1er janvier 1970, ça permet la stabilité dans l’id des images Docker.
Retour d’expérience
Jib est utilisé dans le domaine de Leroy-Merlin où travaille Ludovic, et il n’a pas rencontré de problèmes particuliers.
Limites de Jib
- C’est moins flexible que Docker (on ne peut pas faire de RUN)
- C’est uniquement disponible pour du Java
- Certaines opérations comme le renommage de fichier sont difficiles
- On ne peut pas faire de rebase d’image
Sécuriser les applications Kubernetes avec Vault
Khaled et Mohamad vont nous parler de la sécurisation des secrets (clés d’API, mots de passe) dans Kubernetes (K8s) avec Vault.
Commençons tout de suite avec une démo … Il y a donc un cluster K8s avec un frontend, un backend, une base de données Postgres. Khaled a changé le mot de passe de la base de données du cluster sans prévenir Mohamad. Et leur démo échoue (mais ça fait partie du spectacle).
Le secret manager set à partager ces secrets en toute sécurité.K8s fournit un secret manager qui permt de stocker des valeurs chiffrées en Base64. Bon, ce secret manager n’est pas terrible.
SOPS fournit un secret manager un peu meilleur, mais qui n’évite pas certains problèmes.
Vault a lancé en juin 2023 un opérateur K8s apportant à K8s les capacités de Vault (qui sont déja particulièrement avancées).
Vault s’intègre dans K8s de plusieurs manières.Soit avec le Vault Injector (qui envoie les données dans le pod de l’application à son démarrage). Soit avec le vault Operator qui mappe les secrets Vault sur les secrets K8s. Celui-ci fonctionne avec une CRD (custom resource definition) qui permet de définir comment les secrets sont liés.Ces deux solutions fonctionnent avec l’ensemble des fournisseurs de secrets de Vault (KVv1, KVv2, database secret engine, …)
Démo
La démo nous montre de façon claire que Vault permet de stocker le mot de passe de façon efficace et sécurisée.
Vers un monde numérique sobre et éco-responsable
Pourquoi
Le secteur du numérique produit déja plus de pollution que l’aviation, et pourrait rattraper prochainement la mode. Cet impact est en grande partie dû au matériel : en 2010, il y avait 1 milliard d’appareils connectés (montres, objets connectés). En 2025, on pourrait passer à 48 milliards d’appareils.Il serait donc bien de conserver les appareils le plus longtemps possible, pour limiter l’impact de ce coût de fabrication. Pour ça, il faut produire du logiciel efficace.
Les principes du green coding
D’abord, il faut penser à l’efficience du code ou de l’algorithme. Ca se fait bien avec de bons algorithmes, avec des structures de données adaptées.Thiermo donne l’exemple du calcul de factoriel où le code récursif prend plus de mémoire que le code itératif. Pour Thiermo, le bon sens et l’agilité doivent nous aider à développer des solutions efficientes en évitant de repartir de zéro à chaque fois.
Dans les principes de green coding, on optimise aussi l’utilisation des ressources en mémoire (on garde les choses en mémoire juste le temps nécessaire), la communication réseau, l’accès aux ressources.
A ce propos, il faut aussi réfléchir à la egstion durable des données. Thiermo donne deux exemples significatifs :
- la déduplication réduit souvent fortement les besoins en capacité de stockage
- La mise en cache optimise la vitesse de lecture des données
Enfin, et surtout, la gestion de l’énergie est un aspect important. Réduire l’activité réseau est un premier pas utile. On peut aussi penser à réfléchir à l’usage des modes d’économie d’énergie.
Plan d’attaque
Des outils comme ecocode (intégrable dans Sonar) LightHouse (fournit des mesures de qualité des sites web), EcoIndex (fournit le même type de mesure que LightHouse), vous permettent de produire des mesures utiles. On peut aussi voir du côté d’Impact Framework ou de Kepler (K8s Efficiency Power Level Exporter – qui permet de voir comment un datacenter utilise l’énergie).
A la découverte de dependency-track
Souvenez-vous de log4shell : juste avant Noël, il a fallu faire le tour de toutes les applications Java pour trouver celles qui étaient atteintes. Sans SCA, c’est pas gagné … Chez Worldline, à l’époque, ils utilisaient dependency-track (open-source) qui les a bien aidé.
Celui-ci fournit pour chaque application la liste des dépendances et de leurs CVE. On peut chercher par application, mais aussi par vulnérabilité. Et dependency-track fournit par ailleurs des mécanismes de notification pour envoyer des webhooks ou créer des tickets JIRA lorsqu’une vulnérabilité apparaît.
On peut également mettre un status pour chaque CVE afin de voir comment elle est traitée dans chaque application (ça ressemble à un bug tracker intégré).
C’est heureusement assez simple à mettre en place : pour peu que l’application fournisse un BOM (notament grâce à Cyclone DX – disponible dans un plugin maven), dependency-track saura la scanner.
Sciences et informatique – ensemble, brisons les barrières
Pour Samira et Hayet (dont j’ai animé une partie de la reconversion), les sciences comme les maths et la physique sont souvent vues de loin par les informaticiens. C’est dommage, parce qu’il y a en fait beaucoup de liens entre ces différents domaines.
Quand elles sont arrivées dans l’informatique, elles ont découvert un certain nombre d’idées reçues.
L’informatique ne serait pas vraiment une science
Les sciences dures n’auraient pas de rapport avec l’informatique
L’informatique ne serait qu’un outil pour les scientifiques
Tout cela est évidement faux et démontré par des chiffres.
Si on remonte dans l’histoire, on peut commencer par parler d’Ada Lovelace, pionnière des algorithmes (calcul des nombres de Bernoulli, définition des boucles). On peut aussi parler de Chien-Shiung Wu qui a travaillé sur l’interaction faible, et a permis pas mal d’innovations dans le domaine des ordinateurs quantiques.Par ailleurs, les éléments de recherche en physique et mathématique peuvent créer de sacrées innovations (comme les ordinateurs quantiques, les réseaux de neurones ou les systèmes de modèles météo).