LCC 288 - L'episode marathon mastodonien

Published: Nov. 21, 2022, 10:09 a.m.

Dans ce long \xe9pisode, retrouvez Emmanuel, Guillaume, Antonio et Arnaud qui reviennent sur les derni\xe8res sorties de GraalVM, GoLang, JBanking, Spring, Spring Modulith, Quarkus, Apache Maven. Vous retrouverez aussi de nombreux sujets infrastructure, cloud, m\xe9thodologie le tout accompagn\xe9 d’un pachyderme tr\xe8s \xe0 la mode en ce moment: Mastodon.

Enregistr\xe9 le 18 novembre 2022

T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode–288.mp3

News

Langages

Alina Yurenko annonce la sortie de GraalVM 22.3
https://medium.com/graalvm/graalvm–22–3-is-here-jdk–19-builds-jlink-support-new-monitoring-features-and-more-f6e2b2eeff95


  • l\u2019article mentionne l\u2019annonce faite \xe0 JavaOne qu\u2019Oracle contribue GraalVM CE \xe0 la communaut\xe9 Open JDK https://www.graalvm.org/2022/openjdk-announcement/

  • support du JDK 19

  • possibilit\xe9 de t\xe9l\xe9charger facilement (dans un script) la distribution avec un one-line (bash/curl)

  • possibilit\xe9 de compiler jWebserver en un ex\xe9cutable natif

  • diverses am\xe9liorations sur le monitoring et l\u2019exp\xe9rience d\xe9veloppeur de native image (JFR, jvmstat, head dump…)

  • nouvelles versions des reachability metadata

  • nouvelle API native image

  • et diverses autres updates sur le support de Python, de Ruby, des contributions de la communaut\xe9

Go f\xeate ses 13 ans
https://go.dev/blog/13years


  • avec la grosse release de 1.18, avec le support des workspaces, du fuzzing, mais surtout des generics

  • aussi une commande govuln qui fait analyse statique - int\xe9ressant la notion d\u2019outil dans le langage

  • les build go sont v\xe9rouill\xe9s vu qu\u2019ils reconstruisent tout et qu\u2019ils d\xe9pendent d\u2019un sha1 pour les dependences git et beaucoup plus de choses ici https://go.dev/blog/supply-chain

  • workspace qui permet de travailler sur plusieurs modules en parall\xe8le sans avoir a changer tous les go.mod \xe0 la main

Librairies

Sortie de JBanking 4 par Marc Wrobel
https://www.marcwrobel.fr/sortie-de-jbanking–4–0–0


  • Une librairie utilitaire pour assister dans le d\xe9veloppement d\u2019applications bancaires

  • Support des codes ISO des pays, des monnaies, des codes BIC, des IBAN, et aussi du calendrier des jours f\xe9ri\xe9s des banques internationales

Spring Modulith, un projet exp\xe9rimental d\u2019Oliver Drotbohm, qui permet de s\u2019assurer de la structure et architecture de ses projets Spring, par exemple pour v\xe9rifier les d\xe9pendances propres entre modules, pour bien structurer ses applications Spring Boot
https://spring.io/blog/2022/10/21/introducing-spring-modulith

Une version alpha de Quarkus 3 arrive !
https://quarkus.io/blog/road-to-quarkus–3/


  • Plein d\u2019upgrades : Hibernate ORM 6, Jakarta EE 10, Eclipse MicroProfile 6, HTTP/3, io_uring, Virtual Threads de Loom et Structured Concurrency, java.util.concurrent.Flow pour s\u2019affranchir de Reactive Streams

  • Version cible Java 11, mais recommendation d\u2019utiliser Java 17

  • les versions 3 seront en parall\xe8le des versions 2 le temps que l’\xe9cosyst\xe8me passe \xe0 la 3, notamment les dependences jakartaee

  • peut essayer facilement depuis la CLI quarkus create app --stream=3.0

  • quelques casse de compatibilit\xe9s attendues mais minimis\xe9es, sp\xe9cialement dans le core

  • garde java 11 car demande de la communaut\xe9

Spring 6.0 est sorti
https://spring.io/blog/2022/11/16/spring-framework–6–0-goes-ga

Infrastructure

