11 ene 2012

Re-escribir o no re-escribir, esa es la cuestión - Modernización de aplicaciones y pantallas

A menudo nos topamos con problemas que nos hacen pensar en que debemos tomar entre las manos nuestro trabajo, hacer una bola y aventarlo al cesto de la basura.

Muchas de nuestras aplicaciones (o las de nuestros clientes) tienen años, y por lo general han sido modificadas por decenas y hasta cientos de programadores a lo largo de su ciclo de vida, sufriendo extrañas mutaciones, agregando interfaces crípticas o que no cumplen con los estándares de seguridad o de funcionalidad, con módulos desarrollados en diversos lenguajes de programación e interactuando entre distintos equipos de múltiples marcas y tecnologías.

Podemos pensar que esto es propio de las empresas que desarrollan sus propios sistemas, pero no es del todo cierto. Existen productos que han sido tan modificados que ni su propio creador podría reconocerlo.

Como muestra:

* Bancos y aseguradoras: Cuentan con aplicaciones de hasta 30 años corriendo en entornos monolíticos (mainframes, mini-computadoras, sistemas propietarios). Necesitan estrictos sistemas de seguridad por reglamentos del sector y las corporaciones que los administran.
* Empresas de distribución de mercancía: Cuentan con sistemas de hasta 10 años, por lo general son desarrollos internos, pero también existen sistemas comerciales que han sido modificados de forma radical.
* Industria: Suelen contar con sistemas bastante antiguos, de hasta 15 o 20 años, y dependiendo de su dependencia de estos la capacidad de inversión.
* Gobierno y empresas de servicio: Sus aplicaciones vienen de gestiones anteriores. Por lo general tienen reglas de negocio muy particulares y eso hace que se vuelvan enormes rompecabezas. Hay sistemas realmente antiguos corriendo en estas empresas.

Cada giro de negocio tiene una problemática particular, pero lo que es común a todos es que los tiempos cambian, las necesidades avanzan, y muchas veces necesitamos que nuestras aplicaciones hagan algo para lo cual no fueron pensadas: conectarse mediante Internet usando tecnologías como WebServices, funcionar desde una tablet, poder funcionar desde "la nube" o simplemente funcionar en web.

Cuando nos enfrentamos a esto nos invaden palabras como: Middleware, Web-Enable, Application Modernization, ESB, Message Queues, Screen Scrapping, Rehosting, o simplemente pensamos en un reemplazo de las aplicaciones, siempre que sea posible.

Pero no existe una forma de transición entre un ambiente y otro?

Los números dicen que muchas veces es más económico comprar un sistema nuevo que reparar uno existente. Pero la realidad dice que eso es en costos de adquisición, nuestros negocios no siempre están preparados para soportar un cambio tan radical.

Si pensamos en hacer convivir lo antiguo con lo nuevo existen alternativas:

Normalmente el middleware permite interconectar nuestro sistema "legacy" con nuevos módulos, pero hay que tener cuidado porque el middleware se puede convertir en un sistema por si mismo, de acuerdo al tamaño de la infraestructura.

Desde un punto de web-enable y application modernization podemos encontrar soluciones que pueden publicar sistemas de pantallas de texto como páginas web. Claro, no podemos considerar esto como una  solución definitiva, dado que conforme los usuarios van usando las aplicaciones en versión web van solicitando mejoras y modificaciones que requieren soluciones diseñadas especialmente para este ambiente, pero puede ser un primer paso. Ejemplos: Webfacing, IBM Rational HATS, Attachmate.

Algunas empresas tienen diseños en sus aplicaciones que permiten crear mecanismos de múltiples capas para separar las reglas de negocio de la capa de presentación. Un ejemplo de esto son aplicaciones de modo "batch" o stored procedures en un lenguaje nativo y un desarrollo visual en .NET o Java para la interacción con los usuarios.

Lo importante es comprender que los negocios ya necesitan de este tipo de cambios y mejoras en sus aplicaciones, que los directores y gerentes necesitan acceder a las aplicaciones todo el tiempo, y sin importar el mecanismo, sea un iPad o un celular.


Cómo conectarme a un servidor remoto en una red protegida - Versión actualizada

En un artículo anterior describí cómo conectarse a un equipo remoto en una red protegida http://diego-k.blogspot.mx/2014/12/como-conectarme...