LCC 271 - UPX version Spinal Tap

Published: Jan. 17, 2022, 8:59 a.m.

Antonio, Guillaume et Emmanuel discutent 11, le 42 du rockeur, Quarkus, Java 17, limites de Kubernetes, #Y2k22, web3, Maven, Log4J, et et et cloud souverain.

Enregistr\xe9 le 14 janvier 2022

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

News Langages

Quoi de neuf dans Java 18 de Lo\xefc Mathieu

  • Feature complete (mais encore des bugs)
  • UTF\u20138 par d\xe9faut
  • exemples de code dans la javadoc avec @snippet y compris des references a des fichiers ext\xe9rieurs
  • Simple Web Server pour des resources statiques (comme d\u2019autres platformes comme Ruby ou Python je crois. En code ou via la commande jwebserver
  • le m\xe9canisme de finalisation propos\xe9 \xe0 la suppression --finalization=disabled pour tester. Celui-l\xe0 il ne nous manquera pas
  • r\xe9-implementation de la r\xe9flection avec les MethodHandle

Le calendrier de l\u2019Avent Java 2021 a plein d\u2019articles tr\xe8s int\xe9ressants

Cinq choses que vous ne saviez pas sur la concurrence en Java

  • l\u2019ordre du programme et l\u2019ordre d\u2019ex\xe9cution n\u2019est pas le m\xeame, mais il est s\xe9mantiquement similaire
  • le nombre de threads dans une JVM est limit\xe9 (d\xe9pend de la machine)
  • plus de threads ne veut pas dire plus de perfs
Librairies

Quarkus 2.5 et 2.6 sont sortis:

  • API programmatique pour interagir avec le cache
  • Kotlin 1.6
  • Java 17 par d\xe9faut pour les nouveaux projets g\xe9n\xe9r\xe9s
  • des extensions ont boug\xe9 du core vers le quarkiverse hub, peut-\xeatre quelques impacts de migration
  • images container plus petites en natif et compression UPX possible
    • plus petit sur disque mais plus gros en memoire (pour la d\xe9compression)
    • quarkus.native.compression.level de 1 \xe0 10 dans le fichier de config
  • dev service pour Oracvle DB

Utiliser Neo4J pour analyser le chemin de code et pourquoi un bout de code est inclus en natif

  • super utile pour les compilations natives
  • quarkus.native.enable-reports pour avoir le rapport exploitable par neo4j

SmallRye Stork

  • service discovery et client side load balancing
  • support pour Consul, Eureka, and Kubernetes
  • extensible notamment pour le load balancing
  • int\xe9gration avec Quarkus REST Client et gRPC
  • dans la config stork://hello-service
Infrastructure

Pourquoi et comment de la taille des containers Kubernetes

  • quand on ne partage pas, inefficient mais s\xe9curis\xe9
  • Avec des VM, on peut overcommitter des resources sur l\u2019hyperviseur mais risque sur m\xe9sentente
  • Ne remplace pas le capacity planning
  • Containers d\xe9finissent des filtrages plus fins et tuent les process qui d\xe9passent
  • Discussion cpu_share (proportion en balance), cpu quota, cpu period pour d\xe9finir les limites basses et hautes
  • mais si \xe7a reste statique par host c\u2019est pas tr\xe8s pratique
  • Orchestration de container via Kubernetes (request = min, limit = max)
  • Kube donne au minimum request mais peut donner plus si le noeud n\u2019est pas occup\xe9 \xe0 100%
  • Attention, la partie libre n\u2019est pas distribu\xe9e \xe9quitablement mais en proportion du ratio de request demand\xe9 vs les autres. Donc les containers avec des grosses request sont privil\xe9gi\xe9s. Donc mettre limit est important
  • Donc jouer le jeu request et monitored pour ajuster \xe0 la baisse si n\xe9cessaire. Tous les workloads doivent jouer le jeu.
  • Kubernetes QoS (best effort , burstable et guaranteed) utilis\xe9 lorsque on tourne bas en m\xe9moire (pas en cpu !)
  • Discussion de la s\xe9lection du noeud (selector, affinity, taints and tolerations ou isolation/ restriction) pour isoler des qualit\xe9s de service ou pr\xe9dictabilit\xe9, pour la s\xe9curit\xe9 etc )
  • besoins m\xe9moire : si utilisation max, pod killed. Besoins CPU : si utilisation max, on est throttled -> slow
  • Mettre m\xe9moire request = limit sauf si le process peut rendre de la m\xe9moire (pas fait avant java 11)
  • CPU request = limit si la pr\xe9dictabilit\xe9 de l\u2019application est tr\xe8s important.
  • Etudier conso CPU de l\u2019appli en percentile et targeted par exemple une garantie \xe0 99% ou 90 ou moins si pas sensible
  • Article ne parle pas du scale out

