Porque modernizar las aplicaciones?

Applicaciones y Data Entrgan Diferenciacion

Las organizaciones hoy en día, necesitan poder utilizar de la manera mas eficiente la información para poder diferenciarse en un mercado que es cada vez más competitivo.

Las aplicaciones son las que permiten acceder y explotar esta información, por lo que se han convertido en el vehículo para que las organizaciones puedan crear y entregar valor.

Es por esto que las aplicaciones están experimentando un cambio radical en la manera como son desarrolladas y consumidas. Eventos recientes como el COVID, no han sido mas que aceleradores de este proceso. 

Demos una mirada a como estamos interactuando al día de hoy con diferentes servicios.

Por ejemplo, las comunicaciones, no solo podemos utilizar servicios como Zoom, o Microsoft Teams, para comunicarnos instantáneamente con nuestros amigos, colegas y familia, sino que ahora están siendo utilizados para educación a distancia, de esta manera han tenido que operar la mayoría de las escuelas, incluyendo la de mis hijas.

Servicios como la telemedicina, ahora podemos tener acceso a médicos que podrían estar tanto en su misma ciudad, como en cualquier lugar del mundo.

Pensemos en como antes si queríamos comprar algo, teníamos que ir por obligación físicamente a la tienda, ahora no solo empresas precursoras como Amazon nos brindan este tipo de servicios, sino que un sinnúmero de otras tiendas minoritas permiten ordenar a través de sus paginas web o aplicaciones mobiles y te entregan la mercancía a domicilio.

Hay empresas como Ikea que están yendo más allá y utilizan tecnologías como realidad virtual y realidad aumentada para que los clientes puedan visualizar como un mueble ser vería en su casa solo utilizando una aplicación en un teléfono inteligente.

Lo mismo pasa con el sector de entretenimiento, no hace mucho tiempo atrás, si uno quería ver la última película había que ir físicamente al cine, ahora podemos verlas por servicios de streaming, simultáneamente a como son estrenadas en los cines, o algunas exclusivamente en línea.  Organizaciones como Netflix, han cambiado completamente la manera como se entrega contenido. Antes uno tenía que esperar meses para poder saber que pasaría al final de su show favorito, ahora uno puede ver series completas, al ritmo que desee.

Por último, algo que todo mundo puede identificarse, la comida. Ahora la mayoría de los restaurantes ofrecen servicios de Delivery, ya sea propios o a través de diversos tipos de aplicaciones que se han ido desarrollado. Estas utilizan servicios de geo-localización para identificar disponibilidad de los restaurantes y poder hacernos la entrega justo donde estamos. Las organizaciones están tomando su valor de negocio intrínseco o fundamental, y pasando por un proceso de modernización para poder ajustarse al rápido ritmo que vivimos.

Aplicaciones hoy en día

Si su organización lleva más de un de un par de años funcionando, su portafolio de aplicaciones lo más seguro sera una mezcla compleja de diferentes tipos de aplicaciones y tecnologías interrelacionadas.

Seguramente podremos encontrar desde aplicaciones comerciales o COTS, hasta aplicaciones costumizadas posiblemente desarrolladas en .NET, Java o cualquier otro framework. Posiblemente para nuevas iniciativas ya se haya iniciado o este evaluando empezar a trabajar con nuevas tecnologías “cloud native”, como microservicios, contenedores o server-less.

La idea es utilizar la nube para incrementar el valor que la organización entrega a sus clientes, pero la complejidad y deuda técnica hace difícil avanzar. El software viejo es difícil de actualizar, integrar, escalar y tener a los equipos internos enterrados en trabajo de mantenimiento no brinda valor al negocio.

Esta realidad hace la idea de modernizar las aplicaciones sea algo complicado para la mayoría de las organizaciones.

La transformación es inevitable

De acuerdo con un reciente estudio de Forrester, la mayoría de los CIO concuerdan que modernizar su portafolio de aplicaciones es una de sus mayores prioridades. Sin embargo, casi la mitad de estas mismas organizaciones no han podido realizar mejoras en el último año o más.

