Table des matières
ToggleINTRODUCTION
Kiwi est une bibliothèque Java de configuration d’amorçage. L’objectif principal est de faciliter le chargement et la gestion des configurations d’une application à partir de différentes sources. Dans cet article, je vais expliquer son fonctionnement, ses caractéristiques et ses cas d’utilisation pratiques.
EXPLICATIONS
Pourquoi utiliser Kiwi ?
a) Chargement récursif des configurations
Cette fonctionnalité permet de chaîner le chargement de configurations à partir de plusieurs sources sans nécessiter une gestion complexe des priorités ou des dépendances.
Schéma écrit :
URI -> valeurs clés -> URI -> Valeurs clés -> …
b) Sources de configuration multiples
Kiwi est conçu pour charger des paires clé-valeur depuis plusieurs sources, telles que :
- Les variables d’environnement
- Les propriétés système
- Les fichiers JSON, HOCON, TOML, YAML, XML, ..
- Les requêtes HTTP, argument de ligne de commande, coffres-forts, et plus encore.
L’idée est que ces différentes sources de données peuvent toutes être représentées sous la forme d’une simple paire clé-valeur, ce qui permet de les traiter de manière uniforme.
c) Flexibilité pour l’utilisateur final
Cette caractéristique permet aux utilisateurs de choisir d’où proviennent leurs configurations. Par exemple, si je travaille avec une application en ligne de commande, je pourrais spécifier que la configuration provient d’une variable d’environnement ou d’un fichier spécifique.
Fonctionnement de Kiwi
a) KeyValue et KeyValuesResource
Kiwi repose sur deux concepts principaux : KeyValue et KeyValuesResource.
- KeyValue : Contrairement à un mappage, un KeyValue contient des métadonnées supplémentaires, telles que la source de la valeur, si la valeur a été interpolée, ou si la valeur est sensible.
- KeyValuesResource : Une ressource de configuration qui peut être une URL, un fichier, ou même une variable d’environnement. Cette ressource est associée à des valeurs clés et peut être utilisée pour enchaîner le chargement d’autres ressources.
Les ressources sont chargées de manière récursive, et chaque KeyValue peut à son tour charger davantage de KeyValues en fonction des métadonnées associées.
b) Interpolation
Kiwi supporte l’interpolation de type Bash dans les valeurs de clé, ce qui permet d’insérer des variables dans les configurations
Exemple : message=Bonjour ${user.name:-defaultName}
Cela signifie que si « user.name » est défini, il sera utilisé ; sinon, « defaultName » sera pris à la place. Cela permet de personnaliser dynamiquement les valeurs selon l’environnement ou les variables définies ailleurs.
CONCLUSION
Kiwi est une bibliothèque Java pour gérer des configurations de manière flexible, légère et extensible. Son modèle basé sur les « clé-valeur » et la capacité de charger de manière récursive des ressources à partir de multiples sources. Kiwi permet aux utilisateurs finaux de définir d’où provient leur configuration, offrant ainsi une grande souplesse par rapport aux frameworks traditionnels de configuration.
GLOSSAIRE
Configuration d’amorçage : La configuration d’amorçage est la manière dont une application récupère ses configurations initiales avant qu’une tâche commence à s’exécuter. Ces configurations sont souvent stockées sous forme de paires de valeurs « clé-valeur », qui peuvent provenir de diverses sources comme des fichiers de propriétés, des variables d’environnement, des arguments de ligne de commande, ou même des métadonnées dans le cloud.
Paires de valeurs « clé-valeur » (KeyValue) : Une paire clé-valeur est une association simple entre un nom (la clé) et une valeur. La clé permet d’accéder à la valeur associée.
Récursif (Kiwi) : Chaque configuration chargée peut contenir des références à d’autres configurations à charger à son tour. Le processus continue ainsi, de manière successive, jusqu’à ce que toutes les ressources soient chargées.
Mappage : (Le mappage des données est le processus consistant à faire correspondre les champs ou éléments de données d’une base de données ou source d’information à des champs similaires dans une source ou un système de destination.)
Interpolation : permet l’évaluation de variables ou d’expressions à l’intérieur d’une chaîne de caractères
URL : Uniform Resource Locator
URI : Uniform Resource Identifier, permet d’identifier des ressources.