LCC 297 - Lockless design

Épisode de Les Cast Codeurs Podcast par Emmanuel Bernard, Guillaume, Antonio, Arnaud, Katia · 12 juin 2023 · 1 h 14 min

Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d'open source et bien sûr les large language models. On répond aussi à la question fondamentale: mais pourquoi Maven n'a pas de fichier .lock ?

Enregistré le 9 juin 2023

Téléchargement de l'épisode LesCastCodeurs-Episode-297.mp3

News

Langages

Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente présentation de Large Language Models, des GPT https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2

Il parle du fonctionnement des LLM, comment/pourquoi ils arrivent à générer ce qu'ils génèrent

Le fine-tuning, l'apprentissage renforcé avec feedback humain, l'art du prompting

Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act)

Leaning Technologies annonce l'arrivée prochaine de CheerpJ 3 : le retour de Java dans la navigateur, grâce à WebAssembly https://leaningtech.com/announcing-cheerpj-3-0-a-jvm-replacement-in-html5-and-webassembly-to-run-java-applications-and-applets-on-modern-browsers/

Avant la version 3.0, CheerpJ utilisait une approche AOT (ahead of time compilation) qui nécessitait aussi une étape d'intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet

Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus à l'approche de Java lui même

Plus besoin non plus de version custom d'OpenJDK

Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly :smile:

Communauté RUST: Il y a de l'eau dans le gaz https://www.jntrnr.com/why-i-left-rust/

Plus d'infos https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849

lié au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l'exterieur

en gros ils ont un process interne pour prendre des decisions

avec ce process ils ont invité une personne pas super pro Rust a faire la keynote a RustConf

d'autres du commité ont vu ca et on discuté en backchannel pour revenir en arriere de la decision (sans suivre le process)

il y a eu une semaine de pause avant action mais pas annoncé

le speaker a ete dé keynoté et a donc refusé de venir a la conf

et paf, ca enerve des gens decisionaire et ils demissionnent

Bref des gens qui veulent faire le bien mais en cercle un peu trop ferné et paf

Les gens de Wasmer étendent WASI avec WASIX, on rajoutant le support POSIX, les threads… permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL ou autre https://wasmer.io/posts/announcing-wasix

ca frotte un oeu entre innovation et standardisation dans la communaite WASM

WASMER sont un peu les cowboys startuper

par exemple ils ont essayé de deposer la marque WebAssemble au nez et à la barbe de la communauté

donc la reaction du coeur de la communauté a cette annonce est plutôt calme

WASI c'est standard mais ca prend du temps a maturer

WASIX c'est cool et dispo maintenant mais c'est un produit d'une société spécifique, donc pas de portabilité

Librairies

Guava 32 est sorti et beaucoup de choses annotées en @Beta ne le sont plus https://www.reddit.com/r/java/comments/13w2l8w/guava_320_released_today_and_the_beta_annotation/

ont eu des API en @Beta pendant longtemps pour proteger des risques de changements

en pratique quasi personne ne se limitait au non beta, et elles n'ont pas bougé ces API ou peu

donc ils ont enlevé @Beta de la plupart

beaucoup de parties de Guava sont dans le JDK, le cache est dans Caffeine

des bons echanges dans les commentaires entre les utilisateurs et Kevin un des mainteneurs chez Google

Comment démarrer avec l'API PaLM de Google, mais en Java! https://glaforge.dev/posts/2023/05/30/getting-started-with-the-palm-api-in-the-java-ecosystem/