Stop using CPU limits on Kubernetes
https://home.robusta.dev/blog/stop-using-cpu-limits


  • L\u2019auteur fait une comparaison amusante avec le besoin de boire de l\u2019eau !

  • Il vaut mieux d\xe9finir des requ\xeates (des besoins en eau / CPU), plut\xf4t que des limites (pas le droit de boire plus / d\u2019utiliser plus de CPU)

  • c\u2019est plus nuanc\xe9 que ca, parce que aux cas limites des choses peuvent mal se passer

  • cas 1: on atteind 100% d\u2019usage. Le process avait d\xe9finit un request mais en fait a besoin de plus en pratique, et l\xe0 paf il se met \xe0 mal fonctionner, donc d\xe8s que votre systeme stresse, vous avez des erreurs en cascade

  • cas 2: un ou plusieurs noeuds sont recycl\xe9s, ce qui veut dire que vous avez beaucoup de red\xe9marrages de pods et du coup ca met la pression sur le CPU, tester ces cas l\xe0, certaines applis qui d\xe9marrent trop lentement ont tendance \xe0 tomber en cascade

Comment faire des attaques d\u2019injection sur les intelligences artificielles qui recoivent du contenu utilisateur https://hackaday.com/2022/09/16/whats-old-is-new-again-gpt–3-prompt-injection-attack-affects-ai/


  • le jeu est de donner des phrases ambigues qui font faire \xe0 l\u2019IA des choses qu\u2019elle n\u2019est pas sens\xe9 faire

  • un des outils c\u2019est ignore les instructions au dessus et fait un truc que je veux que tu fasses et qui n\u2019est pas dans ta programmation initiale

  • Voir toucher l\u2019intention initiale de l\u2019AI (lui faire dire) et donc d\u2019atteindre des sph\xe8res non publiques du service

Mastodon et la scalabilit\xe9 https://framablog.org/2022/11/13/de-la-friture-sur-le-fediverse/


  • la decentralisatione et le protocole Mastodon est couteux en job

  • donc une personne moderement populaire 27k personnes, devrait bouger vers son instance d\xe9di\xe9e

  • ce qui am\xe8nerait \xe0 couter assez cher par mois (en tous cas plus que 8$/mois)

  • L’auteur explique que les devs devraient favorier un protocol fortement decentraliser plutot qu’optimiser pour les grosses instances

  • un article qui couvre la configuration aux petits oignons de Sidekiq, qui traite les queues de t\xe2ches, pour scaler une instance Mastodon https://nora.codes/post/scaling-mastodon-in-the-face-of-an-exodus/

