LCC 289 - La revanche des dinosaures
Guillaume et Emmanuel discutent les nouvelles de novembre/décembre : spring boot 3, AWS SnapStart, GitHub Copilot en procès… Et aussi des articles de fond : performance, SRE et l’auto résilience, comment utiliser Git, le Devops pour les décideurs, l’âge et la tech et d’autres sujets encore.
Enregistré le 9 décembre 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-289.mp3
News
Langages
Comment choisir ses collections ? Entre les différentes listes, maps, queues, etc. https://www.baeldung.com/java-choose-list-set-queue-map
- Un bon rappel des fonctionnalités des différentes collections (discuter le diagramme de choix).
- Et un bon rappel des ordres de grandeur d’insertion, de lecture, etc.
- Attention O(n) ne veut pas dire plus lent que O(1), ça signifie que ça scale linéairement.
- Il reste toujours bon de tester avec le volume attendu de données.
- Un bon vieux
Object[]
qu’on traverse à chaque fois peut être bien plus efficace (moins gourmand en structure memoire, moins de jump memoire, etc.).
Librairies
Spring Boot 3 est sorti https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga
- Java 17 de base,
- support de GraalVM Native Image (au lieu de l’ancienne expérimentation de Spring Native),
- amélioration de la traçabilité avec Micrometer et Micrometer Tracing,
- JakartaEE 9 minimum et support de JakartaEE 10.
Quarkus est 600 fois plus lent qu’un compétiteur, ou pas https://t.co/1c2sFSY9sE
- discute le lien entre les résultats et l’environnement
- une erreur de code initiale
- puis une erreur de limite de système ou deux
- pour arriver au résultat
- bon retour sur l’approche méthodologique.
Spring vault 3 https://spring.io/blog/2022/11/28/spring-vault-3-0-goes-ga
- Java 17,
- plus de clients supportés, comme le client réactif du JDK,
- support du versionnage des mots de passe pour les vaults clé-valeur.
Cloud
Mais pourquoi Twitter tourne-t-il toujours malgré toutes les personnes renvoyées ? https://matthewtejo.substack.com/p/why-twitter-didnt-go-down-from-a
- Grâce au long travail de SRE, de mise en place d’auto-réparation, de cache, de monitoring, de sur-provisioning. Donc beaucoup d’automatisation pour faire en sorte que le tout fonctionne “presque” tout seul sans trop d’intervention humaine.
- C’est un article écrit par un des SRE qui travaillait en particulier sur le cache de Twitter.
GitHub passe à un versioning par date de son API REST https://github.blog/2022-11-28-to-infinity-and-beyond-enabling-the-future-of-githubs-rest-api-with-api-versioning/
- au lieu de continuer avec une v4, v5, etc, utilisation de date comme 2022-12-25,
- chacune de ces versions serait supportée a minima 2 ans,
- on peut spécifier la version avec un header HTTP spécial,
- pas de changement pour l’API GraphQL par contre,
- Stripes va encore plus loin en se rappelant la version utilisée au premier appel et le fixe par défaut,
- les appels sans version explicite utilisent celle-là, et on peut la faire évoluer globalement.
Amazon SnapStart pour Lambda https://aws.amazon.com/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/
- démarrer plus rapidement les lambdas,
- a une phase
Init
exécutée pour préparer la lambda, - snapshot Firecracker VM pas juste CRaC,
- remplace les seeds et le réseau et le disque,
- réduit les temps de démarrage,
- testé avec Quarkus
- testé avec Micronaut
- et avec Spring Boot.
Outillage
Petit tip Git de Minko Gechev (monsieur Angular) https://twitter.com/mgechev/status/1594758205237706752
- On peut faire un
git clone [repo] —depth 1
pour dire qu’on ne veut que la dernière révision, et non pas tout l’historique du repo. - C’est pratique en particulier dans une CI pour gagner du temps lorsqu’on a un gros repo avec beaucoup de révisions.
Si vous luttez toujours avec git, ce guide très détaillé peut vous aider. https://github.com/k88hudson/git-flight-rules
- Il s’agit d’un énorme “Comment faire ?” qui est même traduit en plusieurs langues, dont le français.
Faire tourner ses Github Actions en local avec le projet open source act
https://github.com/nektos/act
- Pratique de vérifier en local le fonctionnement de son pipeline avant de le pousser sur Github en prod.
- Utilise Docker sous le capot pour faire tourner chaque étape.
- Peut marcher sur podman, mais pas garanti pour l’instant.
Comment transformer n’importe quel site web ou webapp en application autonome https://glaforge.appspot.com/article/turning-a-website-into-a-desktop-application
- utilisation d’une fonctionnalité de Chrome : la création de raccourci avec ouverture dans une fenêtre “sans chrome”,
- fonctionne sur tous les OS,
- utilise le favicon comme icône pour l’application,
- le site web se retrouve dans votre barre des tâches comme une application normale, et on peut faire un
ALT/CMD-Tab
pour aller vers son application, etc.
Architecture
Six patterns pour les architectures event-driven https://medium.com/wix-engineering/6-event-driven-architecture-patterns-part-1-93758b253f47
- De Wix.
- Il y a trois patterns dans cet article.
- Consume and project : vue dématérialisée copie des données chaudes consommées par beaucoup. Et ces vues sont focalisées sur un consommateur. Kafka et CDC au milieu pour découpler.
- Event-driven de bout en bout : WebSocket utilisé pour envoyer les demandes. Le web socket serveur copie dans Kafka. Ces consommateurs font le job et un message est envoyé via le web socket serveur. Résilience, découplage.
- K/V store : et en particulier avec kafka qui permet d’être consommé en key/value basse latence et en consommation d’évènement.
- Peut être intéressant, mais pas si simple de comprendre les usages dans cet article.
Méthodologies
Un article sur quoi et pourquoi le DevOps (englobant les bonnes pratiques du moment) https://enix.io/fr/blog/devops-benefices-difficultes/
- Les techs ne vont pas apprendre grand-chose.
- Mais c’est un article pour les managers ou plutôt les execs pour les aider à voir la valeur de DevOps.
- Souvent plus facile de montrer la valeur par du contenu extérieur à l’entreprise, car perçu comme neutre.
- Autres articles sur Kubernetes pour les execs : https://enix.io/fr/blog/kubernetes-benefices-difficultes/.
Amazon et la methode “working backwards” pour un produit https://www.productplan.com/glossary/working-backward-amazon-method/
- imaginer le produit prêt à être mis en production,
- écrire la press release,
- évaluer l’opportunité (doit-on le construire),
- découvrir les solutions pour le faire et avoir l’approbation des décideurs,
- construire la roadmap,
- construire le backlog.
Sécurité
1.5 million de lignes de code dans Android sont maintenant en Rust https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html?m=1
- de plus en plus de code memory safe (Java, Kotlin, Rust),
- mais la majorité de nouveau code reste quand meme Java et C++,
- et une correlation de baisse de vulnérabilités liées à la sureté de mémoire (moins de code de programme memory unsafe),
- ou maturation du code avec moins de vulns ?,
- autres efforts : outils de sécurisation de la memoire en C/C++, fuzzing,
- zéro vuln memoire dans le code Rust en 2 ans et en moyenne une par kLOC dans le code historique,
- Java -> JNI, Rust - unsafe pour les accès resource.
Loi, société et organisation
Les dinosaures de la tech commencent à 40 ans ? https://www.linkedin.com/pulse/non-nous-ne-sommes-pas-des-dinosaures-de-la-tech-pass%C3%A9-ramade/
- Commentaire intéressant de Benjamin Marron qui explique “s’être restreint aux technos de son cœur d’activité, car trop de veille technologique hétérogène l’avait épuisé et avait renforcé son sentiment d’être complètement obsolète et dépassé” https://twitter.com/bmarron/status/1596136098828148736
- Âge median des devs entre 28 et 31 ans chez Google, Microsoft et Facebook.
- Mais 50 ans, c’est 30% de la force de travail.
- Avantages des seniors:
- expérience,
- mentorat, comm, interaction interpersonnelle (Atlassian a une personne de 40+ ans dans chaque équipe),
- rétention : moins de changement de travail tous les 3 ans,
- flexibilité : les vieux ont leurs enfants partis,
- aide à faire des produits pour les personnes de même âge,
- Pas souvent dans les politiques de DSI.
GitHub copilot menacé par un procès https://www.infoq.com/news/2022/11/lawsuit-github-copilot/?utm_source=twitter&utm_medium=link&utm_campaign=calendar
- aux États-Unis,
- class action contre GitHub copilot, Microsoft et OpenAI
- violation de copyright et notamment des licenses open source,
- hypothèse est qu’humain ou AI on la même responsabilité face à la license,
- discussion autour de fair use VS rupture de contrat, DMCA, etc.,
- piratage de logiciel à une échelle sans précédant,
- peut avoir des conséquences fortes sur l’IA et son utilisation des sources ouvertes pour construire du contenu,
- et Antonio va devoir recoder à la main.
Rubrique débutant
Différentes méthodes d’interpolation des chaines en Java https://www.baeldung.com/java-string-interpolation
- la concatenation avec
+
, - la methode
format()
souvent intimidante mais plus optimisée et sûre, StringBuilder
le plus flexible notamment dans les cas deif
(et autres variations), plus rapide mais moins sûr que format,MessageFormat
pour les chaines de caractère utilisateur (multi-langage),- Apache Commons (pas sûr qu’il y ait encore beaucoup d’usage avec les JDK modernes).
Outils de l’épisode
Calendrier de l’Avent du code 2022 https://adventofcode.com/
- tous les ans (premier en 2015),
- des petits puzzles à résoudre tous les jours,
- on peut utiliser n’importe quel langage, seul le résultat de l’algorithme compte,
- beaucoup de gens publient leur solution sur Redit.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 1 décembre 2022 : Devops DDay #7 - Marseille (France)
- 2 décembre 2022 : BDX I/O - Bordeaux (France)
- 2 décembre 2022 : DevFest Dijon 2022 - Dijon (France)
- 14-16 décembre 2022 : API Days Paris - Paris (France) & Online
- 15-16 décembre 2022 : Agile Tour Rennes - Rennes (France)
- 19 janvier 2023 : Archilocus - Bordeaux (France)
- 19-20 janvier 2023 : Touraine Tech - Tours (France)
- 25-28 janvier 2023 : SnowCamp - Grenoble (France)
- 2 février 2023 : Very Tech Trip - Paris (France)
- 2 février 2023 : AgiLeMans - Le Mans (France)
- 9-11 février 2023 : World AI Cannes - Cannes (France)
- 16-19 février 2023 : PyConFR - Bordeaux (France)
- 7 mars 2023 : Kubernetes Community Days France - Paris (France)
- 23-24 mars 2023 : SymfonyLive Paris - Paris (France)
- 23-24 mars 2023 : Agile Niort - Niort (France)
- 1-2 avril 2023 : JdLL - Lyon 3e (France)
- 5-7 avril 2023 : FIC - Lille Grand Palais (France)
- 12-14 avril 2023 : Devoxx France - Paris (France)
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 12 mai 2023 : AFUP Day Lille & Lyon (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont Ferrand (France)
Nous contacter
Pour réagir à cet épisode, 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 épisodes et toutes les infos sur https://lescastcodeurs.com/