Modernización de aplicaciones: ¿Expectativa o realidad?

Este artículo explica los desafíos y beneficios de la modernización de aplicaciones, cómo puedes diseñar una estrategia de modernización adecuada para tu negocio y cinco estrategias para hacerlo.

Rachel Kempf - Editor-in-Chief
Modernización de aplicaciones: ¿Expectativa o realidad?

Lo que realmente representa para ti

Parece que cada año surgen nuevas tecnologías de vanguardia, de modo que las aplicaciones y las herramientas de software parecen quedar prácticamente obsoletas a la misma velocidad. Con estos nuevos lanzamientos y una adopción más amplia, ¿cómo puede una empresa mantener el ritmo de sus esfuerzos de modernización? ¿Qué significa realmente la modernización de aplicaciones y qué implica?

Para poner las cosas en su contexto, hay que recordar que los sistemas de información son una compleja red de integraciones que anteriormente tomaba años poder implementar. La modernización no necesariamente significa cambiar y actualizar de manera radical y completa todo tu sistema en unos pocos meses, ni mucho menos en semanas. En realidad, la modernización de tu sistema debería ser implementada progresivamente, con una planificación razonable y pruebas constantes. El enfoque más modesto y seguro es migrar progresivamente partes del sistema (subsistemas o componentes), que fueron creadas con tecnologías heredadas, y reemplazarlas con algo más moderno.

Cualquiera que haya pospuesto alguna vez la instalación de la más reciente versión de un sistema operativo puede dar fe de todos los problemas técnicos que surgen cuando los sistemas antiguos no son actualizados. Seguir utilizando tecnología obsoleta puede generar un gran número de inconvenientes, desde problemas de seguridad hasta bajo desempeño y confiabilidad. Es por ello que la necesidad de modernizarse es clara para muchas empresas. Sin embargo, el proceso de modernización no es tan sencillo, con estrategias que van desde retirar y mover una aplicación a una nueva infraestructura hasta reemplazar o escribir nuevamente una aplicación antigua desde cero.

Este artículo analizará los desafíos y beneficios de la modernización, así como cinco estrategias de modernización, y explicará cómo diseñar la estrategia adecuada para tu empresa.

¿Qué es la modernización?

La modernización de aplicaciones es el proceso de actualizar o reconstruir aplicaciones heredadas para aprovechar de forma eficaz la tecnología y las tendencias modernas. Esto puede incluir:

  • mover una aplicación a la nube o al edge;
  • dividir una aplicación monolítica en microservicios;
  • usar nuevos métodos de implementación, como contenedores y serverless;
  • automatizar tareas operativas, y
  • exponer sistemas por medio de API.

Desafíos y beneficios de la modernización

Gartner define un aplicación heredada como “un sistema de información que puede estar basado en tecnologías obsoletas, pero que es fundamental para las operaciones del día a día”. Esta es una de las razones principales por las que los sistemas antiguos suelen estar activos por mucho tiempo: renovar un sistema que es, por definición, esencial es un plan arriesgado. Las aplicaciones de misión crítica tienen poca (si la hubiera) flexibilidad para estar inactivas y pueden tener vínculos complejos con las funcionalidades de otras operaciones, lo que dificulta su cambio.

Los desafíos de la modernización incluyen:

  • falta de flexibilidad de tiempo de inactividad;
  • interdependencia con otros sistemas;
  • costos generados por las nuevas herramientas y talento, así como
  • dificultad de aprender a gestionar los nuevos sistemas.

Sin embargo, la misión crítica de las aplicaciones heredadas es, precisamente, lo que hace que sea tan importante modernizarlas. Un análisis reciente de los gastos federales estimó que el gobierno de los Estados Unidos dedica el 80 % de su presupuesto total de TI a actividades operativas y de manuntención, lo que incluye el aumento de costos por el mantenimiento de los sistemas heredados, los cuales plantean “problemas de eficiencia, de ciberseguridad y riesgos de misión” que “pueden obstaculizar la capacidad de las agencias para cumplir con los requisitos legales y políticas de ciberseguridad fundamentales”. En otras palabras, mientras más tiempo permanecen los sistemas obsoletos funcionando, se vuelven menos seguros y confiables, lo que impide que puedan completar su trabajo de misión crítica.

