Tuvimos dos crisis principales relacionadas con la dependencia con dos bases de código diferentes (Android y una aplicación web Node.js). El repositorio de Android necesitaba migrar de Flurry a Firebase, lo que requería actualizar la biblioteca de Google Play Services en cuatro versiones principales. Algo similar sucedió con nuestra aplicación Node alojada en Heroku, donde nuestra pila de producción (cedro) fue obsoleta y necesitaba actualizarse a cedar-14. Nuestra base de datos PostgreSQL también necesitaba actualizar de 9.2 a 9.6.
Las dependencias de cada una de estas aplicaciones permanecieron obsoletas durante casi dos años, y cuando algunas quedaron en desuso y llegamos al período de `` puesta del sol '', ha sido un gran dolor de cabeza actualizarlas o reemplazarlas. He pasado más de 30 horas durante el último mes o dos resolviendo lentamente todos los conflictos y el código roto.
Obviamente, dejar que las cosas reposen durante dos años es demasiado tiempo. La tecnología se mueve rápidamente, especialmente cuando está utilizando un proveedor de plataforma como Heroku. Supongamos que tenemos un conjunto de pruebas completo y un proceso de CI como Travis CI, que elimina muchas conjeturas de la actualización. Por ejemplo, si una función se eliminó después de una actualización y la estaba usando, sus pruebas fallarían.
¿Con qué frecuencia deben actualizarse las dependencias o cuándo deben actualizarse las dependencias? Actualizamos porque nos vimos obligados a hacerlo, pero parece que algún tipo de enfoque preventivo sería mejor. ¿Deberíamos actualizar cuando se lanzan versiones menores? Versiones principales? ¿Todos los meses si hay actualizaciones disponibles? Quiero evitar a toda costa una situación como la que acabo de experimentar.
PD: para uno de mis proyectos personales de Rails, utilizo un servicio llamado Gemnasium que rastrea sus dependencias para que pueda ser notificado, por ejemplo, de vulnerabilidades de seguridad. Es un gran servicio, pero tendríamos que verificar manualmente las dependencias para los proyectos que mencioné.
fuente