Exchange 2016 et 2019 souffrent du bug de l\u2019an 2022 Y2K22

  • Apr\xe8s Matrix et son opus Resurection, Microsoft relance le bug de l\u2019an 2000, 22 ans apr\xe8s, Y2k22
  • dans Exchange server 2016 et 2019 et d\u2019autres systems non microsoft
  • pour Exchange c\u2019est du au systeme de scan d\u2019antivirus qui ne reconnaissait pas les dates des signatures de virus 22010100001 parce que le software stocke les dates dans un entier sign\xe9 2^31-1=2147483647 et la date est stock\xe9e sur les deux premiers chiffres.
  • le workaround initial est assez marrant, le software consid\xe8re qu\u2019on est le 33 d\xe9cembre 2021 2112330001
Web

Moxy de Signal (ex) discute web3

  • web1 \xe9tait d\xe9centralis\xe9, web2 est riche mais centralis\xe9, web3 sera riche et d\xe9centralis\xe9
  • probl\xe8me: les gens n\u2019aiment pas faire tourner leurs propres serveurs et ne l\u2019aimeront jamais
  • m\xeame les entreprises ne font plus tourner leurs serveurs
  • un protocole (standard) bouge beaucoup plus lentement qu\u2019une plateforme
    • exemple Spring, exemple Quarkus vs Microprofile ou Jakarka EE
  • puis discute blockchain et NFT
  • l\u2019\xe9tat et la logique / les permissions pour mettre a jour sont d\xe9centralis\xe9es mais pas l\u2019interface avec l\u2019utilisateur
  • blockchain est une confiance entre serveurs plus qu\u2019entre clients
  • avec le mobile, les clients ne peuvent pas acter en tant que server (voir Bitcoin)
  • donc des gens vendent des acc\xe8s centralis\xe9s aux noeuds de la blockchain
  • et les clients de ses APIs ont une confiance implicite (et pas par le syst\xe8me)
  • et centralisation des acc\xe8s et donc mining de ces informations
  • NFTs stockent l\u2019URL de l\u2019objet (sans hash) donc pas s\xe9curis\xe9 sans parler du rachat de domaine
  • il a fait un NFT qui se change en \xe9moji caca pour celui qui l\u2019a achet\xe9
  • et il s\u2019est fait virer son NFT ET sa preuve de possession
  • mais c\u2019est une blockchain ???
  • sauf que le wallet passe par des fournisseurs centralis\xe9s
  • pour faire web3, les gens se concentrent autour de plateformes, un comportement tres web2
  • donc la blockchain et NFT ont du succ\xe8s pas parce que c\u2019est distribu\xe9 mais parce que c\u2019est un gold rush
  • la dynamique rend les projets web3 successful mais fondamentalement les m\xeames dynamiques vont les centraliser
  • propositions
    • accepter que les gens ne font pas tourner leur serveurs et utiliser la crypto pour distribuer la confiance
Outillage