Si bien el costo de la modernización puede ser significativo, los costos de mantenimiento de sistemas heredados solo se incrementan con el tiempo, debido al uso ineficiente de recursos, tecnologías patentadas y deuda técnica. Un reporte de Strype, publicado en 2018, señaló que cada desarrollador dedica, en promedio, más de 30 horas por semana en la resolución de problemas técnicos o errores de código, mientras que un reporte de CISQ afirma que, durante 2020, la cantidad de dinero gastada fue de “260 000 MUSD (superando los 115,5 mil millones de 2018) debido a proyectos fracasados, 520 000 MUSD debido a problemas con sistemas heredados (por debajo de los 635 000 MUSD de 2018) y 1,56 TUSD debido a fallas de software en sistema operacionales (lo que supera notablemente los 1,275 TUSD 2018)”; estas cifras solo en Estados Unidos.

Además, la falta de actualización del sistema puede dificultar el crecimiento de la empresa, debido a problemas de desempeño, a una implementación lenta de nuevas funcionalidades y a la incapacidad de atraer programadores talentosos que prefieren usar lenguajes de programación y marcos más modernos. Finalmente, invertir en la modernización puede representar ganancias a largo plazo que compensan los costos a corto plazo con:

  • la reducción de riesgos de seguridad;
  • una implementación más rápida;
  • desempeño y confiabilidad mejorados;
  • el uso de herramientas más modernas y eficientes;
  • el mejor uso de recursos, y
  • la capacidad de atraer nuevos talentos.

Estrategias de modernización

Al igual que con cualquier otro proceso importante, la mejor forma de iniciar la modernización es hacer un plan. Las estrategias de modernización se pueden categorizar, más o menos, en función del grado en que se mantienen o reemplazan los elementos heredados. Aunque la forma de agruparlas y las definiciones puede variar, este artículo usará las definiciones proporcionadas por Gartner y se enfocará en cinco estrategias diferentes: realojamiento, refactorización, reestructuración, reconstrucción y reemplazo.

Realojamiento

Este proceso también es llamado “lift and shift” (retirar la aplicación y cambiarla a una nueva plataforma) o rehosting (realojamiento). Este procedimiento implica mover una aplicación “tal cual como está” desde un entorno heredado (como servidores locales) a una infraestructura más moderna (como la nube). Al requerir cambios de código mínimos o nulos, esta estrategia es poco disruptiva y puede ser ejecutada rápidamente con un bajo costo por tiempo de desarrollo. Además, se pueden obtener algunos de los beneficios de la cloud computing, como escalar sin necesidad de instalar servidores físicos o de consolidar la infraestructura local.

No obstante, ya que las aplicaciones monolíticas no están optimizadas para ajustarse a la nube, los beneficios de la migración pueden ser limitados o inclusive anulados a largo plazo. Realojar algunas aplicaciones monolíticas a una nueva plataforma también puede ser complejo, mientras que otras pueden consumir tantos recursos que el cambio a la infraestructura en la nube podría aumentar los costos con el tiempo, a medida que la empresa escala.

Ventajas:

  • Tiempo de inactividad mínimo
  • Transición rápida y económica
  • Consolidación de la infraestructura local
  • Mayor facilidad para escalar

Desventajas:

  • Mantiene la deuda tecnológica
  • No está optimizada para la nube
  • Podría aumentar los costos a largo plazo

Refactorización

Refactorizar (Refactor) es el proceso de reestructurar el código mientras se mantiene el comportamiento externo de la aplicación. De acuerdo con Martin Fowler, cuya obra Refactoring: Improving the Design of Existing Code ayudó a definir este término, estos pequeños cambios en el código facilitan su mantenimiento y pueden prepararlo para cambios más grandes. Fowler explica que “cuando necesito agregar una nueva característica a un código base, reviso en el código actual y analizo si está estructurado de tal forma que pueda hacer que el nuevo cambio sea sencillo. Si no lo está, entonces refactorizo el código actual para facilitar esta nueva incorporación”.