Esto no cambia el hecho de que las aplicaciones modernas o cloud-native se están convirtiendo en un nuevo standard. De acuerdo con IDC, en su más reciente estudio FutureScape, para el 2024 más de 500M de nuevas aplicaciones van a ser desarrolladas utilizando las prácticas de cloud-native.  

Gartner dice que el 85% de las organizaciones globales estarán corriendo aplicaciones cloud-native en producción, una cifra interesante es que este cambio no solo está sucediendo para software desarrollado internamente, sino que el 80% de los fabricantes de software comercial también van a estar ofreciendo sus productos en formato de contenedores. 

Las 5Rs

Hay varias estrategias para racionalizar el portafolio de aplicaciones y poder de esta manera modernizarlo. A esto lo conocemos como las 5Rs. Comenzando de izquierda a derecha primero tenemos Retirar, que normalmente está asociado al hecho de sencillamente dejar de usar la aplicación o reemplazarla por un ofrecimiento tipo SaaS. Retener, que no es más que no hacer nada con la aplicación, dejarla como está. Y luego tenemos Rehostear o Migrar, también conocido como lift-and-shift, mover mi aplicación a un ambiente de IaaS, ya sea a una nube publica o por qué no, privada, la idea es moverla a una infraestructura que sea más moderna.

Hablemos sobre las dos estrategias que nos quedan que posiblemente son las mas interesantes, Replatforming y Refactoring.

Replatforming. Normalmente vamos a tener una aplicación corriendo sobre una máquina virtual. Lo que vamos a hacer es que vamos a tomar todas sus dependencias y las vamos a colocar todas juntas dentro de un contenedor.  Hay un sinnúmero de beneficios al colocar la aplicación en un contenedor, tenemos ahora mayor portabilidad, tenemos también consistencia a través de nuestros diferentes ambientes, podemos usar el mismo contenedor de la aplicación tanto para un ambiente de desarrollo, pruebas o producción, solamente basta cambiar los parámetros de configuración.  Ahora tenemos la flexibilidad de utilizar plataformas modernas como Kubernetes, las cuales son basadas en un modelo declarativo y definidas por un API abierto. 

Por el otro lado, tenemos el ultimo enfoque que puede ser un poco más dramático que es Refactoring o potencialmente Reconstrucción de la aplicación. Tomemos como ejemplo la misma aplicación que ya conversamos, lo más típico es que la misma sea lo que conocemos como un Monolito, con todas sus dependencias en un mismo binario. Esto complica que los desarrolladores puedan hacer cambios sin afectar toda la aplicación y hacer pruebas o desplegar la misma, estamos hablando que hay que desplegar la aplicación completa. 

El concepto de Refactoring toma esta aplicación y la divide en sus partes fundamentales. Imaginémonos una aplicación bancaria, posiblemente podemos romperla en componentes como su base de datos, front-end, y lógica de negocios, estos componentes se conocen como Microservicios.  El punto al final es que, al ser elementos independientes, esto permite que los grupos de desarrolladores puedan ir a su propio ritmo, sin impactar a los otros. Por ejemplo, si el banco quiere hacer mejoras en la interfaz de usuario, el grupo de desarrolladores trabajando este componente puede generar nuevas versiones rápidamente y llevarlas a producción, sin tener restricciones o sin impactar los otros elementos de la aplicación. Podríamos hasta reemplazar alguna funcionalidad de la aplicación por un servicio ofrecido por un operador de nube publica si hiciera sentido.

Conclusiones

Para concluir, las organizaciones estan pasando por un proceso de transformación digital. Para poder seguir siendo relevantes es necesario adaptarse a los nuevos tipos de consumo de servicios digitales y esto lo voy van a lograr a través de sus aplicaciones.

Hay varias estrategias que hay considerar que se le conocen como las 5Rs que son alternativas que hay que plantearse sobre el portafolios de aplicaciones existentes buscando modernizarlo de la mejor, manera. No hay una receta magica o una sola vía, es necesario analizar cada aplicación para identificar cual es la mejor manera de manejar este proceso.