El camino a la modernización de aplicaciones

Actualmente, podría considerarse que todo negocio, independientemente de su razón social u objetivos, es en sí mismo, una empresa de software, ya que todos sus procesos están soportados en plataformas tecnológicas; y su vez, la actualización de éstas es directamente proporcional a su capacidad de reacción ante los retos del entorno.

Lo que desconocen muchas compañías, es que, con la llegada del mundo digital, la tecnología se convierte en el motor/medio que permite una mejor eficiencia operacional y ventajas competitivas frente a los demás actores del mercado.

Lo anterior fortalece el concepto abordado en recientes artículos sobre deuda técnica: cuando la tecnología se encuentra obsoleta o cuenta con una deuda técnica acumulada, se pierde la flexibilidad y rendimiento de las aplicaciones, disminuyendo la velocidad de respuesta frente a las necesidades del cliente y el mercado.

En muchas empresas se intenta resolver dichas falencias, a través de la realización de inversiones para el incremento de la infraestructura y/o las personas para el soporte y evolución de las aplicaciones. Lo anterior, en lugar de entregar una solución, inmediata, aumenta los costos operativos, tiempos de implementación y afecta, en muchas ocasiones la ruta de resultados esperada por el negocio.

En estos casos la mejor opción es un proyecto de modernización de aplicaciones, donde se interviene la aplicación para usar tecnologías modernas, disminuir la deuda técnica y entregar la agilidad esperada por el negocio.

Existen diferentes caminos para modernizar una aplicación, en este articulo trataremos 2 opciones puntuales: transformación y optimización.

Deuda técnica

Es un concepto en el desarrollo de software que refleja el costo implícito del retrabajo, adicional, causado al elegir una solución fácil, en lugar de recurrir a un enfoque que llevaría más tiempo en su desarrollo e implementación.

Este concepto es similar a deuda monetaria, si la deuda técnica no se paga, puede acumular ‘intereses’, lo que dificulta la implementación de cambios. La deuda técnica que no se gestiona, aumenta la complejidad de su mantenimiento.

En ocasiones es necesario contar con dicha deuda para avanzar en proyectos,  teniendo en cuenta que ésta debe ser pagada de forma oportuna y no dejar que se incremente y acumule.

Transformación

La transformación consiste en rediseñar la arquitectura o reconstruir una aplicación, con el fin obtener todas las ventajas de los modelos cloud first y/o tecnologías modernas.

Algunas de las tecnologías actualmente disponibles para realizar dicha transformación son:

Tecnologías serverless: es un tipo de arquitectura donde no se hace uso de servidores (físicos o en la nube). El código se corre en “ambientes de ejecución” donde se paga, sólo por el tiempo de ejecución de este. Mientras más rápido termine su función, menor será el costo. Se busca que la función sea pequeña y con un único propósito, por este motivo, esta tecnología, es relacionada frecuentemente con microservicios.

 

Arquitecturas de microservicios: (con soporte para Docker y Kubernetes) ofrece modularidad a través de que disponer los componentes de forma aislada brindando flexibilidad, resiliencia, lo que facilitan la gestión de las aplicaciones.

 

Arquitecturas orientadas a eventos: con tecnologías que permiten el desacoplamiento entre los diferentes dominios de aplicación, manteniendo la coherencia de la información y con excelentes niveles de servicio a muy bajo precio.

 

Tecnologías de integración modernas: fáciles de usar, su pago es sólo por el consumo realizado, evitando la compra de costosísimos buses de servicios empresariales (ESB por sus siglas en ingles Enterprise Service Bus).

 

Algoritmos de inteligencia artificial: una forma fácil y rápida, de incluir inteligencia artificial en su aplicación, es a través de APIs desarrolladas por científicos de datos, de cada proveedor de nube. Este algoritmo sólo se paga por el consumo. Incluso, en muchos casos, pueden llegar a ser gratis, ya que tienen un nivel de consumo de no cobro.

 

