J’ai assisté au Very Tech Trip le 2 février dernier, organisé par OVH Cloud.

Voici quelques notes des différents talks que j’ai pu écouter. J’ai pas forcément noté les noms de tous les speakers par manque de temps 😭 Les replays seront bientôt disponibles !

Sauvegardez et restaurez proprement vos applications kubernetes

Velero est un utilitaire facilitant la gestion de backups sur Kubernetes. Au delà des fichiers de confs, ça permet aussi de gérer les volumes qui peuvent être associés à des StatefulSet par exemple.

L’installation se fait via un chart helm.

On détermine quels volumes sauvegarder via des annotations sur les pods.

Possibilité d’avoir des hooks sur lesquels se brancher avant ou après backup. Ca peut être utile pour déclencher certaines requêtes SQL par exemple ou notifier.

Le monitoring du backup se fait également via annotation.

Kyverno: Outil permettant de vérifier la déclaration des backups.

Bonnes pratiques pour les backups:

  • Appliquer la règle du 3/2/1 pour les backups: 3 copies des données sur 2 supports différents dans au moins une autre localisation.
  • Toujours tester la création de backups mais surtout sa restauration !

Testing microservices

Problèmes: Dépendances entre les microservices. Plusieurs bdd. Test d’intégrations compliqués.

White box testing Framework de test associé au langage. Black box testing Code inconnu, on se base sur les entrées/sorties pour vérifier le bon comportement du programme. Gray box testing la jointure des deux mondes.

Chez OVHCloud, ces deux outils sont utilisés:

Une demo est accessible ici.

Find your application bottlenecks with tracing

Opentelemetry (logs : elasticsearch, Loki…). Metrics montrent la conséquence. Les traces (tempo, Jaeger) générées par les requêtes pour voir ce qui prend du temps.

Les spans sont des traces filles à la trace principale. Le tracing sert à identifier les problèmes.

L’autoinstrumentation permet de générer des traces sans changer le code. Ca peut se faire grâce au standard opentelemetry.

Les librairies tierces se rattachent aux hooks des bdd (.net, python, java, node.js).

Collector: ne pas perdre de temps/perf à logger, fonctionne en udp + asynchrone. Il peut y avoir en sidecar par pod, daemonset par node ou central.

Annotation k8s pour activer le tracing sur le pod ( Instrumentation.opentelemetry.io/inject-python: true).

Exemple disponible ici

Une application résiliente dans un monde partiellement dégradé

Probablement mon talk préféré de la journée ! 🎖

Règle des X-nines : Taux de disponibilité, permet de donner une estimation de jours d’indispo. 4 neuf => 99,99%

Les taux de disponibilité se multiplient. Quand il y a des dépendances entre plusieurs api, on multiplie les taux de chacune. Quand on a plein de services dont on dépend, cela a un impact négatif sur notre propre taux de disponibilité.

Le “Blast radius” d’une application : l’impact de son downtime sur les autres applications qui la consomment.

Service Level Indicator : Mesure qualitative d’un aspect du niveau de service. Taux d’erreur, latence, nombre de requêtes traitées - débit , durabilité.

Service Level Agreement: Contrat avec l’utilisateur. Qu’est-ce qui se passe si nos objectifs sont pas respectés ? Généralement, on offre un petit discount financier au client.

  • Mettre en place une alerte uniquement quand il faut faire quelque chose ! Sinon, on se retrouve innondé d’informations.

Alerte sur un niveau de CPU useless: ça peut être pertinent que le CPU s’active s’il y a bcp de traitements. Toujours se demander lorsqu’on crée une alerte si quelqu’un a besoin d’être réveillé pour ça.

Architecture Des microservices sans communication asynchrone, c’est monolithe distribué.

Ajouter un cache augmente pas la résilience. Ça ajoute un intermédiaire et réduit le taux de disponibilité

Tips - Mettre des durées de cache aléatoire pour éviter qu’une DB soit sur-solicitee d’un coup pour plusieurs entrées qui expirent en même temps. - Heures aléatoire sur les crons, ne pas tous les jouer en même temps. - Une requête a échoué? On peut réessayer mais on limite le nb de fois. (Exponential backoff: on attend de plus en plus lgtps entre les tentatives.) - “Choose boring tech” - Penser son application en mode dégradé: jeter 10% du trafic pour soulager DB ou ne pas afficher des parties d’une application en cas d’indisponibilité du service qu’elles consomment. - Chaos engineering: prévoire que tout peut va casser. Provoquons des pannes en prod pour avoir l’habitude de réparer.

Merci @pascal_martin !

Comment gérer des journées de 35h

  • Multiplier ses activités pour s’habituer

  • Rainbow Calendar Permet de voir en un code couleur les différents activités.

  • l’asynchrone

Ane en a fait un très bon sketchnote.

https://twitter.com/ane_naiz/status/1621199493118009345

Vanilla js - Web Platform

La web platform (HTML, CSS, Javascript) fournissent un standard dont l’apprentissage servira une vie.

Parmi la web platform, se trouve les web components qui permettent de créer ses propres balises. Cette spec a bientôt 10 ans et sert encore.

Playwright >> Tests end to end

The web platform is back.

WebPaaS - Déploiement d’applications sur le cloud

Marine Gandy a fait une démonstration du déploiement d’une application Drupal sur le WebPaas d’OVHCloud.

On peut gérer une multitude de services grâce à une gestion complétement externalisée, ça donne envie!

Code promo pour tester: vtt23webpaas

Dis c’est quoi ton setup ?

Fleet : IDE alternatif Finicky : App qui permet de définir par URL quel browser on choisit pour l’ouvrir. Brave: Navigateur permettant de gérer plusieurs profils selon l’utilisation (pro, perso…) Raycast: Déjà testé et approuvé, c’est un Spotlight sous Mac mais en bien mieux ! Kopia pour faire des backups.

Terminal OhMyZSH fournit des plugins plutôt cools : - Zsh syntax highlighting - Zsh autosuggestions - Starship pour changer le thème

Tmux - tmuxinator

  • Nvm gestion de node. Jenv.
  • Upterm pour partager un terminal via ssh. Pour accéder à des serveurs. Ou tmate
  • Github cli.
  • Httpie au lieu de curl
  • Bat au lieu de cat
  • Tldr au lieu de man (sympa et coloré)
  • O au lieu de open.
  • GTI pour la blagounette quand tu mistype git.
  • dotfiles. Repo got qui contient ta config de terminal. Y a un script dans la racine.

@v_maerten @cedric_gatay

Les replays des conférences seront bientôt disponibles. Encore merci OVHCloud !