Gestion des dépendances d’une application

Le développement de toute application, peu importe son but, nécessite généralement l’implémentation de fonctionnalités ou services standards tels que les logs applicatifs, les accès aux à bases de données, la manipulation des chaînes de caractères, les mécanismes de cryptographie, les fichiers de configuration, la gestion des écritures dans les fichiers, les dépendances, etc.
Ainsi, pour nous aider dans notre travail lié au développement et à la livraison d’applications, des outils et mécanismes particuliers sont mis en œuvre. Ceux-ci doivent donc prendre en compte un certain nombre de contraintes et exigences.
Nous allons présenter les trois principales contraintes qui conditionnent le bon fonctionnement des bibliothèques et des applications qui s’en servent.

Intégration aisée des bibliothèques

L’intégration des bibliothèques n’est pas toujours une tâche facile lors du développement d’une application.
Avec C/C++ la tâche est relativement difficile. Il faut donc commencer par l’installation des bibliothèques « .so » et des en-têtes « .h » nécessaires. Aussi, avec les langages comme Java ou Python, la tâche est facilitée. Pour cause, la portabilité des différents emplacements de l’installation.

Gestion des dépendances transitives

Un autre problème est celui de la gestion des dépendances transitives. Bien que le besoin d’utiliser des bibliothèques est évident pour les développeurs, ils doivent garder à l’esprit que celles-ci peuvent être liées par une interdépendance.

Une fois encore, la tâche est un peu moins facile avec C/C++. Le gestionnaire de paquets pourra installer tout le nécessaire si le packaging de la dépendance a été fait correctement. Le cas échéant, le développeur passe par long processus de recherche d’erreurs au moyen des exécutions du programme « make » à chaque niveau de dépendance.
Par contre, avec les autres langages, on s’en sort un peu plus facilement : Chaque bibliothèque (ou « module » par exemple si on pense au cas de Python) de dépendance, fournit un fichier particulier. Dan ce dernier, il y a l’indication de ses propres dépendances. Ensuite, de manière récursive, l’outil (par exemple, maven pour Java ou pip pour Python) s’occupe du rapatriement du nécessaire.

Isolation des applications

Pour deux applications différentes utilisant une bibliothèque commune, chacune évoluant dans le temps, on peut se retrouver avec deux cas de figures:
• une incompatibilité entre deux versions de la même application,
• une incompatibilité entre les deux applications.
Comme avec les points précédents, il est très difficile d’installer deux versions d’une même librairie avec C/C++. Dans des contextes tels que PHP, Python ou Javascript/NodeJS, il est possible de le faire avec les standards intégrés. Ainsi, ces derniers prennent le relai et opèrent le chargement des bibliothèques compatibles pour le projet.

Par ailleurs, avec Python, l’outil essentiel qui nous aide à garantir l’isolation des applications est son module intégré « venv » (anciennement l’outil tierce-partie nommé « virtualenv »). Il vous permet de créer des environnements virtuels. Aussi, chaque application peut fonctionner sans risque avec l’interpréteur Python et l’ensemble des dépendances embarquées. En l’occurrence (typiquement les modules installés au sein du répertoire « site-packages » spécifique de l’environnement en question). Regardez cette vidéo où nous faisons une démonstration de cette pratique dans le contexte du framework Django.

Que retenir ?

La gestion des dépendances est devenue une tâche incontournable spécifiquement sur les applications complexes. Les langages tels que PHP, Python et JavaScript, ceux que nous utilisons essentiellement chez Content Gardening Studio, ont tenu compte de certaines contraintes. Aussi, ils ont fait des efforts pour intégrer des mécanismes pour l’utilisation de dépendances externes. Avec Python en particulier, il y a un duo que le développeur doit prendre l’habitude d’utiliser, pour faciliter son travail : pip et venv. Regardez cette autre vidéo sur les pratiques liées à la gestion des dépendances.

Scroll to top