LCC 284 - De mal en pis - partie 1
Posté le 12/09/2022Dans cet épisode, nous discutons bonnes pratiques Java, Groovy, WebAssembly, Micronaut. Nous discutons également le changement de licence de Akka entre autre. La suite de cet épisode parlera de changement d’étage gratuit chez Heroku et des vagues de licenciement dans le monde technologique. Pour rester sous les 1 h d’écoute, nous avons découpé les deux derniers épisodes nouvelles en 2 parties chacun. Qu’en pensez-vous ? Donnez-nous votre avis sur Twitter ou sur le Google Groups des cast codeurs.
Enregistré le 9 septembre 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-284.mp3
News
Langages
Jonathan Giles, un principal architecte de Java chez Microsoft, a un site qui partage des bonnes pratiques Java http://java.jonathangiles.net/
- il couvre des bonnes pratiques Java de manière générale, mais également plus spécifiquement pour les développeurs de librairies Java
- Des conseils sur la bonne utilisation des dépendances, des BOMs, des versions LTS de Java, des modules Java, de la surface des APIs publiées, de faire attention à null ou au boxing, et de comprendre les interfaces fonctionnelles
- il y a beaucoup de contenu donc faites par petites doses
- Certains sujets sont plus controversés comme les modules Java
- les recommendations sont assez succinctes
- Je suppose que ce sont les recommendations que les équipes du Azure SDK suivent et qu’il a ouvert. Donc merci à lui
Project Leyden https://www.infoq.com/news/2022/06/project-leyden-delays-aot/
- Leyden n’a pas progressé en deux ans
- Accepté que GraalVM a déjà achevé les objectifs initiaux
- Donc vont explorer un spectre plus faible de contraintes (et probablement d’optimisations)
- Prochaine LTS en Sept 2023 et Leyden ne sera pas mature, donc Leyden sera utilisé ~Sept 2027 (en terme d’adoption) au plus tôt.
- SpringBoot pensent que CRaC (snapshot de la memoire sur disque pour démarrage plus rapide) sera très utile
- module-info dans Spring pour jlink est dans la roadmap
- Lead de CRaC a fourni un prototype pour Quarkus : améliore temps de démarrage pour OpenJDK mais pas la consommation memoire
- jlink pour Quarkus, dans un context Kube, les gains d’espace disque ne sont pas si intéressants vs un layered image
- Micronaut a des issues ouvertes pour CRaC
José Paumard couvre Loom et Structured Concurrency dans sa vidéo de la série JEP Café https://inside.java/2022/08/02/jepcafe13/
- Et cet article explique les problèmes classiques de concurrence comme les thread leaks et introduit la Structured Concurrency
- https://howtodoinjava.com/java/multi-threading/structured-concurrency/
Paul King montre l’utilisation de différents frameworks de tests avec Groovy (Spock, JUnit5, Jacoco, Jqwik et Pitest) https://blogs.apache.org/groovy/entry/testing-your-java-with-groovy
- Paul couvre aussi dans un autre article les comparateurs et l’utilisation de l’API GINQ
- https://blogs.apache.org/groovy/entry/comparators-and-sorting-in-groovy
- La matrice spot est intéressante, mais pas avec des noms de variable a, b, c, d :)
- L’article est super didactique et explique via un example concret quand utiliser quoi
- Je trouve les property base testing pas si simple à utiliser et avec un coup de reflection » au truc testé. Mais peut être le cas est super simpliste pour l’usage
Paul King continue de publier régulièrement des articles sur Groovy
- https://blogs.apache.org/groovy/entry/working-with-sql-databases-with — accéder à des bases SQL avec Groovy et GraalVM
- https://blogs.apache.org/groovy/entry/detecting-objects-with-groovy-the — détection d’objet avec le machine learning avec Deep Java Library et Apache MXNet
Sortie de Spock 2.2, première version GA avec le support officiel de Groovy 4 https://twitter.com/spockframework/status/1564999285250326529
- Bah la seule info intéressante est déjà dans le titre, c.-à-d. c’est le support officiel de Groovy 4
Google lance un nouveau langage, appelé Carbon, comme un successeur de C++, mais en plus sympa ! https://github.com/carbon-language/carbon-lang
- Intéressant, ils veut Ceyloniser ou Scalaizer Rust avec Carbon’s Kotlin-like strategy. Not a bad bet
- Rust n’est pas assez compatible avec C++, c’est problématique, surtout pour des boîtes comme Google avec d’énormes code bases en C++.
- Donc pour du green field, Rust c’est bien. Ou c’est bien aussi pour de l’intégration avec du C. Mais pas avec du C++.
State of WebAssembly https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
- On peut peut-être aussi rajouter l’utilisation de WebAssembly chez Figma
- https://neugierig.org/software/blog/2022/06/wasm-notes.html
- Rust reste le langage de prédilection
- Python monte
- JavaScript est maintenant un langage viable
- Wasmtime est le runtime le plus populaire
- L’utilisation de WASM pour Serverless et la containérisation et en tant qu’hôte de plugin a beaucoup émergé
- Les APIs non browser sont ce dont a besoin web assembly
- En fait ne compile pas JavaScript, mais un moteur JavaScript et fait l’interprétation
- Fonctionnalités très demandées : threads, exceptions, GC, type reflection etc
Graal VM 22.2 https://medium.com/graalvm/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0
- GraalVM JDK plus petit
- Plus petite conso mémoire lors de la création de native images
- Un travail de Quarkus, Micronaut et Spring Native pour oublier des métadonnées partagées
- https://medium.com/graalvm/enhancing-3rd-party-library-support-in-graalvm-native-image-with-shared-metadata-9eeae1651da4
- Possibilité de générer des heap dump dans des native images
- Différentes améliorations du compilateur
- Support de Apple Silicon
- Côté autres langages, GraalPython démarre plus vite et avec support étendu de librairie, et GraalJS avec une meilleure interopérabilité
Alex Blewitt un Java Champion est décédé prématurément https://www.infoq.com/news/2022/07/alex-blewitt/
- Notamment un contributeur à InfoQ
Librairies
Sortie de Micronaut 3.6 https://micronaut.io/2022/08/04/micronaut-framework-3-6-0-released/
- Nouveau module Micronaut Test Resources avec une intégration TestContainers qui permet d’avoir des ressources de test externes, par exemple pour un Redis, un Elasticsearch ou autre
- Cédric Champeau qui a travaillé sur cette fonctionnalité a écrit un blog post complet sur le sujet https://melix.github.io/blog//2022/08/micronaut-test-resources.html
- Intégration avec OpenTelemetry (après Open Tracing et autre)
- Micronaut Data rajoute Hibernate Reactive comme intégration
- Et plein d’autres mises à jour des différents modules existants
Utiliser des sérialiseurs / désérialiseurs de messages Kafka dans votre application Quarkus https://quarkus.io/blog/kafka-serde/
- Explique quand on a besoin d’un sérialiseur custom (hors des types fondamentaux)
- Explique que le support JSON existe par défaut
- Explique comment utiliser Avro mais avec un schéma registry
- Et la version full custom
Akka change sa licence d’ASL vers BSL (Business Source License) https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka
- Comme MariaDB, Cockroach Labs, Sentry, Materialized
- BSL is source available et usage dev mais pas prod
- Après 3 ans, les commits en BSL se convertissent en ASL (donc pas les nouveaux commits)
- License commerciale disponible pour 2000$ par cœur
- Due au fait qu’avec la maturité de Akka les contributions ont diminué et le support est revenu à LightBend de plus en plus, même si de grosses sociétés utilisent Akka dans leur infra critique
- Gatling impacté
- Mécontentement de la communauté Akka et Scala, par exemple cet article d’Alexandru Nedelcu https://alexn.org/blog/2022/09/07/akka-is-moving-away-from-open-source
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/
LCC 283 - Mini interview comment améliorer ses présentations
Posté le 27/07/2022Cet épisode mi-nouvelle mi-interview discute de comment faire de meilleures présentations. L’article est agrémenté des propres conseils des cast codeurs.
Enregistré le 8 juillet 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-283.mp3
Interview
- Répéter, répéter, répéter
- Démarrer par une mission
- Raconter une histoire
- Regarder l’auditoire, pas les slides
- Mettre moins de texte sur ses slides, beaucoup moins
- Personnaliser la présentation en fonction de l’auditoire
- La règle de 3 (couvrir 3 points clés, 3 leçons retenues, partager 3 conseils…)
- Avoir une solution de secours pour les démos
- Jouer sur ses atouts (ce n’est pas grave si on est quelqu’un qui parle vite, si ça donne de l’énergie à son argumentaire)
- Faire des retours en arrière (par exemple pour conclure sur un point abordé ou une supposition de départ et montrer qu’on a prouvé ce que l’on avançait)
Et les cast codeurs commentent ses propositions.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 282 - Apérikube apomorphique - partie 2
Posté le 19/07/2022Cet épisode marathon sera découpé en deux morceaux pour éviter à vos oreilles une écoute marathon. Cette deuxième partie couvre des sujets d’architecture et de loi société et organisation ainsi que les conférences à venir. Logging, Migration Java 8 vers 11, Xerox Park, (manque de) sécurité, courbes elliptiques, sondage développeurs.
Enregistré le 8 juillet 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-282.mp3
News
Architecture
Pour ou contre le logging : Contre puis pour
- tous les langages et plateformes utilisent les logs
- debugging, tracing, journaling, monitoring, and printing errors
- impact sur les performances (allocation supérieure sur un log que sur le code métier)
- log = mémoire, CPU (GC), I/O
- risque de sécurité (dépendances et fonctionnalités sans besoin)
- format des logs : pour lecture humaine, mais le volume impose des traitements automatiques
- log level la bonne abstraction (souvent trop et pas ce que l’on veut à la fois)
- debugging -> utiliser un debugger ; journaling -> event sourcing ou solution dédiée ; tracing > open tracing ; monitoring -> monitoring solution via metrics et health check
- bons usages de logging : en dev (println), fin de jobs automatiques, erreurs non récupérables ou inattendues, pas les erreurs utilisateur (logger les erreurs qui cachent un bug),
- dans les conteneurs, Sébastien utilise
System.out
etSystem.err
vu que les logs sont gérés par la plateforme - la réponse pour maintenant
- les logs peuvent être structurés
- performance, on peut éviter les concatenations de String (parameterized logging), memory allocation est bien meilleure depuis 2012 (e.g. Shenandoah), vu des problèmes dans des cas plus rare de genre
MDC.getCopyOfContextMap
- disk I/O : ok, mais disque capé à 200 MiB/s donc bon… : si c’est le cas, sépare I/O log du reste (disk vs network par exemple)
- gros fan de logs structurés via JSON ; log line sur console et JSON en fichier
- log plus de manière conditionnelle
- tracing théoriquement bon mais limite dans son contexte métier et peu d’infos passables
system.out
problème de scalabilité d’usage, etc. et appel bloquant println (async usage n’est pas bon)
LinkedIn et sa migration de Java 8 à 11
- 1000 apps sur 320k hosts
- migration Java 8 vers 11 avec en vue G1
- regardé depuis 2018
- Jetty, Hadoop, Play, Samza: focalisé sur Jetty
- 1. Mettre à jour le système de build, 2. Faire des tests de performance 3. Automatiser la migration
- mise à jour vers gradle 5
- G1 80% des applis CMS 20%
- pris 20 apps representatives
- focalisé sur les applications avec les tailles de piles les plus grosses
- jusqu’à 200% plus de latence et throughput : zones G1, Shenandoah et ZGC
- automatisé la migration du reste et tourné les builds de tests qui ont identifié les problèmes de migration
- quelques problèmes : suppression de certaines classes Java EE, changement du type de classloader par défaut, casting de classe plus stricte
- ils ont utilisé -release 8 et ont limité les usages des features Java 11
- les options de CLI de la JVM ont beaucoup changé
- LinkedIn fait du microservices ce qui veut dire que beaucoup de repositories sont liés à d’autre par un graphe de dépendances : euh, c’est pas le principe des microservices d’éviter ça ???
- mise à jour de 500 librairies 3/4 de l’année
- quelques challenges vus
- la JVM respecte les cgroups et donc moins de thread GC sont créés
- aussi ils pouvaient piquer des cycles CPUs avant et plus maintenant
- Java 11 a un usage de mémoire hors pile plus important
- reduction de latence p99 par 10% et le throughput par 20% sans changer le type de GC
- c’est un bon retour qui sent le type de développement de la vraie vie
Méthodologies
Un article sur Xerox park et comment ils ont inventé le futur
- article de 1985
- Xerox achète un constructeur de mainframe, et ils ont créé un lab de recherche pour aider les usages
- Macintosh et la souris et les fenêtres, les cartes météos colorées, imprimante laser, réseaux d’ordinateurs, lasers semi-conducteurs qui lisent les disques optiques, langages de programmation structurés
- développer l’architecture de l’information
- projets proposés et faits en bottom up
- PARC construisait ses propres hardwares ce qui a créé des inventions et qui devaient être construits pour 100 utilisateurs (scale)
- recherche en construisant concrètement, pas en papier théorique académique
- bit map, distributed computing, email, frame buffer, LAN, object-oriented programming
- Cree Alto un ordinateur « personnel » qui a permis aux chercheurs de tester leurs idées, beaucoup en avaient un.
- donc ils ont dû inventer le LAN et Ethernet (packet) via une personne avec passé de radio amateur (medium partagé et non reliable)
- premier projet distribué (Un protocole d’impression)
- antialiasing : ils amélioraient en testant pour de vrai
- un gars a construit un proto de souris pour prouver que les curseurs étaient plus efficace : tests avec des gens dans la rue et IO a perdu :D
- concept de modal (insert, delete) vers comportement non modal, plus simple pour l’utilisateur
- small talk : un langage si simple qu’un enfant peut l’utiliser (simulation based programming)
- overlapping windows ont été développées en small talk
- autre groupe : strong type system
- Xerox ne savait pas convertir ses recherches en produits et les amener sur le marché (sauf l’imprimante laser)
Sécurité
Travis CI fuit encore des mots de passe
- permet d’accéder au compte privé des développeurs open source qui ont mis en place travisCI
- c’est la quatrième fois
- token offre accès lecture et écriture aux repos
- risque d’attaque de supply chain
- tokens GitHub, AWS ou DockerHub par exemple, mais aussi les bases de données utilisées dans la CI
- via l’API TravisCI
HDMI peut-être un vecteur d’attaque et d’infection de vos ordinateurs
- un hack d’un adaptateur HDMI peut potentiellement infecter un video-projecteur, et qui à son tour pourra réinfecter les prochains ordinateurs qui s’y connecteront
- cet article propose de construire une sorte de connecteur qui sert de firewall HDMI pour éviter ce genre d’infection
- il y a des préservatifs USB aussi qui ne laissent passer que la puissance et pas les données
Un guide pour protéger son macOS
- une suite de conseils comme de faire une installation toute fraiche, de mettre les mises à jour logicielles automatiques, n’autoriser que les applications signées, appliquer le chiffrement du disque…
- mais aussi utiliser par exemple un gestionnaire de mot de passe, éviter les extensions de navigateur, faire tourner un firewall
- et des liens vers des guides de sécurité plus avancés
- un truc que je n’ai pas fait, mais qui me tente, c’est un outbound firewall comme little snitch ou lulu
Comment choisir un algorithme de courbes elliptiques
- un article qui détaille le pour et le contre de certaines courbes elliptiques
- cas d’usage, notamment gouvernemental
- faiblesses (timing attaques etc)
- pour les curieux, mais la première courbe citée est celle la plus utilisée en ce moment
Loi, société et organisation
Stack Overflow sort son sondage sur les développeurs
- 70% apprennent à coder en ligne (les plus de 45 ans dans les bouquins)
- Stack Overflow derrière la doc technique puis les blogs ; video 60% des gens ; podcast 7,21% damn!
- presque 60% ont moins de 10 ans d’expérience ; si t’es pas VP ou CxO à 17 ans d’expérience, tu as raté ta vie
- 9% cloud infra engineers
- 22% sont neuroatypiques
- Docker passe dans la catégorie outil fondamental (69% d’usage)
- les frameworks 3D genre Unity 3D ou Unreal Engine sont des outils que des non-développeurs pro apprennent
- Rust technologie la plus aimée, Rust et Python en plus demandées
- Java 6ᵉ position, mais 4ᵉ pour ceux qui apprennent
- Angular en framework le plus redouté / React le plus demandé
- Docker et Kube sont les plus aimés et demandés
- indépendants ont augmenté de 5% et 4% pour les temps pleins
- 85% des devs sont dans une orga partiellement en distanciel
- 62% des devs pro cherchent des réponses pendant plus de 30 minutes par jour, 25% pendant plus d’1 heure
- Azure prend la deuxième place des cloud providers, OVH 3,7%
- Spring framework le plus populaire de Java
- VSCode 74%, IntelliJ 28%, vim 23%, Eclipse 12%, Emacs 4,5%
- pleins d’outils asynchrones (tickets, etc.) que je ne connais pas
- salaires ont augmenté de 23% en median
JavaScript change de licence open source
- toujours la licence Ecma international license, assez restrictive qui interdit le fork, mais avec certaines provisions pour l’intégration et la reproduction
- mais aussi une nouvelle licence dérivée de la W3C Document & Software License, un peu plus ouverte, qui permet d’intégrer et s’intégrer plus facilement avec les autres standards du Web
Conférences
De la part de Youen
Cette année, Codeurs en Seine c’est le 17 novembre et le cfp est ouvert.
N’hésitez pas à amener un peu de JVM dans l’appel à orateur (ça commence à se faire rare).
Pour rappel : codeurs en seine, c’est 1000 personnes autour des métiers du développement dans une des plus grandes salles de Rouen, le Kindarena.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 281 - Apérikube apomorphique - partie 1
Posté le 12/07/2022Cet épisode marathon sera découpé en deux morceaux pour éviter à vos oreilles une écoute marathon. Dans cet épisode, on y parle Brian Goetz, Brian Goetz, Brian Goetz, usages des threads virtuels, OpenAPI, Kubernetes, KNative, copilot et Tekton. La deuxième partie couvrira des sujets d’architecture et de loi société et organisation ainsi que les conférences à venir.
Enregistré le 8 juillet 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-281.mp3
News
Langages
Peut-être une nouvelle syntaxe spécifique aux Records Java pour tordre le cou aux builders
- Brian Goetz discute de l’idée d’avoir une syntaxe spécifique pour les records pour facilement créer un record dérivé, potentiellement avec des valeurs par défaut, mais en paramétrant certains champs
Point shadowPos = shape.position() with { x = 0 }
- Cela évite de créer la notion de paramètre par défaut dans les constructeurs ou les méthodes
Il y a l’article Data Oriented Programming de Brian Goetz, sur InfoQ
- le projet Amber amène des changements qui, combinés, permettent de faire du data-oriented programming en Java et pas que du OOP
- OO combine état et comportement (code)
- OO est super utile pour défendre des limites (programme large en des limites plus petites et plus gérables)
- mais on s’oriente vers des applications plus petites (microservices)
- data-oriented programming : modélise des data immuables et le code de la logique métier est séparé
- records → data en tant que classe, sealed classes → définir des choix, pattern matching → raisonne sur des data polymorphiques
- algebraic data : hiérarchie de sealed classes dont les feuilles sont des records : nommées, immuables, testables (pas de code)
Un nouveau JEP pour intégrer une Classfile API
- Le JDK inclut déjà des forks de ASM, de BCEL, et d’autres APIs internes, pour manipuler / produire / lire le bytecode
- Mais l’idée ici, c’est que le JDK vienne avec sa propre API officielle, et qui soit plus sympa à utiliser aussi que le pattern visiteur de ASM par exemple
- La version d’ASM intégrée était toujours en retard d’une version (problème de poule et d’œuf, car ASM doit supporter la dernière version de Java, mais Java n+1 n’est pas encore sorti)
Lilian nous montre à quoi va ressembler les Record Patterns de JEP 405
Apache Groovy et les virtual threads, et aussi Groovy et le Deep Learning
- Paul King, qui dirige actuellement le PMC d’Apache Groovy, a partagé récemment plusieurs articles sur le blog d’Apache sur des intégrations intéressantes avec Groovy
- Groovy et sa librairie GPars pour la programmation concurrente et parallèle s’intègre facilement avec les Virtual Threads de JEP 425 / JDK 19 (https://blogs.apache.org/groovy/entry/gpars-meets-virtual-threads)
- Groovy avec Apache Wayang et Apache Spark pour classifier des Whiskey par clusterisation KMeans (https://blogs.apache.org/groovy/entry/using-groovy-with-apache-wayang)
- Et aussi Groovy avec différentes librairies de Deep Learning pour la classification (https://blogs.apache.org/groovy/entry/classifying-iris-flowers-with-deep)
- avec des exemples en JavaScript
- des pointeurs vers des librairies fonctionnelles en JavaScript
- des traductions dans d’autres langues et d’autres langages de programmation
Librairies
- SpringBoot 2.7
- Spring GraphQL 1.0
- Support pour Podman
- Gestion de dépendance et auto-configuration pour Cache2k
- nouvelles annotations pour Elasticsearch et CouchBase
- dernière version avant SpringBoot 3 qui changera plus de choses. Recommande de migrer une version à la fois. Support pour 2.5 à fini (upstream)
- Travaux préliminaires sur les threads virtuels de Loom
- Support non-blocking pour GraphQL
- Prise en charge des Kubernetes service binding pour les clients SQL réactifs
CacheKeyGenerator
pour l’extension de cachequarkus-bootstrap-maven-plugin
déprécié et remplacé parquarkus-extension-maven-plugin
(uniquement utile pour les développeurs d’extensions Quarkus)- Nouveaux guides :
Les différences entre OpenAPI 2 et 3
- Introduction de la notion de lien pour créer des relations entre Response et Operations, pratique pour faire des APIs hypermédia
- La structure du document OpenAPI a été -un peu simplifiée, en combinant par exemple basePath et schemes, ou en rassemblant les securityDefinitions
- Des améliorations sur les security schemes, autour de OAuth et OpenID
- Plus de clarté dans la négociation de contenu et les cookies
- La section des exemples de Request / Response devrait aider les outils qui génèrent par exemple des SDK automatiquement à partir de la description OpenAPI
- Un support étendu de JSON Schema
- Introduction d’une notion de Callback, importante pour les APIs asynchrones, en particulier les WebHooks
- Je me demande s’ils ont l’intention d’embrasser AsyncAPI ou si la partie asynchrone d’OpenAPI 3 a pour objectif de faire de la compétition
Infrastructure
N’utilisez pas Kubernetes tout de suite !
- Kubernetes, c’est bien, mais c’est un gros marteau. Est-ce que vous avez des gros clous à enfoncer ?
- Ne commencez peut-être pas avec l’artillerie lourde de Kubernetes. Commencez plutôt avec des solutions managées genre serverless, ce sera plus simple, et au fur et à mesure si votre infrastructure a besoin de grossir et dépasse les fonctionnalités des solutions managées, à ce moment-là seulement évaluer si Kubernetes peut répondre à votre besoin.
- Choisir Kubernetes, c’est aussi avoir la taille d’équipe qui va bien avec, et il faut des profils DevOps, SRE, etc, pour gérer un cluster K8S.
- L’auteur suggère grosso modo que ça dépend de l’ordre de magnitude de la taille de l’équipe : avec quelques personnes, préférez des solutions type Google App Engine ou AWS App Runner, avec une dizaine de personnes peut-être du Google Cloud Run ou AWS Fargate, avec moins d’une centaine là pourquoi pas du Kubernetes managé comme Google Kubernetes Engine, et si vous dépassez mille, alors peut-être vos propres clusters managés par vos soins et hébergés par vos soins sur votre infra.
- Ça impose d’utiliser les services du cloud provider ? Parce que la vie ce n’est pas que du code maison.
- C’est la mode de dire de ne pas utiliser K8S : https://www.jeremybrown.tech/8-kubernetes-is-a-red-flag-signalling-premature-optimisation/ (mais bon, vu le nombre de fois où il n’est pas utilisé à bon escient).
Knative Eventing Delivery methods
- On peut faire de la delivery simple 1-1 sans garantie
- On peut faire de la delivery complexe et persistante en introduisant la notion de channel qui découple la source de la destination.
- On peut répondre à la réception d’un message et pousser la réponse dans un second channel
- Mais ça devient compliqué à gérer quand on rajoute des souscripteurs
- Il y a la notion de broker qui définit : des filtres, un channel (automatique) et la capacité de répondre
- Les triggers sont un abonnement non pas à un channel mais à un type d’évènements spécifique
Cloud
AWS is Windows and Kube is Linux
- Pourquoi utilisez Kube qui n’était pas stable alors qu’AWS offre tout
- AWS forcé d’offrir EKS
- Mais pourri
- Lock-in AWS IAM
- Pourquoi AWS serait le windows
- Économies d’échelles de faire chez soi
- Kube devient rentable à partir d’une certaine taille d’organisation
- Besoin d’alternative à AWS (bus factor)
- On voit le Kube distro model arriver
Google data center Paris
Outillage
IntelliJ IDEA 2022.5 EAP 5 amène des nouveautés
- Frameworks and Technologies
- Spring 6 and Spring Boot 3
- Support for new declarative HTTP Clients in Spring 6
- URL completion and navigation for Spring Cloud Gateway routes
- Experimental GraalVM Native Debugger for Java
- Code insight improvements for JVM microservices test and mock frameworks
- Code insight improvements for Spring Shell
- Improved support for JAX-RS endpoints
- Support for WebSockets endpoints in HTTP Client
- Support for GraphQL endpoints in the HTTP Client
- UI/UX improvements for the HTTP Client
- Improved navigation between Protobuf and Java sources
- Kubernetes and Docker
- Intercept Kubernetes service requests with Telepresence integration
- Upload local Docker image to Minikube and other connections
- Docker auto-connection at IDE restart
- Docker connection options for different docker daemons
GitHub copilot est disponible pour tous (les développeurs)
- 40% du code écrit est généré par copilot en python (ça calme)
- Gratuit pour les étudiants et les développeurs OSS
- Une Revue de Redmonk décrit copilot comme une extension intelligente à l’auto-complete qui « comprend » le code autour
- Première fois pas une boite de cette taille et à cette échelle
- L’avantage de copilot en termes de productivité, de qualité de code, de sécurité et de légalité
- En gros, c’est encore à voir. Mais la qualité impressionne les gens qui l’ont testé ; sécurité pas de retour d’un côté ou de l’autre sauf que les développeurs humains ne sont pas des lumières de sécurité :D
- GitHub pense que GitHub n’est pas responsable de la violation de code vue que ce sont des machines et des algorithmes qui transforment : cela a l’air d’être le consensus des avocats
- GitHub dit qu’on est responsable du code qu’on écrit avec copilot
- Et implicitement GitHub dit que la licence du code « source » ne se propage pas au code généré. Et là, ça n’est pas clair et de la responsabilité de l’utilisateur, mais là encore les avocats sont plutôt ok
- Moralement ça n’est probablement pas ok, mais bon et il y a débat autour des licences copyleft, notamment LGPL
- 1% du temps, code copié verbatim de > 150 caractères
- Question sur le code non open source sur lequel GitHub Copilot s’appuie
- Mais en gros le marché s’en fout un peu des licences
- Risque de réputation de Microsoft
- La question, c’est quand / si les gens seront prêt à accepter cet usage
- Historiquement, la société Gradle Inc. ne publiait pas vraiment de roadmap officielle
- Outre les tickets que l’on pouvait voir dans Github, cette fois ci, une “roadmap board” est visible et disponible pour tout le monde, et pas seulement pour les clients
Tekton est groovy (mais non, il n’utilise pas Groovy !)
- Un grand tutoriel sur Tekton
- Une brève histoire de CI/CD (avec un contraste avec Groovy utilisé dans Jenkins)
- Un aperçu des grands concepts de Tekton, avec ses tâches et ses pipelines (
Task
,TaskRun
,Pipeline
,PipelineRun
) - Comment installer Tekton
- Les outils CLI
- Un exemple concret d’utilisation
Sortie de Vim 9, surtout avec VimScript 9
- Des changements incompatibles entre VimScript 8.2 et 9 font qu’il était nécessaire de passer à une version majeure
- Mais l’ancienne version du langage reste supportée pour compatibilité
- Avec la nouvelle version, les utilisateurs peuvent s’attendre à des performances x10 voire x100 !
- Le langage devient pré-compilé, au lieu d’être interprété ligne par ligne
- L’idée était d’avoir un langage plus proche de ce qu’on trouve dans JavaScript, TypeScript ou Java
Conférences
De la part de Youen
Cette année, Codeurs en Seine c’est le 17 novembre et le cfp est ouvert
N’hésitez pas à amener un peu de JVM dans l’appel à orateur (ça commence à se faire rare).
Pour rappel : codeurs en seine, c’est 1000 personnes autour des métiers du développement dans une des plus grandes salles de Rouen, le Kindarena.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 280 - Leçon de géographie
Posté le 13/06/2022Cet épisode une fois n’est pas coutume parle beaucoup de nouvelles dans la rubrique langage et beaucoup de Java, wouhou ! On parle aussi de sigstore, http/3, Micronaut et de VMWare.
Enregistré le 10 juin 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-280.mp3
News
Langages
Sept raisons pour lesquelles Java a encore du sens après 26 ans
- communauté (dans toutes les grandes villes)
- force du langage et de la plateforme
- plus de problèmes résolus que non résolus (librairies)
- stabilité
- Innovation (Java 9 accélère l’innovation)
- outillage
- opportunité d’emploi
- Mark Reinhold lance le projet Leyden, pour résoudre les problèmes de temps de démarrage lent de Java, de lenteur du temps jusqu’à la performance max, et d’empreinte un peu lourde
- à l’aide d’une image statique de votre application
- une image statique ne fait tourner qu’une seule et unique application sur son JDK, et est un “monde fermé” (ne peut pas charger de classes externes)
- mais les ingés de la JVM vont travailler sur une approche assez souple et voir quelles contraintes peuvent être allégées par rapport à un monde complètement fermé d’une image statique
- en espérant avoir des améliorations à différents niveaux, pour un max d’appli et de use cases différents
- Le close world c’est ce qui amène la valeur de GraalVM native image et les avantages pour Micronaut, Quarkus et les autres
- donc pas de closed world : c’est encore un projet de recherche pour l’équipe de la JVM
JFR plus facile à configurer dans Java 17
- un wizard en UI ou CLI pour générer le fichier
.jfc
Proposition de structured concurrency via le projet Loom
- Targeted status for JDK 19.
- This incubating JEP, under the auspices of Project Loom,
- proposes to simplify multithreaded programming by introducing a library to treat multiple tasks running in different threads as a single unit of work.
- This can streamline error handling and cancellation, improve reliability, and enhance observability
- JavaScript, Python, Java, toujours en tête
- Mais Rust et Dart sont rentrés récemment
- L’arrivée de Dart coïncide surtout avec l’émergence de Flutter comme framework d’interface graphique, que ce soit pour Android/iOS, que pour le desktop et le web
- Sur les applis mobiles, il y a toujours eu beaucoup de développement natif, mais est aussi arrivé React Native, mais aussi Flutter
- Des applis de Google comme Google Pay et Google Ads sont développées en Flutter, mais aussi le récent SNCF Connect ou des entreprises telles que BMW ou Alibaba (modifié)
- (cf. le talk sur le REX par les développeurs de SNCF Connect à Devoxx France)
- les investissements initiaux de Dart vs Kotlin ou Ceylon qui ont démarrés en meme temps étaient colossaux
- Dart en natif pour faire des applis iOS… qui tournent aussi sous Android
- Kotlin K2 compiler pour la JVM em Alpha (les plugins ne fonctionnent pas)
- amélioration des perfs de Kotlin et du compilo pour la JVM
- build incremental Gradle
- annotation OptIn et inférence de Builder stabilisés
- classes implémentées par delegation automatique sans consommation mémoire (via inlining)
Librairies
- Passage à GRAALVM 22.1.0
- Compilation incrémentale lors des builds, en particulier intéressant pour les métadonnées pour GraalVM, ce qui permet d’éviter de faire tourner les processeurs d’annotation inutilement
- Inclusion de Micronaut Data 3.4, avec support des enums Postgres pour JDBC, la pagination pour les Reactive Repositories
- Intégration avec Turbo pour la vue (Turbo Frame et Turbo Views)
- Nouveau module pour MicroStream (un moteur de graphe d’objet natif Java, intégré à Helidon)
- Mise à jour de nombreux plugins et extensions (y compris plugins de build)
Infrastructure
Kubernetes signals massive adoption of Sigstore for protecting open source ecosystem
- Kubernetes 1.24 (sorti en mai) est la première version utilisant officiellement Sigstore, permettant une vérification transparente des signatures pour protéger contre les attaques de la chaîne d’approvisionnement
- Sigstore est une nouvelle norme pour la signature, la vérification et la protection des logiciels. Elle se veut être un remplaçant pour GPG par exemple.
- Sigstore offre une variété d’avantages à la communauté Kubernetes comme :
- Sigstore’s keyless signing donne une grande expérience de développeur et supprime le besoin de la gestion de clé douloureuse.
- Le journal public et transparent de Sigstore (Rekor) avec ses API permettent aux consommateurs Kubernetes de vérifier les signatures.
- …
Web
RFC 9114 - HTTP/3 est validée (+ RFC 9204 - QPACK: Field Compression for HTTP/3 et RFC 9218 - Extensible Prioritization Scheme for HTTP)
- Basé sur le protocole de transport QUIC qui possède plusieurs fonctionnalités intéressantes telles que le multiplexage de flux, le contrôle de flux par flux et l’établissement de connexion à faible latence.
- QPACK : un format de compression pour représenter efficacement les champs HTTP à utiliser en HTTP/3. Il s’agit d’une variation de la compression HPACK qui vise à réduire la taille des headers.
- Extensible Prioritization Scheme for HTTP : schéma qui permet à un client HTTP de communiquer ses préférences quant à la façon dont le serveur en amont priorise les réponses à ses demandes et permet également à un serveur d’indiquer à un intermédiaire en aval comment ses réponses devraient être priorisées lorsqu’elles sont transmises.
Outillage
- Java 18 support, inlay hints for method parameters, and improvements to class declaration navigation are just a few of the enhancements to expect.
Architecture
- Pas fou fou dans les infos, mais ça fait longtemps qu’on n’a pas eu d’archi
- analyze the system design in terms of availability, latency, scalability and resilience to network failure
- basé sur AWS
- clients via un SDK est intelligent, contrôle le backend utilisé et la bande passante en temps réel
- Open Connect CDN : là où les vidéos sont stockées
- le reste du bon vieux microservice en backend
- ramène les dix meilleurs points d’accès et le client choisi, voire change
- API Gateway via Zuul: dynamic routing, traffic monitoring and security, resilience to failures at the edge of the cloud deployment
- etc
Loi, société et organisation
- 61 milliards de dollars
- Avec un objectif de passer de 3,5 à 8,5 milliard d’EBITDA par an
- Bouger dans la division cloud avec Symantec
- VMWare était content de sa liberté retrouvée après le spin-off de Dell
- Apparemment pas d’alignement de tech
- une expansion de portefeuille dans le software pour broadcom
- VMWare a beaucoup changé de mains ces dernières années
- La stratégie d’investissement de broadcom : acheter des franchises avec une bonne position de marcher et un potentiel de profitabilité augmenté sans gros investissements
- La rumeur
- un ex de VMWare qui pense que c’est la mort de VMWare
Outils de l’épisode
GitHub Copilot quand le code s’écrit tout seul … (en fait non, les développeurs ont encore des beaux jours devant eux)
- A voir aussi: Github Co-Pilot : Addictif ou Efficace ? (Johan Jublanc et Simon Provost) à Devoxx France 2022
Rubrique débutant
Conférences
Source: Developers Conferences Agenda/List by Aurélie Vache et contributeurs
June
- 14: France API - Paris (France)
- 15-18: VIVA Technology - Paris (France)
- 17: Cloud Ouest 2022 - Nantes (FR) + Online
- 21-22: Voxxed Days Luxembourg - Luxembourg
- 23: ServerlessDays Paris - Paris (France)
- 24: SoCraTes Rennes - Rennes (France)
- 27-1: Hack in Paris - Paris (France)
- 28: Dev nation Day France - Paris (France)
- 29-1: BreizhCamp - Rennes (France)
- 30-1: Sunny Tech - Montpellier (France)
- 30-1: Agi’Lille 2022 - Lille (France)
September
- 9: JUG SummerCamp - La Rochelle (France)
- 29: Cloud Nord - Lille (France)
October
- 4-6: Devoxx Morocco - Agadir (Morocco)
- 6-7: Paris Web - Paris (France)
- 10-14: Devoxx Belgium - Antwerp (Belgium)
- 13-14: Volcamp 2022 - Clermont-Ferrand (France)
- 20-21: DevFest Nantes - Nantes (France)
- 27-28: Agile Tour Bordeaux - Bordeaux (France)
November
- 8-9: Open Source Experience - Paris (France)
- 15-16: ParisTestConf - Online
- 15-16: Agile Tour Toulouse - Toulouse (France)
- 17: Codeurs en Seine - Rouen (France)
- 18: Devfest Strasbourg - Strasbourg (France)
- 19-20: Capitole du Libre - Toulouse (France)
December
- 1: Devops DDay #7 - Marseille (France)
- 2: BDX I/O - Bordeaux (France)
- 14-16: API Days Paris - Paris (France) & Online
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 279 - URL ceteris paribus sic stantibus
Posté le 23/05/2022Guillaume et Emmanuel discutent de l’état des versions de Java utilisées, de Java String template, et de beaucoup de failles de sécurité.
On pourra presque se renommer Les Cast Sécu ;P
On y ressuscite aussi la rubrique débutant et discutons du piège de la classe URL
.
Enregistré le 20 mai 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-279.mp3
News
Langages
L’état de Java selon newrelic
- Java 11 commence enfin à être utilisé plus que Java 8 en prod (48% vs 46%)
- Dans les versions non LTS, c’est Java 14 qui a l’air d’avoir le plus de succès
- non LTS en prod est 2,7%
- Après Oracle, c’est la distrib de AWS qui est pas mal utilisée suivi par adoptium
- Beaucoup d’utilisation de Java dans des containeurs (70%) avec 1 seul core, donc aussi moins de bénéfices dans l’utilisation de G1 pour le GC
- Toujours dans les containeurs, les applis Java tournent souvent avec moins de 512MB de RAM (45%)
- les string template c’est ce qui a fournit log4shell donc attention
- Replace certains usages de stringbuilder , stringfromat et messageformat
- Beaucoup de langages offrent ça (bash ahah)
- Exemple d’usage html, json, yaml etc
- Ils veulent permettre des règles de transformations et de validation (escape caractère)
- Peut même éviter le,passage par l’étape du passeur
- Objet template a le template et la policy
- Embedded expressions: chaînes de caractères, arithmétique, invoque méthodes ou champs, pas besoin d’échapper les double guillemets.
- Lignes multiples
- Quid capture des variables locales sans l’avis du développeur. Pas d’exemple meta où le template est importé ou construit.
Un article détaillé sur ce qui est nouveau niveau GC dans Java 18
Librairies
Quarkus 2.8 et 2.9
- WebAuthN
- Confluent Schema Registry
- Kotlin Scala
- RESTEasy Reactive est la couche par défaut
- GraalVM 22
- Elasticsearch Dev Services
Outillage
Un nouveau décompilateur avec du code plus lisible
- Tous plus ou moins un fork de celui d’intellij maintenu par JetBrains, le fork d’avant est de Minecraft
- Reconstruit des constructions de plus haut niveau et plus moderne.
- Exemples
Sécurité
Une vulnérabilité dans struts 2
- Un problème qui n’avait été que partiellement corrigé. Lié à OGNL’et une double évaluation via
%{…}
sur du contenu venant de l’utilisateur.
Le gros trou de sécu sur les signatures Java 15-18
- attaque sur les approches ECDSA (elliptic curve digital signature algorithm), typiquement plus modernes cibles Java web start, Java applets, web services qui utilisent ECDSA (JWT, SAML, OIDC Id tokens, WebAuthN
- version Oracle Java 7, 8, 11, 15, 16, 17, 18, OpenJDK 15, 17, 18 (backport Oracle)
- Comme un psychic paper de dr who: peut signer numériquement un papier sans infos (paramètres de la courbe peuvent être à 0 ce qui permet de valider tous les messages (0)
- L’interprétation pour un framework comme Quarkus
Spring4Shell avec risque de remote code execution (unfolding)
- Mitigations: mettre a jour 5.x, mettre a jour tomcat (tactique), setDisallowedField pour excludes les accès aux getter/setter class, passer a Java 8
- La RCE est basée sur la navigation non restreinte de class.module.classLoader
- Spring MVC Early Announcement
- Spring Cloud exploit announcement
- Spring MVC Exploit Announcement
- Spring4Shell HelpNetSecurity assessment
- Spring4Shell Sonatype Assessment
- Qualys assessment
- Recense les bonnes pratiques en terme de sécurité numérique
- Selon différents thèmes
- Authentication
- Browsing the Web
- Secure Messaging
- Social Media
- Networks
- Mobile Phones
- Personal Computers
- Smart Home
- Personal Finance
- Human Aspect
- Physical Security
Google offre aux clients Google Cloud des libairies validées en sécurité
Une équipe de maintenance Open Source chez Google
Loi, société et organisation
Apple va supprimer au téléchargements les applis non mises a jour depuis 3 ans et peu téléchargées
- ça a fait réagir et râler
- Des applis finies
- Mais surtout une résumassions c’est du taf (nouvelles règles, peut être mise à jour de framework)
- Du cote de Apple c’est nettoyer un peu la longue queue d’applis
- Et encourager les gens à rester au top (eg privacy infos)
Les duchesses ferment leur slack aux hommes
- pas fait de gaité de cœur mais réaction aux événements
- temps des Modérations plus passe sur les posts d’hommes que de femmes
- Sensation de pas laisser la place aux femmes
- Maladresses et manques de respect
- Coupé dynamisme et la sécurité de parole
- Et beaucoup d’hommes et du coup sentiment d’épier
- Les duchess feront toujours des événements mixtes mais cet espace avait perdu son utilité première
Comment la guerre en Ukraine ébranle la tech russe
- fragilisation
- fuite des cerveaux (depuis 2014 et la crimée (cerveaux emprunts de plus de liberté) manque .5 à 1 millions de developpeurs
- Karspersky et les doutes de ses clients (80% du chiffre d’affaire à l’étranger)
- Yandex moteur de recherche protégé car marcher local mais démission du CEO
- Default de paiement (endettement) e.g. VK 400 millions de dollars
- Envisager de raid de disque dur pour consommation locale
Outils de l’épisode
Faire le la configuration conditionnelle dans git
- includeIf permet de faire la condition
- Utile pour changer l’email entre bureau et perso par exemple.
- [aheritier] je le fais souvent avec des repertoires différents pour boulot vs oss/perso
Rubrique débutant
- Les URLs sont égales si les IP sont égales
- donc DNS lookup
- donc pas constant pour la vie de l’instance de JVM
- vive les hash des Set et Map :)
Conférences
JavaDay au Paris JUG: Le futur de Java - le 22 juin 2022
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 278 - En direct de Devoxx France 2022
Posté le 26/04/2022Les Cast Codeurs font la clôture de Devoxx France 2022 en 🪑 et en 🦴.
Enregistré le 22 avril 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-278.mp3
Interview
La vidéo du direct Devoxx France qui est plus facile à suivre :
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 277 - L’interview des 10 ans de cast codeurs à Devoxx par la chaîne Devoxx France TV
Posté le 09/04/2022Les Cast Codeurs passent au grill de Nicolas sur la chaîne TV Devoxx France. Nicolas nous rappelle des moments des 10 ans de Devoxx + Les Cast Codeurs.
Enregistré le 17 mars 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-277.mp3
News
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 276 - Il a coulé mon data center !
Posté le 28/03/2022Emmanuel, Guillaume et Antonio se réunissent pour discuter des nouvelles de ce début de printemps. On y parle retour de JavaOne, revue de pull request, de développement cloud natif, de SLO, et de log.
Enregistré le 25 mars 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-276.mp3
News
Langages
Remplacer vos APIs de logging avec System.Logger
- Blog post rédigé suite à notre épisode 271 (où on avait cité
System.Logger
) - Rapide histoire des APIs de log en Java
- Présentation de l’API
System.Logger
- Formatage des messages basé sur
java.text.MessageFormat
- Utilisation possible des
ResourceBundle
- Niveaux
TRACE
,DEBUG
,INFO
,WARNING
,ERROR
(et nonFINE
,FINER
,FINEST
comme JUL) - Le service
System.LoggerFinder
pour changer l’implémentation (JUG, Log4J, Logback, …) - Etude de perf : Logback est plus performant, suivit de JUG puis Log4J2
Une série de petites librairies Java légères. Librairies simples, avec chacune une tâche unique, dont :
- parsing JSON
- parsing HTML / CSS
- client HTTP
- client mail
- résolveur de noms de paramètres de méthode
- des
Properties
améliorés - un framework d’injection de dépendances léger
- 400: UTF-8 by Default
- 408: Simple Web Server
- 413: Code Snippets in Java API Documentation
- un super guide sur l’utilisation des nouveaux javadoc code snippets
- 416: Reimplement Core Reflection with Method Handles
- 417: Vector API (Third Incubator)
- 418: Internet-Address Resolution SPI
- 419: Foreign Function & Memory API (Second Incubator)
- 420: Pattern Matching for switch (Second Preview)
- 421: Deprecate Finalization for Removal
Librairies
Micronaut 3.3 sorti, avec des nouveautés et Micronaut 3.4 aussi
- graalVM 22
- binding par valeur d’annotations (CDI)
- Serialization (remplace Jackson, plus léger en mémoire, ne fait pas de désérialisation arbitraire, pas de réflexion)
- module email qui permet d’envoyer avec MailJet, Amazon simple email service, SendGrid, Postmark
- Opérateurs Kubernetes
- possibilité de référencer des beans properties dans @Requires
- injection de localized message sources
- nouveau module Micronaut Data MongoDB
- support de Maven pour Micronaut AOT
Hibernate 6: certains points clés
- nouveau parseur HQL (langage plus riche)
- API nettoyées (donc ça va peut-être demander des migrations)
- DDL de meilleure qualité plus adaptée à la base de donnée cible
- requêtes de type rapport (filter, rollup, cube, et les window functions arrivent bientôt)
- arithmétique sur les dates
- indexation des colonnes (SQL plus compact et rapide)
Kubernetes Service Discovery and Selection with Stork
- Stork 1.0
- Quarkus CLI dans homebrew et SDKman
- extension pour le driver Oracle réactif
- terminal interactif
Infrastructure
- hors cryptocurrency
- l’augmentation a continué, mais les efforts d’économies d’énergie ont compensé la croissance de la demande
- hors production du matériel je crois
- les alertes ont fait bouger les lignes
- études source Masanet et al - science et une autre de Malmodin 2020 dans science aussi
Cloud
Sondage annuel “The State Of Cloud Native Development”
- Sondage créé par Slash Data et soutenu par la CNCF
- Interroge 19 000 développeurs sur l’utilisation de Kubernetes, le edge computing, le cloud-native, les conteneurs et orchestrateurs
- Le nombre mondial de développeurs cloud-native a augmenté au cours des 12 derniers mois de 0,3 million, pour atteindre 6,8 millions.
- Dans le même temps, la proportion de développeurs backend impliqués dans les technologies cloud-native a diminué de 3 points de pourcentage, passant de 44 % à 41 %.
- Dans toutes les régions, l’Amérique du Nord (47 %) et l’Europe occidentale (46 %) affichent les taux d’adoption les plus élevés.
- Kubernetes est utilisé par 31% de tous les développeurs backend, ce qui représente une augmentation de 4 points de pourcentage au cours des 12 derniers mois. Actuellement, 5,6 millions de développeurs utilisent Kubernetes.
- Dans tous les secteurs, le edge computing a connu une croissance rapide de l’adoption de Kubernetes et présente désormais les taux d’utilisation les plus élevés des conteneurs et de Kubernetes.
- Parmi les développeurs spécialisés dans le edge computing, l’utilisation de Kubernetes a augmenté de 11 points au cours des 12 derniers mois, pour atteindre 63 %.
- L’architecture Serverless est également attrayante pour les développeurs edge computing : 48 % de tous les développeurs edge utilisent serverless, contre seulement 33 % de tous les développeurs backend.
- Parmi les outils serverless, AWS Lambda continue de jouer un rôle prépondérant. Cependant, Google Cloud Run a considérablement gagné du terrain au cours des 12 derniers mois.
- 99,99 en cible interne, au-dessus il y a tant de variables entre l’utilisateur et le service que c’est perdu dans le bruit (wifi, ISP etc)
- 99,999 pour les infras globales
- disponibilité est fonction du MTTF et MTBR = MTTF/(MTTF+MTTR)
- si on veut offrir 99,99, toutes les dépendances critiques doivent offrir beaucoup plus, règle du 9 supplémentaire
- sinon il faut des mitigations : cache, fail open, etc
- la disponibilité dépend du temps de détection et du temps de récupération
- donc forcer les clients (services dépendants) à baisser leur niveau ou architecturer pour compenser le bas niveau du service dont on est dépendant
- faire des scénarios (p. ex. 1 outage majeur, 3 faibles - p. ex. un shard, 5 de dépendances)
- considérer que la perte d’un shard du service veut dire SLO est 1 n-ième indisponible (n étant le nombre de shards)
- donc il reste peu de temps pour réagir quand on compte le temps de detection, le temps de paging, etc.
- error budget : 1-SLO, sur un mois et pouvant être une fenêtre glissante pour remonter graduellement. Si budget dépensé, on ne fait plus de mise en prod sauf critical security issues ou si c’est pour corriger les causes du problème qui a consommé le budget
- rendre le plus de dépendances possibles non critiques (par exemple en éliminant les SPOF)
- faire revue d’architecture pour identifier ces dépendances et leurs impacts
- appels a trois pools de serveurs indépendants et prendre le premier résultat
- les dépendances asynchrones peuvent réduire le nombre de dépendances critiques
- retours arrière rapide et automatisés : en enlevant un humain de la boucle on raccourcit les temps de réponse
- et bien d’autres choses encore.
Architecture
Les design patterns pour les systèmes distribués et donc les microservices
- survol et définitions des patterns qu’il faut connaître dans les microservices
- Pas trop dans le détail donc bon survol
- Idempotence, asynchronicité, health-check, feature flag, fallback
- Bulkhead: cloisonnement
- Metrics, monitoring, alarmes
- Rate limiting, backpressure, etc
Méthodologies
La pyramide des fondamentaux dans la revue de code
- codifie les points sur lesquels se concentrer sur la revue de code et ceux avec une priorité plus basse
- automatiser les points bas comment le style de code pour éviter de perdre du temps et de la frustration humaine
Sécurité
Removed unencrypted Git protocol and certain SSH keys
- nettoyage de printemps
- plus de
git:
qui est non sécurisé - plus ne nouvelles clés RSA SHA1
- plus de DSA
- de nouvelles courbes elliptiques
Samsung utilise incorrectement la crypto rendant son enclave sécurisée, pas sécurisée
- l’article n’expose pas les détails techniques
- 100 millions de téléphones
- la même clé était réutilisée (et pas encapsulée)
- le vecteur d’initialisation pouvait être configuré et réutilisé à valeur unique
- n’importe quelle application pouvait essayer d’accéder aux secrets de l’enclave en essayant les combos parce que l’application avait accès à ces paramètres
- quand on réutilise les vecteurs d’initialisation, on peut faire un 1-1 entre le message clair et chiffré, ce qui permet de revenir a message clair si on produit le même message chiffré.
- https://knowledge-base.secureflag.com/vulnerabilities/broken_cryptography/reused_iv_key_pair_vulnerability.html
Loi, société et organisation
Un développeur sabote son projet open source et paralyse des milliers d’applications
Violation de RGPD par utilisation de Google fonts
French privacy regulator rules against use of Google Analytics
Une entrée en bourse pour Sonatype
Conférences
JavaOne à Las Vegas du 16 au 20 octobre 2022
- Java language & platform, cloud-native development, database, microservices, DevOps, artificial intelligence & machine learning, security & application management, and more.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 275 - Interview sur le darwinisme numérique avec Didier Girard - partie 3
Posté le 21/03/2022Cet épisode est un échange entre Guillaume, Antonio, Emmanuel et Didier Girard sur les réflexions de Didier autour du darwinisme numérique. Cette troisième et dernière partie nous emmène sur les chemins des choix organisationnels que ces natifs du numérique à succès emploient.
Enregistré le 17 février 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-275.mp3
Interview
Ta vie ton œuvre
Modèle organisationnel
L’individu
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/