Maven 3 \xe0 5 une explication

  • le POM est fig\xe9 parce c\u2019est ce que publie maven central, donc maven 3 ne fera que des am\xe9liorations mineures
  • Maven 5 la proposition: avoir un POM de build (v5) et produire un POM de consommation en v4, comme les autres syst\xe8mes de builds font
  • Maven 4 va faire la meme s\xe9paration mais en faisant un POM v4 build to PO)M v4 consumer conversion en \xe9tape interm\xe9diaire
  • maven 4 alpha 1 se rapproche, il attend juste des contributions de @aheritier
  • blog de Herv\xe9 Boutemy
  • Maven Wrapper (ex takari) est d\xe9sormais un projet officiel apache maven : https://maven.apache.org/wrapper/maven-wrapper-plugin/
  • idem pour Maven Daemon https://github.com/apache/maven-mvnd
  • Le maven Build Cache arrive : https://github.com/apache/maven-build-cache-extension
S\xe9curit\xe9

Comme pr\xe9vu, la saga log4j continue avec Log4j 2.17 et 2.17.1

  • avec l\u2019augmentation de la visibilit\xe9, plus de probl\xe8mes vont \xeatre trouv\xe9s
  • Log4J 2.17 corrige un appel r\xe9cursif infini exploitable en d\xe9ni de service. Besoin d\u2019avoir un pattern non standard dans la config (utilisant les context lookup) et un acc\xe8s au Thread Context Map par l\u2019attaquant (5.9) https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45105
  • Log4J 2.17.1 fixe un abus du JDBCAppender qui peut r\xe9f\xe9rencer une URL JNDI et executer du code a distance mais l\u2019attaquant doit pouvoir modifier la configuration de log4j (6.6) https://logging.apache.org/log4j/2.x/security.html#CVE-2021-44832
  • doit-on quitter le navire ? \xe9quilibre entre fonctionnalit\xe9s et s\xe9curit\xe9
  • on fera un \xe9pisode sp\xe9cial log4Shell bient\xf4t

H2 vuln\xe9rable \xe0 une attaque JNDI

  • fondamentalement comme log4shell
  • Mais exploitable pour ceux qui passent une url ou un login mot de passe via des infos utilisateur
  • Par exemple h2 console
  • Mais localhost par d\xe9faut
  • Sauf dans jhipster
Loi, soci\xe9t\xe9 et organisation

Tribune de Didier Girard sur le cloud souverain

  • investissement de 1,8 milliards sur 4 ans dans le cloud fran\xe7ais sur 4 ans. C\u2019est moins que chaque grand cloud provider par an
  • consortiums europ\xe9ens mais mauvaise histoire CloudWatt, Gaia-x et ses probl\xe8mes de gouvernance
  • initiative Soutenu par la d\xe9pense publique
  • Cloud de confiance est un moyen pour Didier du transfert technologique et de casser l\u2019asym\xe9trie de comp\xe9tence et d\u2019investissement
  • \xc7a r\xe9pond pas aux probl\xe8mes cl\xe9s lev\xe9s par Quentin dans l\u2019interview

La Maison Blanche demande \xe0 Oracle et Microsoft de r\xe9fl\xe9chir \xe0 la s\xe9curisation des logiciels libres

Outils de l\u2019\xe9pisode

Rambox

  • en general je pr\xe9f\xe8re les applis natives pour chaque service
  • Mais avec les messageries instantan\xe9es c\u2019est la chianlie
  • Et il y a les apps qui sont des tabs dans le navigateur (Trello, Gmail, calendar etc)
  • L\xe0 tout est centralis\xe9 dans une seule app (notifications etc)
  • C\u2019est comme un mini browser d\xe9di\xe9 avec des sites webs fixes
  • Et contre toute attente j\u2019aime bien
  • Version gratuite et version pro.
  • Encore des limitations (vue de deux apps en parall\xe8le) mais ils travaillent \xe0 une nouvelle version
Conf\xe9rences

Sunny Tech \xe0 Montpellier le 30 juin et 1er juillet \u2014 CfP ouvert jusqu\u2019au 28 f\xe9vrier

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/