Con la refactorización, cada cambio individual puede hacer poca diferencia por sí solo, pero muchos cambios pueden tener un gran impacto acumulativo, lo que facilita la lectura del código y reduce la deuda técnica que asume una aplicación a medida que se introducen nuevas funciones. Además, el trabajo progresivo reduce las posibilidades de dañar el sistema una vez que se realizan los cambios. Sin embargo, ya que la refactorización no cambia el comportamiento de una aplicación, esto no solucionará los problemas de desempeño relacionados con el uso de una estructura monolítica o una infraestructura más antigua.

Ventajas:

  • Reducción de la deuda técnica
  • Facilidad para implementar cambios
  • Bajo riesgo
  • Bajo costo

Desventajas:

  • Conservar una infraestructura y una arquitectura obsoletas

Rearquitectura

A diferencia de la migración y la refactorización, la rearquitectura (Re-architect) implica cambios intensivos en una aplicación. Gartner define esta estrategia como “alterar materialmente el código para cambiarlo a una nueva arquitectura de aplicación y explotar nuevas y mejores capacidades”. Estos cambios más grandes pueden incluir la división de una aplicación monolítica en microservicios o cambiar de una base de datos relacional a NoSQL. En ambos casos, estos cambios no solo sirven para que la aplicación sea más compatible con la nube, sino que también tiene sus propias ventajas, como escalabilidad y confiabilidad.

Como resultado, una rearquitectura puede atender las necesidades de las empresas que se encuentran en un punto de inflexión, lo que requiere un escalado ágil y la implementación de nuevas funciones, mejor que con una refactorización o rehosting. Sin embargo, estos beneficios tienen un precio. La reestructuración del código involucrado en un cambio de arquitectura puede ser difícil de construir, lo que genera errores o problemas de conformidad a medida que se implementan los cambios.

Ventajas:

  • Optimizada para la nube
  • Mejor escalabilidad y agilidad
  • Adición de nuevas funcionalidades

Desventajas:

  • Posibilidad de altos costos
  • Difícil y lenta de construir
  • Los cambios pueden provocar errores

Reconstrucción

De las cinco estrategias discutidas en este artículo, la reconstrucción (Rebuild) es, de lejos, la más difícil y que requiere más tiempo para ser implementada. Una reconstrucción implica una reforma completa de una aplicación, que solo preserva su alcance y especificaciones, mientras que el resto del sistema es reescrito desde cero. No obstante, moverse de un sistema estable a uno que no ha sido probado en el tiempo puede ser una decisión arriesgada. Es por ello que The New Stack recomienda ejecutar el nuevo sistema en paralelo con el código antiguo para así tener tiempo de hacer una doble verificación e implementar los cambios progresivamente, así como darle a los usuarios la posibilidad de optar por el nuevo sistema. Esto minimiza los riesgos de la reconstrucción, pero agrega complejidades y costos para una estrategia de modernización que ya es difícil y cara.

A pesar de los riesgos, el precio puede valer la pena en ciertas circunstancias. Un artículo de CMSWire de 2020 discutía la reescritura como una herramienta para implementar cambios cuando “el código fuente de la arquitectura no se alinea con los incentivos comerciales o con los atributos de calidad”. En estos casos, los componentes de la aplicación no son capaces de satisfacer las necesidades actuales de la empresa. Por lo tanto, reorganizar o refactorizar el código para eliminar la deuda técnica podría ofrecer poco valor comercial.

Ventajas:

  • Personalización de la aplicación para satisfacer las necesidades del negocio
  • Eliminación de sistemas y herramientas obsoletas

Desventajas

  • Altos costos
  • Riesgos elevados
  • Difícil y lento de construir
  • Los usuarios deben ajustarse a una nueva interfaz (UI)

Reemplazo

Aunque algunas aplicaciones podrían necesitar una reescritura completa para lograr los objetivos de modernización de la empresa, los desafíos de reescribir pueden no ser viables para algunas. El reemplazo (Replace) es una estrategia que permite revisar una aplicación heredada de una manera más rápida y fácil.

