¡Qué la heterogeneidad NO es el problema, es el aislamiento!
Este escrito es un ensayo cuya tesis es que los sistemas de información heterogéneos no son en si un problema, en cambio lo que si es un problema es el aislamiento de estos.
Es común ver actualmente que muchas organizaciones tienen varios sistemas de información y estos no están interconectados. Esto es especialmente visible en organizaciones que han alcanzado cierto grado de madurez que exige una visión integrada de la operación. Pero cuando se pretende solucionar esta situación normalmente se diagnostica en forma errada el problema, lo que lleva a implementar «supuestas soluciones» que llevan a altos costos y perdida de tiempo.
En este ensayo te explico que es exactamente lo que está pasando y para ello, y en primera instancia, te lo presento en forma de mapa conceptual.
Si está muy pequeño para verlo haz clic en él y si tienes un navegador basado en mozilla (como firefox o crome) haz clic de nuevo para ampliarlo. También está la versión en PDF para que lo puedas ampliar todo lo que quieras: Aislamiento y Heterogeneidad de los Sistemas de Informacion – MapaConceptual, versión PDF.
Pero volviendo al tema, la tesis de este ensayo es que los sistemas heterogéneos no son un problema sino una característica y que el verdadero problema es el aislamiento de los sistemas de información. Si, es verdad que una consecuencia de los sistemas heterogéneos puede ser el aislamiento, pero esta es una consecuencia de como están (o mejor, no están) interconectados estos sistemas. La heterogeneidad no implica, en esencia, aislamiento. De hecho, los sistemas heterogéneos pueden conectarse y más delante te diré como se puede hacer.
El problema son realmente los sistemas aislados, por que no se pueden interconectar, están aislados. Dicho así parece obvio, ¿no? Claro, puede haber sistemas heterogéneos aislados, pero también puede haber sistemas homogéneos aislados. Por ello heterogeneidad, no es, como ya dije atrás, condición de aislamiento. Y otra obviedad: cuando los sistemas aislados se interconectan ¡dejen de ser aislados!
La homogeneización de los sistemas de información es normalmente la solución que se plantea para el problema del aislamiento de los sistemas de información. Pero esta no es una solución real, una que se pueda llevar a la práctica exitosamente, y aun cuanto hay muchas razones para ello te cuento sólo tres: La primera, es muy costoso homogeneizar los sistemas, simplemente porque toca reescribiros de cero, y sabemos lo costoso de un desarrollo. La segunda, la homogeneización no es condición suficiente para la interacción entre sistemas, hay que además interconectarlos bajo ciertas condiciones, y de todos modos eso hay que hacerlo con los sistemas heterogéneos (y que explicaré en el próximo párrafo). La tercera razón, es que si ya existen sistemas, los llamados legados, que cumplen bien con las funciones para las que fueron construidos, ¿para que volverlos a hacer?
Si esto es así ¿cómo podemos interconectar sistemas heterogéneos para que interactúen y conformen un súper-sistema? Hay dos principios que se deben cumplir necesariamente, estos son: intermediación y separación interfaz-implementación. He escrito dos artículos que son respectivamente: El poderoso concepto de la intermediación y El antiguo pero siempre actual concepto de separación interfaz-implementación. Especialmente la intermediación es lo que permite lidiar con la heterogeneidad, por que una de las funciones del intermediador es hacer estas «traducciones» entre estas diversidades. Pero también la separación interfaz-implementación ayuda en la interconexión de los sistemas por que aportan flexibilidad, modularidad (ver El antiguo pero siempre actual concepto de separación interfaz-implementación) y una intermediación, la interfaz, con todas la ventajas que eso implica. Y por último, esta es la misma forma en como se interconectan los sistemas aislados así sean homogéneos.
¿Como se hace una interconexión con estos dos principios? Pues existen muchas formas, pero la más usada actualmente, a nivel de sistemas de información, son las arquitecturas orientadas al servicio SOA (ver Conceptos clave de SOA). Esta arquitectura se basa sobre el principio del separación interfaz-implementación. Además si se usa un bus SOA (ver artículo El bus de servicios en SOA) tenemos implementado el concepto de intermediación con todas sus ventajas.
Y como último argumento, pero no menos importante, cuando se tienen sistemas heterogéneos que tienen funciones similares (como los DBMS, los CMS y los frameworks) cuando se presenta un cambio inesperado algunos de estos sistemas tiene mucha probabilidad de sobrevivir. Este argumento es basado en los sistemas biológicos, en los cuales si hay un cambio en un ecosistema la supervivencia de las especies está directamente relacionada con la heterogeneidad entre ellas. En sistemas de información te lo voy a explicar con un ejemplo: imagina por un momento que tienes varios DBMS (sistemas manejadores de bases de datos, en inglés) que soportan tus sistemas de información e imagina que sale un parche para uno de ellos, y este parche hace que tus sistemas dejen de funcionar. Si tienes heterogeneidad en los DBMS no todos tus sistemas de información se verán afectados, sobrevivirán algunos. Es más, si has aplicado el principio de separación interfaz-implementación (por ejemplo con un mapeo objeto-relacional) podrás migrar tus sistemas de información afectados a otro DBMS y comenzar a funcionar de nuevo. Esto quiere decir no solamente que la heterogeneidad no es un problema, sino que es deseable.
Finalmente no sólo es mentira que la heterogeneidad origina en todos los casos aislamiento, sino que solucionar el problema del aislamiento teniendo en cuenta los principios de intermediación, separación interfaz-implementación y, a sobre todo, manteniendo la heterogeneidad hace que tus sistemas sean mucho más flexibles, modulares y que puedan sobrevivir a eventos catastróficos inesperados.