29/11/2019
Retour sur la conférence BDX I/O 2019 par Jean-Baptiste Hembise
Quelle était l’ambiance de BDX I/O ?
Une ambiance à la fête avec le thème de la Feria : habits blancs et foulards rouges ont égayé cette journée d’automne, sans oublier la mascotte déguisée en vache tachetée, d’humeur joyeuse !
Ambiance cosy aussi : adieu les locaux de l’ENSEIRB et bienvenue au Palais des Congrès de Bordeaux. Un bâtiment flambant neuf situé dans les quartiers nords de la métropole avec une plus grande capacité d’accueil. Et ça tombe bien, car en ce 15 novembre, nous étions presque 900 participants pour 52 speakers !
Quel est ton top 5 de tes conférences préférées ? Tu peux nous les résumer ?
Dans l’ordre d’apparition :
1. “Test d’architecture avec ArchUnit : mise en oeuvre pour le DDD” par Xavier Blanc.
Nous connaissions déjà le speaker chez ekino : Xavier Blanc était venu nous parler des tests exploratoires à une édition du Meetup BEST, début 2019. Dans cette conférence, il nous a fait un retour d’expérience sur l’utilisation de la librairie Java ArchUnit, qu’il utilise pour vérifier l’application de bonnes pratiques du Domain Driven Design (DDD); par exemple, la pureté du domaine métier (aucune dépendance avec le reste du code). Le travail de recherche, qu’il a supervisé en tant que professeur à l’Université, a abouti à la création d’un plugin Gradle (❤️) capable de vérifier 80 contraintes propres à DDD sur un code source Java compilé.
En conclusion, Xavier Blanc semblait satisfait de l’utilisation d’ArchUnit, qu’il considère comme un “Linter” et non comme un framework d’écriture de tests. Ces travaux ont permis à son équipe de clarifier des règles et de les vérifier dans le code moyennant – il faut l’admettre – une bonne dose de configuration (annotations Java et conventions de nommage).
Pour voir sa conférence : https://www.youtube.com/watch?v=hvJEjga-SHg
2. “Istio, le meilleur ami de votre cluster K8S ❤️” par Kevin Davin
CTO de StackLabs, Kevin Davin est un passionné du code, de Google Cloud et de Kubernetes. Dans son talk, il souhaitait nous faire découvrir une solution étonnante qui se marie très bien avec Kubernetes : Istio.
Istio prend le contrôle du réseau de nos microservices grâce à un composant simple mais puissant : le proxy Envoy. Véritable side-car de nos applications, ce “Smart Proxy” vient se placer à côté de celles-ci et intercepter tous les appels réseaux. Toute communication à l’intérieur du maillage de microservices se fait de proxy à proxy (hexagone rose dans l’image ci-dessus). C’est pourquoi Istio rentre dans la catégorie des “service mesh”.
Les possibilités sont considérables :
- monitorer tout le trafic (Grafana, Kiali, … prêts à l’emploi),
- pouvoir suivre la pile d’appels entre microservices, grâce aux traces distribuées (idéal pour le débug),
- paramétrer Retry et Circuit breaker,
- limiter le trafic sur certaines instances,
- faire du Canary Deployment,
- ou encore gérer la sécurité des échanges (Mutual TLS par ex).
Une présentation convaincante sur un produit encore jeune (2 ans et demi) mais qui semble prometteur !
Pour les plus intéressés, tout le code de sa démo est disponible sur son repo Github.
Pour voir sa conférence : https://www.youtube.com/watch?v=_AvgNihwlWU
3. “Git ou double ?” avec Fabien Lamarque
Quitter le vieux monolithe applicatif pour les microservices ? Cela semble simple sur le papier. Mais rapidement, nous sommes confrontés à de nouveaux problèmes, en particulier avec des outils comme Git.
C’est sur cet aspect que Fabien Lamarque a souhaité nous faire réfléchir. Sur nos vieilles habitudes d’abord : un dépôt Git par application devient bien souvent un dépôt par microservice. Mais l’application n’est-elle pas l’ensemble de tous les microservices qui la constitue ? Qu’on le veuille ou non, nos services sont couplés et il va falloir gérer la compatibilité de leurs versions et déterminer l’ordre de leurs déploiements. Avec un gestionnaire de compatibilités ?
Une piste de solution à considérer : le mono-repo. Dans sa forme avancée, cela consiste à utiliser les Submodules Git et par conséquent réapprendre les commandes usuelles de Git. Dans sa forme simple : un seul dépôt Git avec des répertoires dédiés par microservice. Mais cela pose de nouvelles difficultés pour l’intégration continue et la gestion des droits.
Et Fabien Lamarque de conclure : “aucune solution ultime n’existe actuellement pour versionner le code de nos microservices”.
Pour voir sa conférence : https://www.youtube.com/watch?v=EfbR2icSnG4
4. “Implémenter un Webhook côté serveur, pas si simple” par Guillaume Laforge
Les Webhooks, ça me parle ! Nous y avons été confrontés sur un projet d’intégration d’une API de signature électronique. Côté consommateur donc.
Un Webhook, c’est plutôt simple dans le principe. Il s’agit d’un mécanisme de communication serveur à serveur (fournisseur vers consommateur), qui est déclenché à la suite d’un événement et qui se matérialise par l’émission d’une requête vers une URL particulière du service consommateur.
Dans cette conférence, Guillaume Laforge (Google) fait la liste des problématiques auxquelles il faut répondre, côté fournisseur du Webhook ou côté consommateur.
Elles sont nombreuses :
- faire des “retry” intelligents,
- gérer l’idempotence,
- regrouper les appels,
- conserver quelque part les appels en échec (“dead letter queue”),
- sécuriser les appels (payload signé par HMac, IP Whitelisting, …),
…
J’ai découvert deux super outils :
- RequestBin : un fournisseur d’URL unique pour recevoir et observer les requêtes en provenance du fournisseur (payload, entêtes, …). Très pratique pour l’analyse et le debug.
- Ngrok : un outil pour faire des tests bout-en-bout sur le poste du développeur. Il nous fournit une URL unique que peut appeler le fournisseur et qui transfert les appels vers une URL en “localhost”.
Pour voir sa conférence : https://www.youtube.com/watch?v=DRf7-dmhNHA
5. “Tester en Kotlin” par Benoît Prioux
Chez ekino, nous nous intéressons à Kotlin depuis longtemps dans le pôle Java. Pour le moment, nous en faisons principalement sur des sides projects ou des applications internes. Ce langage, inventé par JetBrains en 2010, est le dernier né des langages de la JVM et il compense beaucoup de faiblesses de Java.
Benoît Prioux développe en Java depuis 12 ans. Il s’intéresse particulièrement à Kotlin qu’il a vite adopté. Pourquoi souhaitait-il nous parler des tests en Kotlin ? Tout simplement parce que les tests constituent un terrain de jeu idéal pour démarrer dans ce langage.
Notre orateur nous donnait son retour d’expérience sur Kotlin et son écosystème (librairies) dans la programmation des tests automatisés. Concrètement, il nous conseillait :
- de rester sur JUnit (version 5 bien sûr) plutôt que KotlinTest pour rester sur un terrain connu,
- d’utiliser une syntaxe en langage naturel (les fameux “backtick”) pour écrire le nom des méthodes de test,
- de préférer les assertions d’AssertJ à celles d’AssertK et StriKt, librairies pas encore assez matures,
- de préférer par contre la librairie de mocks MockK à la populaire Mockito, plus adaptée à Kotlin et ses contraintes.
Il termine sa présentation par quelques métriques : chez Lectra, sur l’un de leurs projets, ils ont réduit de 30% leur code source (50.000 lignes avant, 35.000 après) en passant de Java à Kotlin; un refactoring effectué au fil de l’eau, en continuant de livrer de nouvelles fonctionnalités.
Pour voir sa conférence : https://www.youtube.com/watch?v=DjmkTe4foww
Ton speaker préféré ? Et pourquoi ?
Difficile de répondre : j’aime particulièrement les speakers qui savent vous prendre par la main, exprimer des concepts compliqués de façon claire et vous emmener loin, sans que vous vous en rendiez compte. J’aurais beaucoup de noms à citer 😉
Comment tu vas mettre à profit ce que tu as appris ?
L’application immédiate n’est pas toujours évidente. Participer à des conférences enrichit notre culture, notre vocabulaire et nos connaissances; nous ouvre de nouveaux horizons aussi.
À court terme, c’est le sujet “Tester en Kotlin” de Benoît Prioux que je ferai en sorte d’utiliser sur nos projets. D’un autre côté, il est certain que je creuserai les concepts que le sujet sur Istio m’a fait découvrir.
L’événement en 2 mots ?
Kubernetes et DDD : des sujets stars cette année !
Un dernier mot ?
Bravo à l’équipe qui a organisé l’événement ! Et merci à ekino de m’avoir permis d’y assister 😉