También conocido como “readquisición”, este proceso implica reemplazar una aplicación antigua con un software comercial completamente administrado que satisface mejor las necesidades de la empresa. Esto puede ofrecer escalabilidad y mejores costos, al tiempo que proporciona una solución ya probada y fácil de usar, con actualizaciones disponibles por parte del proveedor. Sin embargo, es posible que no siempre haya un SaaS que cumpla con los requisitos necesarios; además, las empresas que compran el SaaS pueden tener una capacidad limitada para personalizarlo y corren el riesgo de presentar vendor lock-in, al depender de un solo proveedor.

Ventajas:

  • Tareas administrativas mínimas
  • El proveedor se encarga de las actualizaciones
  • Rápido y fácil de implementar

Desventajas:

  • Vendor lock-in
  • Personalización limitada
  • Control limitado

Cómo diseñar una estrategia de modernización

Aunque el camino de cada empresa hacia la modernización puede ser un poco diferente, la mayoría de las estrategias de modernización incluye la evaluación de dos factores: los objetivos comerciales de la empresa y la tecnología necesaria para alcanzarlos. De esta manera, evaluar lo que impulsa al negocio puede ayudar a la compañía a definir cuáles son los cambios necesarios, mientras que evaluar su tecnología le ofrece un panorama claro de cómo será (o debería ser) ese cambio.

Consideraciones comerciales

Para algunas empresas, las necesidades comerciales de modernización ya están más que claras, desde la necesidad de eliminar costos de infraestructura hasta problemas de desempeño que causan una caída en el número de usuarios. Otras podrían estar conscientes de los beneficios de la modernización, pero no están seguras a qué deberían darle prioridad. En este caso, New Relic señala que “una forma de comenzar es identificar las aplicaciones críticas para el negocio de mayor prioridad y explorar cómo se beneficiarían con un mejor rendimiento, escalabilidad y confiabilidad”. Tomar en cuenta el impacto de métricas técnicas (como la latencia) en las métricas comerciales (como las conversiones y ventas), puede ayudar a las empresas a definir objetivos específicos y puntos de referencia para la modernización.

Consideraciones técnicas

Desde una perspectiva técnica, las compañías deben hacer una evaluación de su portafolio para entender mejor los desafíos de modernizar aplicaciones específicas. Computerworld recomienda usar una solución automatizada durante el proceso de modernización para evaluar continuamente los siguientes aspectos de una aplicación:

  • Viabilidad con arquitectura moderna
  • Estabilidad
  • Interfaz de usuario
  • Redundancia de código
  • Bases de datos
  • Interfaces externas
  • Flujos lógicos
  • Reglas comerciales

Conclusión

Con el surgimiento de la cloud computing, 5G y otros cambios tecnológicos, la modernización se hace cada vez más necesaria para que tu empresa siga siendo competitiva en el panorama digital actual. Sin embargo, debido a la gran cantidad de cuestiones involucradas, el proceso de modernización es difícil para muchas empresas. Por ello, tener un aliado que ayude con la modernización puede aliviar algunas de estas dificultades.

Con Azion, las empresas pueden maximizar las ventajas de la modernización, sin importar cuál estrategia decidan utilizar:

  • Realojamiento: ejecuta aplicaciones en el edge con una plataforma que ofrece la mejor velocidad y confiabilidad posibles.
  • Refactorización: usa un enfoque listo para el futuro al ejecutar microservicios y aplicaciones serverless en el edge.
  • Rearquitectura y reconstrucción: migra sin inconvenientes a una nueva arquitectura sobre la marcha, lo que facilita la reescritura de características muy específicas de tu código y reduce la necesidad de cambios drásticos.
  • Reemplazo: elimina la posibilidad de vendor lock-in con una plataforma compatible con los estándares de Internet y que te ofrece completa flexibilidad y control.

Combinamos los beneficios de desempeño de la edge computing con las ventajas del modelo serverless. Como gestionamos los recursos y seguridad en el lado del servidor, se simplifica el proceso de modernización. En consecuencia, las empresas obtienen el mejor retorno de inversión en su modernización, ya que gastan menos tiempo en la transición y pueden enfocarse en ofrecer nuevas y mejores experiencias a sus usuarios.

Suscríbete a nuestro boletín informativo