Guillaume a écrit une petite application qui génère des histoires pour enfants avec un Large Language Model (l'API PaLM)

https://bed-time-stories.web.app/

Le code est dispo sur Github https://github.com/glaforge/bedtimestories

Il explique également le processus incrémentale des prompts qui aident à générer aussi le contenu de l'application https://glaforge.dev/posts/2023/06/08/creating-kids-stories-with-generative-ai/

Infrastructure

Debezium 2.2 https://debezium.io/blog/2023/04/20/debezium-2-2-final-released/

Experimental, opt-in Parallel Snapshots

Incremental snapshots with surrogate keys

Quarkus 3 support

Ingestion of Oracle changes from logical standby instances

Google Spanner improvementsNew Debezium Server sinks for Infinispan, RabbitMQ, and RocketMQ

New Storage APIs for Amazon S3 and RocketMQ

Many MongoDB improvements

Cassandra connector for Cassandra Enterprise

Un article sur l'utilisation de Kafka par CloudFlare https://www.infoq.com/articles/kafka-clusters-cloudflare/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=architecture-design

c'est du "classique" mais bon de se le faire rappeler

beaucoup d'evenements CloudFlare passent pas Kafka pour processing

Kafka en tant que bus generique

Ils ont imposé un message unique par topic via protobuf

ils sont une Application Service team (internal developer platform) depuis peu de temps

gitops pour creation de topic etc

développé un connector framework declaratif pour étendre le pannel de patrons d'architecture disponibles

developé des SDKs d'access a KAfka avec monitoring (prometheus)

sympa a lire

Post mortem du problème chez datadogHQ https://www.datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue/

data dog a perdu tous ces services dans la plupart ou toutes ses regions pendant 3 heures avant la premiere recuperation et 10 heures au total pour la recuperation totale

Equipe : 10 senior engineering leaders, about 70 local incident commanders and a pool of 450 to 750 incident responders active throughout the incident, which required four shifts to bring the incident to full resolution.

cause: une mise a jour de systemd appliqué sur la plupart de leurs VM en quasi parallele qui a effacer les routes des container et ne les a aps remis ; c'est un cas qui n'arrive pas au reboot d'un noeud (init sequence)

des 10000s noeuds impactés

en general ils font du rollout par region en enlevant les noeuds etc mais le base os avait un legacy update channel activé (vs gere pas les equipes de datadog manuellement)

les noeuds de controlleurs qui sont cense recycler les noeuds n'ont pu le faire vu le volume de noeud et surtout parce qu'eux meme étaient effectés

l'autre article

Cloud

Le data center parisien europe-west9-a est en panne depuis 3 semaines https://www.lebigdata.fr/data-center-panne

un feu s'est déclenché qui a touché une zone

le DC reste opérationnel sur les zones non touchée sauf BigTable qui a besoin de la zone touchée

les autres services fonctionnent

sauf les applis utilisateurs qui ne tournaiuent que sur la zone affecté

Outillage

Podman Desktop 1.0 est sorti https://podman-desktop.io/blog/podman-desktop-release-1.0

pas grand chose a dire que c'est la 1.0

"Works on my machine"

Contract testing with Pact https://hollycummins.com/contract-testing-devoxx-greece/

Conference

quand on change un microservice l'autre casse

les tests d'integration sont lent, instable et demande des grosses machines ou des environnements remote de dev

mock / unit tests ne sont pas vraiment le code de l'autre équipe

D'où Contract test qui vit entre les end to end et les unit tests.

Peut partir d'un test mock et rempalcer avec pact cote consommateur

en faisait tourner, un pack listener enregistre la declaration (le DSL) et le retours attendus / generés par l'appel du test

copier ce fichier vers le producteur

copier a la main, dans le repo, via a broker

ajoute un test pact cote producteur qui va exercer le JSON et verifier que cela marche

tests de pack sont plus profonds qu'un test OPENAPI

consommateur utilise pact comme mock et verifie le provider wrt le contract du mock

Autres épisodes de « Les Cast Codeurs Podcast »

À propos du podcast

Les Cast Codeurs : le podcast en français de, par et pour les développeurs. Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview. Supportez les radotages de vos hôtes : Emmanuel Bernard (ex Red Hat,…

Les Cast Codeurs Podcast

Épisodes similaires

Tous les épisodes de Les Cast Codeurs Podcast · Plus de podcasts Actualités