Nous avons eu deux crises majeures liées à la dépendance avec deux bases de code différentes (Android et une application Web Node.js). Le dépôt Android devait migrer de Flurry vers Firebase, ce qui nécessitait la mise à jour de la bibliothèque des services Google Play en quatre versions principales. Une chose similaire s'est produite avec notre application Node hébergée par Heroku où notre pile de production (cèdre) était obsolète et devait être mise à niveau vers cèdre-14. Notre base de données PostgreSQL devait également être mise à jour de 9.2 à 9.6.
Chacune de ces applications de dépendances assis rassis pendant presque deux ans, et quand certains ont été désapprouvées et nous avons atteint le « coucher de soleil » période, il a été un grand casse - tête pour les mettre à jour ou de les remplacer. J'ai passé plus de 30 heures au cours du mois ou des deux derniers à résoudre lentement tous les conflits et le code cassé.
Évidemment, laisser les choses reposer pendant deux ans est beaucoup trop long. La technologie évolue rapidement, en particulier lorsque vous utilisez un fournisseur de plate-forme comme Heroku. Supposons que nous ayons une suite de tests à part entière et un processus CI comme Travis CI, ce qui élimine beaucoup de conjectures lors de la mise à jour. Par exemple, si une fonction était supprimée après une mise à niveau et que vous l'utilisiez, vos tests échoueraient.
À quelle fréquence les dépendances doivent-elles être mises à jour ou quand les dépendances doivent-elles être mises à jour? Nous avons mis à jour parce que nous étions obligés de le faire, mais il semble qu'une sorte d' approche préventive serait préférable. Faut-il mettre à jour lorsque des versions mineures sont publiées? Versions majeures? Chaque mois si des mises à jour sont disponibles? Je veux éviter à tout prix une situation comme celle que je viens de vivre.
PS - pour l'un de mes projets Rails personnels, j'utilise un service appelé Gemnasium qui suit vos dépendances afin que vous puissiez être averti, par exemple, des failles de sécurité. C'est un excellent service, mais il faudrait vérifier manuellement les dépendances des projets que j'ai mentionnés.