Hoy en día, la modernización de sistemas heredados no es opcional. Sin ella, su empresa no será competitiva, especialmente en esta economía en la que cada céntimo ahorrado cuenta. Pero modernizar sus sistemas es un proyecto grande y costoso que puede salir mal de forma espectacular, provocando averías y pérdida de confianza. Hoy estamos aquí para compartir historias de éxito de los clientes de Redwerk y explicar cómo lograron crecer mediante la implementación de un enfoque estratégico y las mejores prácticas de transformación.
Para que se haga una idea del valor de la modernización del código heredado, tenga en cuenta que, según un estudio de Gartner, el 70 % de los presupuestos de TI se destina al mantenimiento de las operaciones actuales. Ahora, imagine lo que podría lograr mediante la innovación si liberara ese dinero. ¿Le parece una propuesta atractiva?
A continuación, los desarrolladores de Redwerk explican exactamente cómo lograr este resultado minimizando los riesgos empresariales.
Mejores prácticas para la modernización del código heredado
La siguiente lista refleja las lecciones aprendidas con esfuerzo a partir de programas que realmente han dado resultados a nuestros clientes. No le aburriremos con otra lista más de los retos a los que se enfrentan las empresas en la modernización de los sistemas heredados. En su lugar, nos centraremos en las soluciones y enfoques reales que sin duda aportarán valor y retorno de la inversión.
Comience por los resultados empresariales, no por las preferencias de arquitectura
Siempre debe comenzar por definir el éxito en términos medibles, tales como:
- Frecuencia de lanzamiento
- Tasa de defectos
- Tiempo de espera para el cambio
- Tiempo de actividad
- Coste de la infraestructura
- SLA de parches de seguridad
- Tasas de conversión
Vincule cada iniciativa de modernización del código heredado a un KPI empresarial con un responsable.
Para aclararlo, tenga en cuenta que la mayoría de los programas de modernización que fracasan suelen empezar con «necesitamos microservicios» o «tenemos que ser nativos de la nube». Los que tienen éxito empiezan con «tenemos que reducir los ciclos de lanzamiento de seis semanas a tres días» o «tenemos que reducir el tiempo de respuesta a incidentes en un 80 %».
¿Notas la diferencia? Eso es lo que define el éxito en cualquier estrategia de transformación digital. Tomemos como ejemplo nuestro trabajo con VIP Auslan, una agencia que presta servicios a la comunidad sorda australiana. Comenzamos estabilizando su plataforma de reserva de intérpretes, un proceso que requirió la ingeniería inversa de la lógica empresarial y la resolución de importantes lagunas de documentación dentro de una densa base de código heredado. Una vez estabilizada la plataforma, pasamos a automatizar los flujos de trabajo manuales y a mejorar la experiencia del usuario.
Obtuvimos un éxito similar con Evolv. Transformaron por completo la solución heredada propiedad de Sentient Ascend (tras adquirirla) para lanzar la versión mejorada Evolv 1.0. Basada en la herramienta heredada, esta iteración es una plataforma SaaS innovadora y escalable que ya utilizan docenas de clientes de Evolv y que está creciendo rápidamente.
Crear y mantener un mapa de la cartera de aplicaciones
Para respaldar la evaluación de su progreso, cree un inventario que recopile la importancia comercial, el coste, el perfil de riesgo, la frecuencia de cambio, las dependencias, la sensibilidad de los datos y el impacto en los usuarios de cada sistema. Incluya también detalles sobre el tiempo de ejecución y la infraestructura, las interfaces (API, archivos, colas), las métricas operativas y el historial de incidencias.
Tener esta información documentada y mapeada para facilitar el acceso le ayudará a evitar los llamados «actos aleatorios de modernización». Se trata de un enfoque en el que los equipos modernizan lo que les conviene en lugar de lo que es importante. Actualice este mapa continuamente para realizar un seguimiento de su transformación y medir sus efectos. Debe ser un documento vivo al que pueda recurrir cuando calcule el retorno de la inversión de la transformación digital.
Adquirimos una amplia experiencia en el mapeo de sistemas heredados mientras trabajábamos en el inmenso proyecto para Justin Alexander, una reconocida marca estadounidense de moda nupcial. Redwerk comenzó con un sitio web antiguo que convertimos en una plataforma web multimarca con un creador de páginas personalizado para que cada marca pudiera expresar su estilo único, al tiempo que mantuvimos el sitio original funcionando sin problemas para garantizar que no hubiera tiempo de inactividad ni pérdidas durante la enorme actualización de la plataforma.
Priorizar por valor Y riesgo
Utilice la matriz básica 2×2 para obtener la máxima eficiencia:
- Alto valor, alto riesgo: priorice desde el principio, pero entregue de forma incremental. Estos sistemas son demasiado importantes como para ignorarlos, pero también son demasiado arriesgados para enfoques radicales.
- Alto valor, bajo riesgo: aquí es donde se obtienen ganancias rápidas. Las mejores prácticas de modernización de sistemas heredados establecen que debe priorizarlos para generar impulso y credibilidad. Sin embargo, no puede confiar plenamente en ellos si desea lograr una transformación significativa.
- Bajo valor, alto riesgo: no invierta en modernizar sistemas que deberían desaparecer. Una parte necesaria de la transformación es retirar los flujos, las aplicaciones y tal vez departamentos enteros que no encajan en una empresa moderna y eficiente y que solo agravan la burocracia innecesaria y consumen recursos.
- Bajo valor, bajo riesgo: si tiene sistemas que se ajustan a este patrón, pueden esperar. Si no es necesario sustituirlos por completo, debe dejarlos tal cual hasta que el equipo de desarrollo complete todas las tareas prioritarias.
Recuerde que la modernización de su sistema heredado también debe tener en cuenta los plazos normativos y la postura de seguridad a la hora de establecer prioridades. Una vez abordados estos aspectos fundamentales, la atención suele centrarse en objetivos de orden superior, como la integración de la IA en los sistemas heredados para desbloquear nuevas eficiencias.
Ahora bien, ¿qué pasa si necesita que las actualizaciones se realicen rápidamente, sin comprometer el flujo y la calidad? Tuvimos un proyecto de este tipo con Incling, un cliente que requería una transformación completa en pocas semanas. Así que lo entregamos sin comprometer las mejores prácticas de modernización heredadas. Redwerk implementó el enfoque estratégico, comenzando con una revisión detallada del código. Solo eso nos ayudó a limpiar y reducir la base de código en 15 000 líneas. A continuación, varios equipos trabajaron simultáneamente en diferentes áreas de optimización. El resultado es que cumplimos el plazo de tres semanas para la evolución de la aplicación con una ruta de modernización totalmente documentada.
Del mismo modo, actualizamos con éxito la solución de voto electrónico del Parlamento Europeo en un plazo muy ajustado. Teníamos un mes para migrar una aplicación heredada basada en JBoss a un marco moderno y fácil de mantener. Inmediatamente dividimos el proyecto en subtareas manejables y establecimos canales de comunicación globales entre los equipos de Ucrania, Italia y Bélgica. Al trasladar el seguimiento de tareas de los desordenados hilos de correo electrónico a un moderno software de seguimiento de errores, creamos un ciclo de retroalimentación perfecto: el código escrito en Ucrania se probaba en Bruselas el mismo día, lo que proporcionaba a nuestros desarrolladores una retroalimentación instantánea de los usuarios finales.
Elija el patrón de modernización adecuado para cada carga de trabajo
Siempre debe evitar el pensamiento único. Elija los patrones de modernización de aplicaciones heredadas en función del retorno de la inversión, la complejidad y la frecuencia de los cambios en el sistema.
Por ejemplo, un sistema que rara vez cambia y conlleva un riesgo bajo puede que solo necesite un rehosting. Un sistema con muchos cambios y un acoplamiento significativo necesita una refactorización. Un sistema en el que su diferenciación competitiva no reside en el código personalizado probablemente debería sustituirse por SaaS.
Los peores resultados suelen provenir de la aplicación de un patrón incorrecto, como reescribir sistemas que deberían refactorizarse o refactorizar sistemas que deberían sustituirse.
Si se pregunta cómo saber exactamente qué patrón de transformación aplicar en cada caso, debería empezar por una revisión del código por parte de expertos. Por ejemplo, el equipo de Redwerk colaboró con Project Science para auditar su API backend. Les ayudamos a mejorar la mantenibilidad del código en un 80% ofreciéndoles sugerencias personalizadas para cada parte del sistema.
Modernice sus prácticas de entrega junto con su código
Es estupendo que implemente las mejores prácticas para la modernización del código heredado. Sin embargo, para lograr el crecimiento, es necesario modernizar todos los niveles. Implemente la integración continua con retroalimentación rápida, canalizaciones de implementación automatizadas, indicadores de características para la entrega progresiva y observabilidad integral con registros, métricas, trazas, SLO y alertas.
De esta manera, reducirá el riesgo de cambio y mejorará el tiempo medio de recuperación. Los equipos que modernizan el código sin modernizar la entrega suelen descubrir que sus ganancias de velocidad son menores de lo esperado. Esto significa que solo se traslada el cuello de botella a otro punto del proceso.
Además, piense a gran escala, como nuestros clientes de Utility Revenue Services (URS). Cuando comenzaron su transformación digital, solo tenían una aplicación heredada exclusiva para Windows. Era una buena aplicación cuando se diseñó, pero el mundo ha cambiado desde entonces. Así que lo que hicimos juntos fue recrear la solución original como una aplicación web y migrar todos los datos relevantes. A continuación, ampliamos la funcionalidad para añadir características adicionales de generación de informes, funcionalidad de facturación y mucho más. URS no solo modernizó su aplicación a nivel de código y sus vías de entrega de actualizaciones, sino que también impulsó la prestación de servicios a los clientes hacia el siglo XXI, lo que les ayudó a atraer nuevos clientes.
Desacoplar la arquitectura deliberadamente
Una de las mejores prácticas de modernización heredadas que a menudo se pasa por alto es cómo lidiar con el acoplamiento. Lamentablemente, muchas empresas eligen el camino más fácil, con la esperanza de que se resuelva por sí solo. Sin embargo, lo más probable es que no sea así, así que asegúrese de planificarlo utilizando conceptos como la modularización, las API y los eventos.
A continuación, le indicamos cómo puede desacoplar la arquitectura de forma segura y eficaz:
- Defina contextos delimitados: el pensamiento de diseño basado en el dominio le será de gran ayuda en este sentido.
- Extraiga servicios y módulos en torno a conceptos de dominio estables: céntrese en conceptos establecidos en lugar de capas técnicas.
- Añada fachadas API: le ayudará a estabilizar las integraciones externas.
- Utilice eventos: esto funcionará para algunos de los flujos de trabajo asíncronos.
La realidad es que la desacoplamiento es costoso, pero necesario para la sostenibilidad técnica a largo plazo. Sugerimos hacerlo donde cree opciones que realmente vaya a utilizar, no en todas partes solo porque teóricamente sea más limpio.
En definitiva, depender en exceso («acoplarse») de algo de forma demasiado estrecha no es una buena cualidad en términos de arquitectura de software escalable. Siempre debe aspirar a la independencia y la flexibilidad, que puede conseguir.
Por ejemplo, en Redwerk, trabajamos con Green Valley, un proveedor de soluciones de administración electrónica con sede en los Países Bajos. Green Valley tenía un complemento que utilizaban muchas autoridades gubernamentales. Sin embargo, estaba directamente vinculado a Microsoft Word. Por lo tanto, cada vez que Microsoft actualizaba su software, el complemento se volvía, en una palabra, inutilizable. Juntos, creamos CMSOI, una plataforma que admite múltiples versiones de Microsoft Office Suites y puede portar el complemento a OpenOffice si es necesario. Es un ejemplo de cómo la modernización resuelve problemas de dependencia aparentemente críticos.
Trate los datos como un flujo de trabajo de primera clase
¿Sabía que, incluso cuando se utilizan las mejores prácticas para la modernización de sistemas heredados, muchos programas fallan en los datos, no en el código? Para evitar este desafortunado resultado, debe planificar explícitamente la propiedad de los datos y los modelos canónicos, los enfoques de migración (masiva más delta, doble escritura, captura de datos de cambio), la conciliación y la auditabilidad, y los requisitos de retención y cumplimiento.
Además, planifique la continuidad de los informes y la inteligencia empresarial durante la transición. Los ejecutivos que pierden el acceso a los paneles de control durante la modernización no seguirán siendo partidarios pacientes.
La buena noticia es que hay muchas formas de trabajar con los datos de manera eficaz y mejorar los resultados empresariales, especialmente en este ámbito. Lo conseguimos trabajando con Encode, una plataforma de gestión de amenazas cibernéticas. El cliente necesitaba actualizar su plataforma Enorasys Security Analytics, que carecía de la infraestructura necesaria para escalar con la rapidez suficiente como para seguir el ritmo del crecimiento de los datos. Les ayudamos a migrar a Elasticsearch, manteniendo el acceso a los datos que anteriormente almacenaban en MySQL. El resultado fue una actualización general y la preparación del producto para el futuro, una reducción de los costes de mantenimiento del software y el reconocimiento de IBM.
Integre la seguridad y el cumplimiento normativo desde el primer día
Hoy en día, toda modernización de sistemas heredados debe comenzar por pensar en cómo garantizar el cumplimiento normativo y la seguridad en cada paso de la transformación. Algunas de las cosas que debe tener en cuenta desde el principio son:
- Gestión de dependencias y listas de materiales de software
- Parches de SLA con análisis automatizado de vulnerabilidades
- Gestión de secretos.
- Acceso con privilegios mínimos con segmentación de red
- Modelado de amenazas para flujos clave
Esto aborda directamente los riesgos que plantean los «componentes vulnerables y obsoletos» que afectan de manera desproporcionada a los sistemas heredados. Recuerde que modernizar la seguridad es caro y, a menudo, incompleto, pero incorporarla desde el principio cuesta menos y funciona mejor.
Uno de nuestros proyectos de revisión de código incluyó una evaluación detallada del estado y la seguridad, por lo que hemos visto lo mucho más eficaz que puede ser una empresa cuando planifica la seguridad desde el principio. Site Compass, propiedad del grupo de empresas Reivernet de Australia, es nuestro ejemplo. Completamos una revisión exhaustiva de su código base, identificamos vulnerabilidades y ofrecimos sugerencias de corrección. Como resultado, el grupo Reivernet pudo planificar e implementar mejoras que supusieron un aumento del 90 % en la mantenibilidad del código.
Ejecute lo antiguo y lo nuevo en paralelo con criterios de transición claros
Una de las cosas más importantes que debe comprender sobre las mejores prácticas de modernización de sistemas heredados es que siempre debe avanzar de forma gradual. No se trata de realizar grandes cambios llamativos en un solo día. De hecho, eso supone un riesgo enorme y, a menudo, injustificado. En su lugar, debe:
- Definir criterios de entrada y salida para cada capacidad migrada
- Esbozar las bases de referencia de rendimiento que debe cumplir la nueva implementación
- Elaborar planes de reversión
- Establecer su «definición de terminado», incluyendo documentación y manuales de ejecución
Sugerimos utilizar lanzamientos canario y despliegues por fases para limitar el radio de impacto. La capacidad de dirigir el tráfico entre las implementaciones antiguas y nuevas, y de revertir rápidamente si es necesario, transforma la modernización de una apuesta de alto riesgo en una serie de experimentos manejables.
Implementamos este enfoque durante la modernización de la aplicación Pridefit, lo que dio como resultado un aumento del 45 % en las suscripciones al introducir gradualmente nuevas funciones y, al mismo tiempo, actualizar y optimizar la funcionalidad básica.
La clave del éxito al implementar la modernización de sistemas heredados
Seamos sinceros, hay dos factores clave que determinarán el éxito o el fracaso de su transformación:
- Su actitud hacia la planificación estratégica y la implementación del proceso de modernización.
- Contar con un socio fiable y experimentado que haga un esfuerzo adicional para comprender su negocio.
Los sistemas heredados están tan profundamente arraigados en sus cimientos que cambiarlos de cualquier forma no es solo una cuestión de tecnología. A veces, su enfoque de las tareas cotidianas también debe cambiar.
En Redwerk, nos enorgullecemos de trabajar en estrecha colaboración con cada cliente para comprender verdaderamente su negocio desde dentro. Estudiaremos sus procesos y analizaremos sus objetivos antes de ofrecerle un enfoque estratégico para el cambio.
¿Quiere ver cómo puede funcionar esto para usted? ¡Póngase en contacto con nosotros y empecemos a hablar hoy mismo!
Descubra cómo ayudamos a VIP Auslan a mejorar su producto y reducir las tareas administrativas manuales en un 40%