Ok, donde trabajo tenemos una cantidad bastante importante de sistemas escritos en las últimas décadas que mantenemos.¿Cuál es la mejor manera de integrar varios sistemas?
Los sistemas son diversos en los múltiples sistemas operativos (Linux, Solaris, Windows), múltiples bases de datos (varias versiones de Oracle, sybase y mysql) e incluso varios idiomas (C, C++, JSP, PHP y un host de otros) se usan.
Cada sistema es bastante autónomo, incluso a costa de ingresar los mismos datos en múltiples sistemas.
La administración recientemente decidió que deberíamos investigar qué se necesitará para lograr que todos los sistemas se comuniquen entre sí y compartan datos.
Tenga en cuenta que si bien podemos hacer cambios de software en cualquiera de los sistemas individuales, una reescritura completa de cualquier sistema (o más) no es algo que la administración pueda entretener.
La primera idea de varios de los desarrolladores fue simple: si el sistema A necesita datos del sistema B, simplemente debe conectarse a la base de datos del sistema B y obtenerlo. Del mismo modo, si necesita dar datos B, debería simplemente insertarlos en la base de datos de B.
Debido al desorden de las bases de datos (y versiones) utilizadas, otros desarrolladores opinaron que deberíamos tener una nueva base de datos, combinando las tablas de todos los demás sistemas para evitar tener que hacer malabarismos con múltiples conexiones. Al hacer esto, esperan que podamos consolidar algunas tablas y deshacernos de la entrada de datos redundantes.
Esto es casi el momento en que me trajeron mi opinión sobre el desastre.
La idea de usar la base de datos como medio de comunicación del sistema me resulta graciosa. La lógica empresarial tendrá que colocarse en múltiples sistemas (si el Sistema A quiere agregar datos al Sistema B, comprender mejor las reglas de B con respecto a los datos antes de insertarlos), es probable que varios sistemas tengan que hacer alguna forma de sondeo de bases de datos para encontrar Cualquier cambio en sus datos, el mantenimiento continuo será un dolor de cabeza, ya que cualquier cambio en el esquema de una base de datos ahora propaga varios sistemas.
Lo primero que pensé fue en tomarse el tiempo y escribir API/servicios para los diferentes sistemas, que una vez que se escriben podrían utilizarse fácilmente para pasar/recuperar datos de ida y vuelta. Muchos otros desarrolladores piensan que es excesivo y mucho más trabajo que solo usar la base de datos.
Entonces, ¿cuál sería la mejor manera de lograr que estos sistemas se comuniquen entre sí?