Devoxx 2023
Des tuyaux sur les pipelines
- Ramener la qualimetrie vers le début du build
- Mettre en cache dans les builds une journée suffit généralement. Penser à mettre une durée sur les caches pipeline
- Test d’application mobile : Appium
- Outils de test de charge
- Scan de vulnérabilité, chercher DAST sur OWASP
- Établir les SBOM pour des raisons qualité et sécurité
- Syft
- OWASP Cyclone DX
- Format standard SPDX
- Déplacer des images d’un registry à l’autre
- Contruire une image depuis un container
- Analyse des dépendances
- Staging correspond lexicalement aux stages de testing
- GitOps = git est la source de vérité
- Modèle Expand / Contract pour gérer les rollback de données en prod
- SAST / DAST / Secrets / Dependency / Licenses
- Containers Scanning / Operational Scanning
- Publier les tests dans gitlab
NodeJS : patterns et outils pour partir en production sereinement
- 4 Go de ram par defaut, ajouter ’max_old_space_size’ pour changer
- On peut faire des pools de worker thread avec piscina
- Node clinic.js pour analyser les problèmes de perfs
- Pour tester express : supertest
- Pour gérer les problèmes de rejected unhandle error : express-promise-router
- zod permet la validation de schéma json
- Il est bon de mettre des timeout sur les fetch
const url = "https://path_to_large_file.mp4"; try { const res = await fetch(url, { signal: AbortSignal.timeout(5000) }); const result = await res.blob(); // … } catch (err) { if (err.name === "TimeoutError") { console.error("Timeout: It took more than 5 seconds to get the result!"); } else if (err.name === "AbortError") { console.error( "Fetch aborted by user action (browser stop button, closing tab, etc." ); } else if (err.name === "TypeError") { console.error("AbortSignal.timeout() method is not supported"); } else { // A network error, or some other problem. console.error(`Error: type: ${err.name}, message: ${err.message}`); } }
https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/timeout
- Cockatiel est une lib qui permet d’implémenter un circuit breaker ou un bulkhead facilement
Playwright : l’outil qui va révolutionner les tests end-to-end
- Playwright by Microsoft
- Hérité de Puppeteer
- Un Codegen et un UI mode pratique et sympa
- Utiliser des locator getByRole (cf Testing Library)
- Playwright dispose d’un système d’auto wait qui évite de configurer des timeout partout pour attendre le chargement de page.
- Il est possible d’utiliser des nested locator.
- Il est possible générer des traces visualisables dans l’UI mode.
- Intégré avec Cucumber
- La comunauté n’est pas immense et surtou en anglais
Alice au pays d’OpenTelemetry
- OpenTelemetry.
- Full compatible avec Prometheus pour import et export.
- Il faut utiliser la distribution avec les addon pas juste la distrib core.
- Il faut penser à définir les resources correctement
- Tempo de Grafana Lab pour stocker les traces
- Loki pour les logs. Manifestement compliqué à mettre en place le gars n’est pas arrivé à faire ce qu’il voulait
- Faire un mapping des status http vers le level des logs
- warn: 5xx
- error: 4xx
- info: 3xx
- debug: 2xx
Hidden security features of the JVM - everything you didn’t know and more
- Sealed les jar pour plus de sécurité
- La serialization est le point d’attaque principal, il permet d’injecter n’importe quoi dans la JVM
- https://bomdoctor.sonatype.com
Loi de Conway
- L’organisation conditionne la structure du produit wikipedia
- Explorer l'Event Storming et la context map
Nouveautées Java 19 / 20
- Record pattern avec destructuration
- Valable aussi dans les boucles depuis la 20
- Panama
- Foreign Function = accès à la mémoire Offheap et appel de fonction externe
- Vector pour les calculs Vectoriel SIMD sur les cpu RISK
- Loom
- Thread Virtuels
- Structured Concurrency = Remplace les Future avec des Thread Virtuel
- Scope Value = Remplace les ThreadLocal pour les Thread Virtuel
Docker vs Jib vs Pack
- Compression de binaire avec UPX
- Spring boot à un profil native
- CNB avec pack pour images natives
- plugin maven packito-buildpack
- Termgraph pour les grap dans le terminal
PostgreSQL
- Génération de données
- Partionning de tables par list ou hash
- Postgres Anonymizer = extension pour anonymizer les données en live par utilisateur
- Row level security
- Capaciter à monter un fichier en table et de l’intéroger comme une table avec les foreign wrapper
- Stockage Json (attention de respecter les bonnes pratiques)
- Capacité d’interooger des sous-éléments
- Capacité de sauver des sous-éléments
Terraform
- tfstate est ce qui a été fait et permet de gérer la suppression des ressources
- Il présente un risque de désynchronisation
- Azure Policy pour appliquer des règles de sécu sur certaines resources
- Drftctl permet de contrôler les dérives du tfstate
- Terraform state rm et import pour remettre à jour le tfstate
- La création de modules permet de forcer les conventions et les valeurs par défaut
- Attention refactor un module présente un risque de casser le tfstate si les noms changent
- Terraform n’est pas fait pour remplir les resouces mais pour les déployer
Divers
- Pirsch Analytics
- Crowdin est une plateform de localization collaborative gratuite pour l’open source
- Ant design Alibaba est un framework front
- Tech radar
- OctoDNS
- octodns-dump pour recupérer
- gestion des dns par repo git
- octodns-validate pour valider la syntaxe
- R2DevOps et gitlab tobecontinuous
- gitlab-cli pour gitlab en ligne de commande
- gitlab-ci local pour les pipelines en local
- Spring 3 Observability