Skip to content
GitHub

Devoxx 2023

  • 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é
  • 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

Section titled “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

Section titled “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
  • 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

Section titled “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
  • 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
  • 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
  • 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
  • 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