Lidiando con código legacy

El tiempo pasa para todos y cuando se trata de software mucho más rápido. Lo que hace un año era el framework más novedoso, ahora ya está desfasado… Lo que usábamos para desarrollar nuestras aplicaciones hace 2 años, ahora ni nos lo planteamos de cara a un nuevo desarrollo.

Este ritmo tan alto de innovación hace que los sistemas queden obsoletos en menos tiempo del que nos gustaría y el problema es que debemos adaptarnos a los nuevos por temas de seguridad o de funcionalidad. Toda empresa en algún momento ha de migrar sus viejas aplicaciones a otras más modernas para poder aprovechar las nuevas tecnologías (Big Data, Machine Learning, IA, …) o para incrementar la seguridad de la misma.

Debemos centrarnos en varios aspectos a la hora de valorar una migración de nuestras aplicaciones:

• El primero es desde un punto de vista económico:
¿Cuánto va a costar esa nueva inversión?
Los aplicativos core de las empresas no suelen ser baratos y la migración de los mismos puede suponer un gran desembolso. Hay que tener en cuenta si hemos amortizado o no el anterior aplicativo, y, de no ser así, ¿ nos compensa el cambio?

• El segundo es desde el punto de vista de las personas:
Un gran cambio puede hacer que nuestros empleados rindan menos que antes del cambio y durante el periodo de adaptación a la nueva aplicación es seguro que vamos a perder agilidad en los procesos diarios.

• Por otro lado, tenemos los sistemas de terceros:
Ya sean los sistemas con los que debemos integrarnos o con los que se integran con nuestra aplicación, estos cambios hay que hacerlos teniendo en cuenta esas integraciones para no dejar de dar servicio a terceros o quedarnos sin un servicio externo.

Con todo esto en la mente, si hemos decidido que queremos migrar, debemos asegurarnos de hacerlo de la mejor manera posible y causando el menor trastorno tanto económico como en los procesos de la compañía.

Después de más de 10 años desarrollando aplicaciones y migrando aplicativos tengo algunas experiencias que quiero compartir y que pueden hacer que ese camino sea más llevadero:

5 útiles consejos para lidiar con el código legacy en la migración de aplicaciones:

• Tests, tests y más tests: Intentar migrar una aplicación en la que no tenemos tests es un suicidio a nivel de desarrollo y de procesos. Muchas veces las cosas que funcionan no se tocan porque nadie sabe cómo funcionan realmente. Si no tenemos claro cómo son nuestros procesos lo mejor que podemos hacer son tests que nos den la certeza de que los cambios que estamos haciendo hacen lo que queremos. Además, esto hace que repensemos los procesos y puede que los acabemos optimizando
• Domain Driven Design: Si quieres migrar toda una aplicación entera te vas a dar de bruces con la realidad y lo único que vas a conseguir es embarcarte en un proyecto lleno de dificultades en las que cada cosa que hagas te va a suponer un sobreesfuerzo. Lo mejor es primero coger nuestro código y refactorizar para tener muy claro los dominios de negocio que tenemos y poder empezar a moldear la nueva aplicación
• Arquitectura de software de microservicios: Si decides pasar de una arquitectura monolítica a una de microservicios lo primero es tener los 2 primeros puntos controlados para poco a poco extraer a microservicios las distintas partes de tu dominio
• Arquitectura de software monolítica: Si por el contrario lo único que quieres es mejorar tu actual monolito con una versión más nueva de los frameworks que usabas hasta ahora lo mejor es ir capa a capa (vista, servicio y persistencia)
• Y muchos más tests: Insisto en que los tests son fundamentales ya que sin ellos es posible que no te vayas a la cama a dormir tranquilo

En Cálculo estamos trabajando en la migración y actualización de nuestros aplicativos y aunque sabemos que es un largo camino el que tenemos por delante también es un camino apasionante y que nos hará crecer junto a nuestros clientes. Apostamos por esta metodología y de momento los resultados son muy satisfactorios.

Artículo realizado por Rubén García, CTO de Cálculo.