Sylvain Wallez

Sylvain Wallez

Elastic

Développeur et architecte passionné depuis trois décennies, membre de la Fondation Apache. Je code sur les machines de toutes tailles, du micro-contrôleur aux clusters de gros serveurs.

Chez Elastic depuis 5 ans, d'abord dans l'équipe Cloud, et maintenant comme lead developer des librairies client Java et Rust.

Twitter : @bluxte

Blog: https://bluxte.net

java

Track : Java, JVM

Type de présentation : Conference

400 endpoints d'API et 2000 types : genèse et utilisation du nouveau client Java pour Elasticsearch

Un nouveau client Java pour Elasticsearch est sorti en octobre 2021. Plus léger, plus rapide, plus ergonomique et… généré à 99% ! Une session en deux parties, avec un REx sur le développement de cette nouvelle librairie, suivi d’une exploration de son usage en live coding.

L'API d'Elasticsearch a grandi de façon organique depuis 10 ans et compte près de 400 points d'API et 2000 structures de données. Jusqu'à 2021 il n'y avait pas de spécification formelle complète de cette API. Gênant pour générer du code… On a rapidement vu que OpenAPI était difficilement applicable, et pris une approche originale, en modélisant l’API avec des types TypeScript “compilés” dans un modèle servant de base à la génération de code.

Comment ensuite, à l’usage, s’y retrouver dans cette API très riche ? On verra avec quelques exemples que l’utilisation de fluent functional builders et de tagged unions (un peu de formalisme pour des choses simples) permet une écriture proche d’un DSL où on se laisse guider par l’autocomplétion de l’IDE sans jamais avoir à taper un nom de classe, dans des structures arborescentes et polymorphiques proposant parfois plus de 50 variantes.