API Management: facilita la integración con otros actores de negocio para sumar capacidades y generar productos diferenciadores en el mercado.

Optimización

La optimización consiste en hacer ajustes básicos, a la aplicación, con el propósito de alojarla en una Plataforma como Servicio (PaaS) ofrecida por los diferentes proveedores de nube. Al moverla a una plataforma como servicio se obtienen ventajas en cuanto a:

La seguridad de la aplicación: Los datacenters en la nube realizan grandes inversiones, con el fin de adoptar los mejores componentes y prácticas de seguridad para proteger la infraestructura de las aplicaciones, allí alojadas.

Los costos de los componentes de seguridad son democratizados entre los diferentes clientes que hacen uso de la plataforma, lo que permite contar con tecnología de punta sin necesidad de pagar completamente por ella, como lo tendría que hacer en sus instalaciones (On-Premises).

La resiliencia de la aplicación: aumenta su disponibilidad, aún en eventos como desastres naturales, ya que posible acceder a datacenters distribuidos en diferentes lugares del mundo, que permiten replicar la infraestructura y aprovisionarla, casi de forma automática cuando se requiera la utilización de esta.

La elasticidad de una aplicación: aumenta al tener capacidad de computo ilimitada, para ser habilitada en los momentos en que se requiera. Se disponen de modelos de auto escalamiento y des escalamiento según el uso de los recursos de los servidores (CPU, memoria y otros) lo que permite determinar cuando se debe aumentar o disminuir la capacidad de computo.

La disminución de costos de administración: las plataformas de nube se encargan en gran medida de las tareas administrativas y operativas del mantenimiento de servidores y equipos. Las áreas de tecnología pueden trabajar en actividades que den mas valor al negocio que el hecho de mantener las luces prendidas.

¿Cuándo transformar una aplicación?

Algunos criterios que nos indican cuando debemos de hacerlo son:

• La aplicación es muy importante para el negocio.

• No se tiene el código fuente de la aplicación

• Es una aplicación empaquetada o de un proveedor de paquetes (ej: CRM, ERP)

• Presenta problemas de seguridad para la aplicación, los datos y en general la compañía.

• Tiene dependencias de hardware específico.

• Tecnologías o lenguajes de programación obsoletos o muertos.

• Se tiene una alta deuda técnica.

• Para modernizarla es necesario modificar más del 10% del código fuente.

Mantener las luces prendidas.

Es un termino usado para referirse al esfuerzo de los equipos de tecnología, para mantener las aplicaciones funcionando.

Se estima que mas del 70% de las horas de los equipos de tecnología se usan para mantener las aplicaciones legadas en operación, ya que éstas suelen fallar constantemente. Adicionalmente algunos procesos deben ejecutarse de forma manual, dado que no se pueden automatizar a causa de las tecnologías legadas.

¿Por qué un Advisory en modernización de aplicaciones?

La elección de la aplicación y de la estrategia de modernización no es una tarea fácil, mucho menos se debe tomar a la ligera. Una estrategia incorrecta puede incurrir en altos tiempos de espera para la evidencia de resultados, sobrecostos o costos que no debieron ser invertidos, pues quizás, no valía la pena modernizar la aplicación, sino más bien retirarla.

La recomendación, previo a realizar un proceso de modernización de aplicaciones, es recurrir a un equipo de especialistas, que cuenten con la experiencia y herramientas de última tecnología para evaluar el entorno digital de la empresa y crear, en conjunto, la hoja de ruta de modernización.

Con InterGrupo, a través de dicha evaluación, usted recibirá los siguientes resultados:

– Listado de aplicaciones a ser optimizadas, transformadas, desmanteladas o toleradas, a partir de la deuda técnica de cada aplicación y el valor que tienen para el negocio.

– Hoja de ruta de modernización basado en el valor que entregaría cada aplicación frente al esfuerzo necesario para modernizar.

 

Alejandro González Jaramillo 
Arquitecto de Soluciones