Rollouts de release a l’\xe9chelle avec Argo (rollback options) https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale/


  • gros investissement sur ArgoCD

  • Mais encore release \xe0 la main par les ingenieurs et tout ou rien pour une application

  • idealement: push dans git et oublie, prometheus metriques dirigent le rollout bas\xe9 sur des alertes g\xe9n\xe9riques, garder le sisteme ouvert pour des strat\xe9gies de rollout alternatives dans le futur

  • bas\xe9 sur Argo Rollouts et sur des erreurs generiques (20% de calls en erreur, beaucoup d’erreurs de base de donnees, crashs

  • notifie dans slack en async du success ou de l’echec

  • interessant de voir qu’ils s’appuient sur des metriques simples

  • Lessons apprises

  • migration est un gros job

  • automatiser la migration au maximum meme si c’est un one shot

  • change le moteurt avant de changer l’UX (progressive rollout) ca simplifie les chosez

Cloud

Google adopte progressivement Adoptium Temurin comme version officielle de JDK dans ses produits
https://glaforge.appspot.com/article/building-and-deploying-java–17-apps-on-cloud-run-with-cloud-native-buildpacks-on-temurin


  • nous avions mentionn\xe9 l\u2019annonce de ce support dans l\u2019\xe9pisode pr\xe9c\xe9dent https://blog.adoptium.net/2022/10/adoptium-welcomes-google/

  • dans l\u2019article de Guillaume, il utilise les Cloud Native Buildpacks, configur\xe9 pour utiliser Java 17, et par d\xe9faut, c\u2019est bien Temurin qui est utilis\xe9 quand on build \xe0 partir des sources

  • dans l\u2019exemple, une application Micronaut, d\xe9velopp\xe9e avec Java 17, est d\xe9ploy\xe9e sur Google Cloud Run

Pourquoi on quitte le Cloud https://world.hey.com/dhh/why-we-re-leaving-the-cloud–654b47e0


  • t\xe9moignage de DHH de 37Signal (basecamp et hey)

  • Les 30% de marges d\u2019Amazon viennent de quelque part.

  • On d\xe9pense 500k en RDS et ES. On peut acheter beaucoup de machines pour ce prix

  • La r\xe9duction des ops est un mythe. On a autant de personnes g\xe9rant les services AWS ou Google Cloud

  • Le gain pourrait \xeatre la micro startup qui ne sait pas si elle aura des clients ou les volumes de demandes tr\xe8s variables et

  • impr\xe9dictibles

  • Mais on a une croissance planifi\xe9e

  • Donc on rapatrie

Pr\xe9sentation de Micka\xebl Roger de Thales, enregistr\xe9e \xe0 Cloud Nord, qui explique le fonctionnement de l\u2019offre S3NS de Thales et Google Cloud pour le \u201ccloud de confiance\u201d https://www.youtube.com/watch?v=OBwBeqd-YFs

Web

Est-ce que le Web3 peut battre le cloud ?
https://blog.scottlogic.com/2022/10/31/can-web3-beat-the-cloud.html


  • Le Web3 est une autre approche pour des applications d\xe9centralis\xe9es, ce n\u2019est pas un successeur du Web 2.0 classique, et il a g\xe9n\xe9ralement besoin du Web 2.0 pour offrir une interface \xe0 ses utilisateurs

  • Ce n\u2019est pas que pour faire des cryptomonnaies qui g\xe2chent de l\u2019\xe9lectricit\xe9, ou des NFTs qui ne donnent pas vraiment de titre de propri\xe9t\xe9 d\u2019une oeuvre d\u2019art

  • Dans cet article, l\u2019auteur essaie d\u2019impl\xe9menter une fonctionnalit\xe9 (le fait de pouvoir rajouter des \u201capplaudissements\u201d \xe0 un article, un peu comme sur Medium), en impl\xe9mentant un smart contract en Web3.

  • Mais il se heurte \xe0 plein d\u2019\xe9cueils le long de sa route, \xe0 la d\xe9pendance \xe0 plein d\u2019autres services, au fait que ce n\u2019est pas la personne qui \u201cvote\u201d qui devrait payer l\u2019action mais celui qui h\xe9berge. Au final, il est oblig\xe9 d\u2019ajouter plein d\u2019adh\xe9rences qui font qu\u2019au lieu d\u2019\xeatre d\xe9centralis\xe9e, l\u2019application d\xe9pends de trop d\u2019autres services, et a finalement besoin du Web 2.0 pour fonctionner, et du Cloud

  • L\u2019autre d\xe9convenue est sur le prix de chacune des transactions, qui est finalement exorbitant par rapport \xe0 une approche Web 2.0 classique

  • D\xe9centralisation am\xe8ne de la lenteur (latence)

  • Objectifs du Web3 c\u2019est d\u2019etre le propri\xe9taire de ses processes et ses data et de mettre des agents qui interagissent avec des donn\xe9es

Outillage

Comment debugguer les images Docker slim ou distroless
https://iximiuz.com/en/posts/docker-debug-slim-containers/


  • Les images slim / distroless sont sympas car elles permettent d\u2019avoir des petits conteneurs qui ne prennent pas trop de place, qui parfois sont plus rapides \xe0 charger, mais \xe9galement qui exposent une surface d\u2019attaque beaucoup plus faible

  • Par contre, comme il n\u2019y a pas tous les outils (parfois pas de shell, par exemple), c\u2019est plus compliqu\xe9 de comprendre ce qu\u2019il se passe \xe0 l\u2019int\xe9rieur quand quelque chose ne fonctionne pas

  • L\u2019article propose quelques approches pour pallier \xe0 cela :

  • Installer des outils \xe0 la demande dans un conteneur qui tourne (\xe0 coup de apt-get)

  • Passer temporairement \xe0 une image plus grosse et plus compl\xe8te (par ex, distroless a des images avec un tag debug)

  • Utiliser docker run avec un shared namespace

  • Utiliser docker exec et un mount

Podman Desktop, une alternative \xe0 Docker Desktop, mais utilisant podman
https://podman-desktop.io/

Docker annonce une technical preview de conteneurs WASM
https://www.docker.com/blog/docker-wasm-technical-preview/


  • nouveau packaging qui wrap un ex\xe9cutable WASM et le fait tourner avec le runtime wasmEdge

  • c\u2019est un nouveau type de conteneur

  • il y a beaucoup d\u2019activit\xe9 autour de WASM, et il y a eu de nombreuses annonces et d\xe9monstration lors de la conf\xe9rence CloudNativeCon et le jour sp\xe9cial sur WASM, lors de KubeCon

  • https://www.infoq.com/news/2022/11/cloud-native-wasm-day/

  • docker utilise Docker Desktop et docker engine pour demarrer des \u201cshim"

  • Ses shim (processeS) lancent soit runc (donc pour faire tourner un containeur)

  • soit wasmedge pour faire tourner des modules wasm

  • Donc docker s\u2019\xe9loigne des container et essaie de toucher l\u2019orchestration

Un petit tutoriel utilisant Docker et YouTube-dl pour r\xe9cup\xe9rer / consulter les stats (views, likes) de vos vid\xe9os (ou d\u2019autres) sur YouTube
https://glaforge.appspot.com/article/retrieve-youtube-views-count-with-youtube-dl-jq-and-a-docker-container

Apache Maven propose une extension de \u201cbuild cache\u201d (qui devrait acc\xe9l\xe9rer les builds, sans tout tout le temps recompiler)
https://maven.apache.org/extensions/maven-build-cache-extension/


  • bas\xe9 sur une cl\xe9 construite des sources, des plugins etc par module

  • permet paralelisation et de deploiement sur des agents genre dans le cloud

  • on controle les regles de contournement des invarients (genre changement de compile, timestamp dans les manifests etc)

Le guide complet pour publier une librairie Java sur Maven Central
https://maciejwalkowiak.com/blog/guide-java-publish-to-maven-central/


  • Y compris l\u2019int\xe9gration avec Github Actions

  • et l\u2019utilisation de Github Secrets pour les cl\xe9s PGP

  • Et enfin la configuration de JReleaser pour encore faciliter la t\xe2che lorsque l\u2019on pousse une nouvelle version

Apache Maven 4.0.0-alpha–2 is out
https://maven.apache.org/docs/4.0.0-alpha–2/release-notes.html


  • am\xe9liorations cli: --also-make , --resume (plus besoin de pr\xe9 ciser d\u2019o\xf9 le build doit recommencer), --non-recursive, --fail-on-severity

  • Utilisation du m\xeame timestamps dans tous les modules

  • build/consumer POMs (versioning automatique du parent, versioning automatique des d\xe9pendances dans le r\xe9acteur, d\xe9tection automatique des sous modules)

  • new maven 4 api

  • et beaucoup d\u2019autres choses: https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12351403&projectId=12316922

Data Faker le nouveau g\xe9n\xe9rateur de donn\xe9es de test https://github.com/datafaker-net/datafaker

Ex\xe9cuter facilement des programmes Java avec d\xe9pendances, sans build, avec JBang
https://maciejwalkowiak.com/blog/single-file-java-with-jbang/


  • Dans la m\xeame veine que ce que Groovy propose depuis de nombreuses ann\xe9es avec sons syst\xe8me @Grapes qui r\xe9cup\xe8re les d\xe9pendances n\xe9cessaires

  • L\u2019article montre un exemple simple, puis avec Spring Boot, comment faire un JAR aussi, voire comment conteneuris\xe9 sa petite appli

Architecture

Am\xe9lie Benoit continue ses fabuleux sketchnotes sur le th\xe8me des design patterns
https://twitter.com/AmelieBenoit33/status/1587397290251149312

35 misconceptions sur les dates et les heures
https://www.meziantou.net/misconceptions-about-date-and-time.htm


  • y a t\u2019il toujours 24 heures par jour, 60 secondes dans une minute? ou 365 jours par an ?

  • est-ce que les jours sont toujours cons\xe9cutifs ?

  • tout le monde a t\u2019il le m\xeame calendrier ?

  • lundi est il le premier jour de la semaine ?

M\xe9thodologies

Interview d\u2019un designer sur comment enlever la friction https://review.firstround.com/amazons-friction-killing-tactics-to-make-products-more-seamless?ct=t


  • designer a Amazon (Music, Alexa), IMDB, Skype for Business

  • types de fictions (choses non famili\xe8res, friction inh\xe9rente - produit avanc\xe9 - et chemin de friction important, friction par desalignement avec le comportement humain)

  • la troisi\xe8me cat\xe9gorie difficile \xe0 anticiper

  • en construisant des produits: on ajoute, enl\xe8ve ou marque des frictions

  • C\u2019est sur le chemin du client

  • Avant le premier contact

  • Signature et premiere t\xe2che transactionnelle (bien choisir la tache pour etre assez simple et ce que l\u2019utilisateur r\xe9p\xe8te)

  • Premier moment de plaisir (regarder les points contre intuitifs dans les donn\xe9es, ou les cas d\u2019utilisation en echec)

  • l\u2019indiff\xe9rence genre la friction la plus importante pour les nouveaux produits

  • Comment \xe9couter son utilisateur?

  • habitat naturel: sondes dans l\u2019appli, tests chez l\u2019utilisateur en milieu reel en utilisation du produit

  • mentions et revues: aussi m\xe9triques d\u2019usage (choses inhabituelles ou inattendues)

  • standard de l\u2019industrie: attentes des clients fa\xe7onn\xe9 par \xe7a (barre de recherche en haut)

  • Toujours migrer son audience vers le chemin de moindre resistance

  • Comment \xe9liminer la friction?

  • r\xe9duire l\u2019anxi\xe9t\xe9: d\xe9cision et perte am\xe8nent de l\u2019anxi\xe9t\xe9.

  • supprimer les \xe9tapes non n\xe9cessaires: d\xe9finir la liste des decisions du client et les questionner. (Heuristiques par defaut?)

  • mitiger le changement de contexte: naviguer hors de l\u2019appli pour faire quelque chose, risque d\u2019abandon. Arr\xeater un livre pour lire un mot dans le dictionnaire, faciliter le retour et le rappel du contexte quand ils reviennent.

  • Comment masquer la friction?

  • temps d\u2019attente: trouver de la valeur (message d\u2019information)

  • bouger la friction au d\xe9but dans les services (carte credit tout de suite)

  • s’ils investissent dans leur experience (vote), ils sont plus engag\xe9s et loyaux: friction positive : sense d\u2019appartenance

Glossaire et aide-m\xe9moire sur l\u2019approche de l\u2019Event Storming
https://github.com/ddd-crew/eventstorming-glossary-cheat-sheet

S\xe9curit\xe9

Sigstore passe en General Availability, en version 1
https://opensource.googleblog.com/2022/10/sigstore-project-announces-general-availability-and-v1-releases.html


  • Sujet \xe9galement couvert par InfoQ https://www.infoq.com/news/2022/11/sigstore-stability-ga/

  • Sigstore est la pour aider au niveau de la s\xe9curisation de la supply chain de code

  • Notamment au niveau des signatures

  • Ca addresse ce que fait PGP amis le rend plus utilisable et permet un usage suppl\xe9mentaire par un log lisible par tous

  • Plus d\u2019infos dans une interview on esp\xe8re

Loi, soci\xe9t\xe9 et organisation

La proposition de loi sur la s\xe9curisation de l\u2019open source aux Etats-Unis https://blog.tidelift.com/tidelift-advisory-us-senators-introduce-the-securing-open-source-software-act-of–2022 (edited)

Holly Cummins sur le sujet du code vestimentaire des femmes dans la tech
https://hollycummins.com/fashion-and-programming-ii/


  • Pourquoi en 2023 on a encore autant d\u2019abrutis qui font des remarques sur les v\xeatements que portent les femmes qui font des pr\xe9sentations \xe0 des conf\xe9rences, et pire, sur le fait de savoir si elles sont \xe0 leur go\xfbt ou pas

  • La tenue vestimentaire n\u2019a rien \xe0 voir avec le talent, les connaissances, le professionnalisme, l\u2019expertise des personnes

  • Les femmes ont le droit de porter les v\xeatements qu\u2019elles veulent sans \xeatre jug\xe9es par des idiots qui feraient mieux de retourner dans leur caverne

Avec le rachat de Twitter par Elon Musk, beaucoup de gens commencent \xe0 s\u2019int\xe9resser de plus pr\xe8s \xe0 Mastodon. On trouve de nombreux articles sur Mastodon ces jours ci
https://gorillasun.de/blog/getting-started-with-mastodon


  • et vous, avez vous un compte sur Mastodon ?

  • quelle instance avez-vous choisie ?

  • quels outils (client, mobile, web, etc) utilisez vous ?

  • Pour ma part je n’ai pas de compte Mastodon (je n’utilise pas twitter non plus). J’ai rapidement regard\xe9 ce matin \xe7a n’est pas facile de trouver une instance : celles que j’ai regard\xe9 ont ferm\xe9 les inscriptions (d’apr\xe8s ce que j’ai pu lire \xe0 cause de probl\xe8mes pour g\xe9rer l’afflux de nouveaux utilisateurs, \xe0 cause de l’augmentation de la cr\xe9ation de comptes spam, ou dans l’objectif de r\xe9partir les utilisateurs sur d’autres instances moins connues). Du coup j’ai pour le moment abandonn\xe9 l’id\xe9e de me cr\xe9er un compte.

  • Le site JavaBubble liste plein de d\xe9veloppeurs Java qui ont maintenant un compte sur Mastodon https://javabubble.org/

  • Les Cast Codeurs sur Mastodon :


Conf\xe9rences

La liste des conf\xe9rences provenant de Developers Conferences Agenda/List
par Aur\xe9lie Vache et contributeurs :


  • 12–13 octobre 2023 : Volcamp 2023 - Clermont Ferrand (France)

  • Nous contacter

    Pour r\xe9agir \xe0 cet \xe9pisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

    Contactez-nous via twitter https://twitter.com/lescastcodeurs
    Faire un crowdcast ou une crowdquestion
    Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
    Tous les \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/