Uno de los aspectos que caracteriza a los equipos de desarrollo maduros es la re-utilización del código ya utilizado (entre otras cosas). Este pensamiento es con el que en ENCAMINA empezamos a desarrollar lo que finalmente se ha llamado ENMARCHA . La gestión de las dependencias es uno de los mayores problemas a los que se enfrenta cualquier equipo de desarrollo.
Tenemos dos tipos de dependencias:
- Externas. Aquellas dependencias que son librerías, desarrollos de terceros y que las utilizamos en nuestros desarrollos. Un ejemplo son las librerías de Nuget para desarrollos .NET o bower, npm para el mundo JavaScript.
- Internas. Estas dependencias son desarrollos realizados por el propio equipo de desarrollo y que se utilizan para aprovechar los desarrollos ya realizados.
En este post vamos a centrarnos en estas últimas y en el porqué de su importancia. De la misma forma vamos a ver las distintas formas que hay de gestionar estas dependencias, desde las más manuales hasta las más sofisticadas haciendo uso de Visual Studio Team Services.
Partimos de la base de que dentro de nuestra organización disponemos de un proyecto donde tenemos las funciones, utilidades, etc. que utilizamos en todos los proyectos de nuestra organización.
¿Cómo utilizamos estas utilidades en los nuevos proyectos que hacemos?
Una primera opción es añadir este proyecto dentro la nueva solución que estamos haciendo. Agregamos la referencia al nuevo proyecto y comenzamos a utilizarla.
Ventajas
- Aprovechamos las funcionalidades ya implementadas
- Fácil de depurar
Inconveniente
- No tenemos versionado, si en el nuevo proyecto realizamos alguna modificación que afecta a «artefactos core» es posible que otros proyectos que lo estén utilizando no funcione correctamente o bien no compile nuestro proyecto
Una segunda opción es crear un paquete Nuget interno y ubicarlo bien en un lugar común para todos los miembros de la organización o bien implementamos un servidor privado de Nuget tal y como se indica en el siguiente enlace.
Ventajas
- Todos los miembros del equipo pueden utilizarlo sin problemas
- Disponemos de histórico y versionado
Inconvenientes
- La depuración de los métodos que hay en el paquete Nuget es un poco más complejo
- Hay que crear los paquetes Nuget cada vez que se realiza una modificación
- Mantenimiento de tu servidor de Nuget
Una alternativa a crearse el servidor de Nuget es utilizar un producto como MyGet. Es un servidor de paquetes como Nuget, NPM, Bower, pero de forma privada y no pública.
Una tercera alternativa sería utilizar Visual Studio Team Services como tu servidor de Nuget. Microsoft en el proceso de hacer mejor Visual Studio Team Services, ha añadido una funcionalidad para poder hacer que nuestros repositorios sean feeds de Nuget.
Ventajas
- Accesible para todos los miembros de nuestra organización
- Integrado con TFS
Inconveniente
- La única desventaja que le veo a priori es la url del feed que no es muy amigable
Resumen
Dentro del desarrollo software el ciclo de vida de la aplicación es algo que debemos tener muy presente. Hay muchas tareas que van más allá del propio desarrollo del mismo. La gestión de las dependencias es algo muy importante y que ocasiona muchos problemas en caso de llevar una mala gestión de las mismas.
Una mala gestión puede provocar la perdida de funcionalidad e incluso que nuestro código fuente no funcione, con lo que si tenemos que llevar a cabo una actualización de la aplicación deberemos de reconstruir la parte que no funciona. En nuestro caso, hemos pasado por las tres fases y ahora mismo podemos decir que las tenemos gestionadas de una forma correcta y coherente. Y tú, ¿cómo las gestionas? 😉