Moving to English this page is a hard work for me. It will be done, but, in the meantime, use Google for a basic tranlation.
Cualquiera que haya debido resolver el problema de cómo
"informatizar" una empresa o institución de volúmen
importante, sabe que la solución no es simple ni lineal.
Una empresa es un cuerpo social, con actividades variadas, complejas, y
en evolución constante, en interrelación con la sociedad,
ya sea vista como mercado, como proveedores, como exigencias
normativas, o como recursos humanos internos, por mencionar lo
más evidente.
Podríamos llamar a estos elementos, extensión de la
empresa. A ellos les debemos agregar la dimensión temporal: La
empresa, salvo que la hayamos incubado en nuestra cabeza como
categorías kantianas, viene de una historia, y está
sujeta a cambios constantes originados en la evolución del
mercado, los condicionantes sociales, y las estrategias comerciales.
En este contexto, qué sucede invariablemente con los sistemas de
información de la empresa: Comienzan coherentes y completos para
un área y una necesidad determinada, y en el mejor caso, en el
marco de un proyecto de sistemas delineado hacia el futuro.
Luego, cuando se comienza a cubrir un nuevo área, cambia la
legislación, los objetivos comerciales, los integrantes del
equipo, y el primer módulo en producción no ajusta 100%
con el siguiente.
Luego la empresa crece o se achica, y el plan no sirve, y una parte es
descartada, y reemplazada por otra con nuevos objetivos y
tecnología.
Pero los módulos preexistentes no pueden ser abandonados
completamente, porque cubren confiablemente una parte de la actividad,
y comienzan a coexistir productos heterogéneos. Y este ciclo se
repite en una espiral de complicación.
Así se va construyendo la compleja arquitectura de
información de una empresa mediana o grande: plataformas
variadas, con un recurso principal para las actividades
críticas, que a la vez alberga otras aplicaciones heredadas no
reeplazadas, y aplicaciones de uso localizado (tareas de
ingeniería, de Investigación de negocios, redes locales
para tareas de oficina, etc);
sistemas operativos variados dialogando, lenguajes principales y
secundarios, equipos de personas manteniendo sistemas por vías
imprevistas (un programador externo sosteniendo una aplicación
de lectura de aparatos, una consultora a cargo de una aplicación
de Inteligencia de Negocios, un equipo en el sistema de recursos
humanos, etc, etc).
Una difundida solución, tanto más difundida cuanto más presupuesto disponible tenga la empresa, es recurrir a un ERP (Enterprise Resource Planning, o Aplicaciones de Planeamiento de Recursos a nivel de la Empresa). Qué es un ERP?. Por tomar una, esta es la definición de Whatis, en SearchSap:
ERP (Enterprise resource planning) is an industry term for the broad set of activities supported by multi-module application software that helps a manufacturer or other business manage the important parts of its business, including product planning, parts purchasing, maintaining inventories, interacting with suppliers, providing customer service, and tracking orders. ERP can also include application modules for the finance and human resources aspects of a business. Typically, an ERP system uses or is integrated with a relational database system. The deployment of an ERP system can involve considerable business process analysis, employee retraining, and new work procedures. In a recent trend, SAP, Peoplesoft, and J. D. Edwards are among ERP product providers offering ERP outsourcing.
Es necesario aclarar que en esta página se restringe el significado de EAI al software comercial, ofrecido como solución. En sentido amplio, se debe considerar ERP a todo conjunto integrado de administración de una empresa, sea comprado o desarrollado internamente. Dicho esto, volvemos a la definición: como vemos en ella, la tentación consiste en tener solucionado en un solo paquete, con confianza en que fue planeado siguiendo una filosofía actualizada y exitosa para la gestión y el control de las operaciones, y todo esto, disponible "en un solo paso". Más aún, más de una vez, un gerente o una directiva sienten el alivio de que pasan a otro, comunmente a una consultora, el peso de la solución de aspectos vitales del negocio.
En pocas palabras, qué es lo positivo de un ERP?
Y qué es lo negativo:
Lo irónico o paradójico de todo esto es que frecuentemente, al final del proceso tenemos al ERP como otro sistema heredado más, si el costo de implantar el cambio en el producto es inviable. Entonces, las adecuaciones se realizan paralelas al tronco principal del ERP, y poco a poco queda obsoleto, con islas conectadas por puentes al sistema. Hoy podríamos agregar un nuevo elemento: uno de los argumentos en favor de contratar un ERP, es su estabilidad. Esta estabilidad ha sido puesta en cuestión tras la compra de JDEdwards por Peoplesoft, y el intento todavía en curso, de compra hostil de Peoplesoft por parte de Oracle. Peor aún, SAP mismo pareció trastabillar, tras trascender una oferta de compra de parte de Microsoft. Al día de hoy, podría preguntarse cuál es la opinión de los usuarios de JDEdwards, acerca del futuro de su compra.
Este mes (Agosto 2004), justamente refuerza las dudas la decisión de Ford Motor Company, de discontinuar su proyecto Everest, basado en una solución construída junto a Oracle, debido a insatisfacción en su rendimiento, tras más de cuatro años de desarrollo y dedicación de fondos. Una inversión de un volumen que traerá consecuencias: ochenta millones de dólares iniciales, hasta llegar a un total aproximado de 200 millones, con una participación de más de trescientos miembros de su equipo. Los anuncios no han sido muy específicos, pero traslucen desacuerdo con el resultado del producto; uno tal que vale 200 millones de dólares. El caso es que Ford vuelve atrás a su solución propietaria. Responsabilidad de quién? No hay duda de que por un buen tiempo será un caso de estudio. Más comentarios y referencias al proyecto en la página de noticias.
Mucho más común y promedio es acudir a un equipo interno de desarrollo. Tradicionalmente, cualquier empresa mediana establecía su departamento de informática, y sostenía, con suerte diversa, sus propias aplicaciones. En la medida en que la informática devino una disciplina más rigurosa, otras soluciones se fueron ofreciendo como alternativa, y así la existencia de un departamento de informática, dependiendo del tamaño de la empresa, devino agencia externa, asesoría, o alguna otra forma de externalización. En cualquier otro caso en que el área informática se hubiera mantenido, su éxito depende de la adopción de criterios más rigurosos que el pionerismo de otras décadas. Hoy existen metodologías aceptablemente probadas, y las herramientas y productos han evolucionado hacia un modo de construcción y mantenimiento del software modular, riguroso, "componible", que permite hablar de "fábrica de software". En estas condiciones, la viabilidad del desarrollo interno depende de la adopción de buenas prácticas y una filosofía de desarrollo adherida a las tendencias corrientes a la componentización de los sistemas.
Este material es el que ha sido la ocasión de desarrollo de una disciplina crecientemente importante: la integración de las aplicaciones del mundo real (es decir, el conglomerado heterogéneo resultante en el transcurso del tiempo) en la empresa. Nuevamente, la definición de Whatis:
EAI (enterprise application integration) is a business computing term for the plans, methods, and tools aimed at modernizing, consolidating, and coordinating the computer applications in an enterprise. Typically, an enterprise has existing legacy applications and databases and wants to continue to use them while adding or migrating to a new set of applications that exploit the Internet, e-commerce, extranet, and other new technologies. EAI may involve developing a new total view of an enterprise's business and its applications, seeing how existing applications fit into the new view, and then devising ways to efficiently reuse what already exists while adding new applications and data. EAI encompasses methodologies such as object-oriented programming, distributed, cross-platform program communication using message brokers with Common Object Request Broker Architecture and COM+, the modification of enterprise resource planning (ERP) to fit new objectives, enterprise-wide content and data distribution using common databases and data standards implemented with the Extensible Markup Language (XML), middleware, message queueing, and other approaches.
EAI es una disciplina de aplicación de conocimiento, recurriendo a herramientas diversas, para hacer coherente un conjunto heterogéneo de aplicaciones en escenarios cambiantes. Mientras que el problema se ha vuelto más complejo, la posibilidad de hechar mano a soluciones efectivas ha crecido simultáneamente: Como vemos en la definición, las variantes de tecnología de componentes (CORBA, COM, EJB), la utilización de patrones de diseño, la posibilidad de recurrir a un mercado de componentes, los conectores ODBC y JDBC, las nuevas arquitecturas de servicios Web, los sistemas de mensajes, entre otras facilidades, son la batería de recursos a la mano de quienes deciden integrar y unificar los sistemas de información en una empresa. En la definición de IT-ToolBox, estas son las áreas relevantes, y niveles de aplicación, de EAI:
What is involved in EAI?
EAI is very involved and complex, and incorporates every level of an enterprise system - its architecture, hardware, software and processes. As defined by ITtoolbox, EAI involves integration at the following levels:
- Business Process Integration (BPI): When integrating business processes, a corporation must define, enable and manage the processes for the exchange of enterprise information among diverse business systems. This allows organizations to streamline operations, reduce costs and improve responsiveness to customer demands. [6] Elements here include process management, process modeling, and workflow, which involves the combination of tasks, procedures, organizations, required input and output information, and tools needed for each step in a business process.
- Application Integration: At this level of integration, the goal is to bring data or a function from one application together with that of another application that together provide near real-time integration.[7] Application Integration is used for, to name a few, B2B integration, implementing customer relationship management (CRM) systems that are integrated with a company's backend applications, web integration, and building Web sites that leverage multiple business systems. Custom integration development may also be necessary, particularly when integrating a legacy application with a newly implemented ERP application.
- Data Integration: In order for both Application Integration and Business Process Integration to succeed, the integration of data and database systems must be tackled. Prior to integration, data must be identified (where it is located), cataloged, and a metadata model must be built (a master guide for various data stores). Once these three steps are finished, data can then be shared/distributed across database systems.
- Standards of Integration: In order to achieve full Data Integration, standard formats for the data must be selected. Standards of Integration are those that promote the sharing and distribution of information and business data – standards that are at the core of Enterprise Application Integration. These include COM+/DCOM, CORBA, EDI, JavaRMI, and XML.
- Platform Integration: To complete the system integration, the underlying architecture, software and hardware, the separate needs of the heterogeneous network must be integrated. Platform Integration deals with the processes and tools that are required to allow these systems to communicate, both optimally and securely, so data can be passed through different applications without difficulty. For example, figuring out a way for an NT machine to pass information reliably to a UNIX machine is a large task for integrating an entire corporate system.
En IT Toolbox, Ranbir, un colaborador del sitio, expresa en un artículo de su Blog, las características que un desarrollador dedicado a la integración de aplicaciones debiera tener. Por supuesto, la lista de requerimientos va a variar de un caso a otro, pero una ojeada a la lista es reveladora del esfuerzo que la actividad requiere: Java, C++, OO (Encapsulado, Interfaces), Arquitecturas, Patrones de Diseño, J2EE, Mensajería (MOM), SOAP, Metodos de manejo del ciclo de vida... Otro artículo suyo enumera el grado de dificultad y de heterogeneidad de los elementos que entran en juego: Variedad de Lenguajes, procedurales ú orientados a objeto, variados sistemas de base de datos, variados conjuntos de aplicaciones cliente/servidor u otros, variados componentes de middleware, diferentes modelos de datos y de compartir la lógica, para "poner las manzanas y las naranjas a hablar". Otro breve pero útil comentario lo brinda Scott Robinson en Developer.com, discutiendo las particularidades que implica trabajar con un ERP. Este artículo es recomendable si se proyecta diseñar, no comprar un paquete cerrado.
De lo que vemos, está claro que resolver la
integración de aplicaciones requiere ocuparse de
múltiples plataformas, Bases de Datos, lenguajes de
programación, y articular distintas arquitecturas como algunos
de los desafíos más relevantes. En este contexto, los
principios asociados a la iniciativa MDA (Model Driven Architecture)
pueden cumplir un papel fundamental en la construcción de
soluciones. Dos aspectos colaboran a ello: La mediación entre el
código final y el modelo conceptual del problema que permite el
uso de un generador de código específico a un problema o
plataforma. Una importante ventaja de esta característica, es
que permite disminuír las necesidades de conocimiento sobre una
variante particular, acortando el tiempo de conocimiento, y su costo.
Por supuesto, el acortamiento en tiempos de respuesta, al disponer de
un generador. El otro aspecto, es la posibilidad de articular distintas
visiones adecuadas al nivel de plataforma. De esta forma, bajo el
paraguas de una sola solución, un solo modelo del problema, es
posible establecer un plano articulado con su descripción en
distintos ambientes. Existe un interesante trabajo que destaca la
importancia de MDA en éste área, escrito por Sundar
Vaidyanathan, publicado en Business Integration Journal, donde ofrece una
visión de cómo efectuar esa aplicación, destacando
el uso del modelo PIM (Platform Independent Model) para el
diseño del modelo a nivel abstracto, correlacionado con las
aplicaciones legacy que correspondiera, y el modelo específico
de una plataforma determinada (PMS) incorporando las APIs
específicas de cada plataforma articulada.
Sobre este mismo punto, un interesante papel de Metamatrix explica en mayor
detalle la idea.
El uso de patrones de diseño crecientemente se ha convertido en un recurso de productividad en todos los campos de la construcción del software, e indudablemente son aplicables al universo de la Integración de Aplicaciones. Se trata de una especialización de los criterios de creación de patrones: aplicar soluciones probadas y aceptadas a problemas y escenarios recurrentes, en este caso, de la integración de funciones y sistemas heterogéneos. Muchas herramientas MDA son capaces de aplicar o crear patrones en el contexto de sus modelos, sea a nivel independiente de la plataforma, o no. Gartner llama ARAD a las herramientas que unen criterios de modelado abstracto con el uso de patrones (Architected Rapid Application Development, siendo RAD por el desarrollo rápido con un generador, y Architected, por el modelado abstracto y el uso de patrones). Una excelente aproximación al uso de patrones en EAI, lo da el sitio mantenido por Martin Fowler y Gregor Hohpe, Enterprise Integration Patterns, que aporta un buen número de patrones en áreas tales como Estilos de Integración, Sistemas de Mensajería, Canales, Ruteo, Transformación, Administración del Sistema, etc.
Mas allá de las influencias comerciales (siempre es necesario empujar una nueva ola de ventas con un "nuevo" concepto), se está produciendo un desplazamiento o extensión, o reinterpretación, de la idea de componentes (Corba, COM) que resultara fundamental en años recientes (y continuará siéndolo), moviéndose hacia los estándares denominables "loosely coupled", al facilitarse el uso de la Web. La aparición de SOA (Service Oriented Architectures, Arquitecturas orientadas a Servicio) y de Servicios Web (Web Services) tiene como objetivo precisamente a las Aplicaciones de Empresa, y su integración tanto a nivel interno como a nivel de comunidades de Empresas (Una empresa con sus proveedores, una comunidad de empresas con un organismo de gobierno). Se trata de estándares en formación, quizá todavía no completos o insuficientes, pero prometedores por su característica de utilización abierta de un servicio publicado. Existe mucha literatura al respecto, y aquí se irán agregando referencias. Un caso apropiado, uniendo el uso de patrones visto arriba con estos estándares, se puede ver en el artículo de Sean Neville, en Enterprise Integration Patterns.
En este marco, Plex está en condiciones de actuar como integrador para un alto porcentaje de las tareas a resolver. Se podría incluso disentir con el alcance que le da a Plex su propietario, Computer Associates, que pareciera reducir su ambito de aplicación, o no destacarlo como integrador: sólo este año comenzamos a verlo estrechamente vinculado a la familia de productos destinados al manejo completo de ciclo de vida del software. Como se ha dicho detalladamente en otras páginas, la virtud principal de Plex es la de diseñar un modelo abstracto altamente cohesionado, con la capacidad de ser implementado sobre una gran variedad de alternativas. Ya de por sí, esta capacidad básica lo destaca como herramienta de integración, al permitir transladar a nuevos escenarios, o al permitir establecer puentes, con una gran variedad de plataformas y bases de datos. Aquí describiremos el conjunto de recursos disponibles en Plex utilizables como herramientas de integración. A continuación se enumeran, dentro de lo posible con casos, los principales recursos utilizables en Integración, y en entregas futuras iremos dando uno o más casos de cada una de las posibilidades existentes:
Definición de EAI en IT Toolbox | Ya usada en parte, esta es su definición de EAI |
La definición de EAI de Frances Ren | EAI en los conceptos de un especialista |
La evolución de la empresa, en Technology Evaluation | Un artículo que desarrolla el problema del conflicto entre el software y la evolución de una empresa |
Si necesita fundamentación, recursos | Encontrará aquí un repostorio detallado de materiales dedicados al estudio de EAI y su alcance. |
Open PSA | Un sitio dedicado fundamentalmente a EAI, y las áreas de interés vinculadas, desde el punto de vista de tecnología y aplicación. |
Qué implican los ERP | En IT Toolbox puede informarse, estudiar distintos productos y áreas de aplicación, y ver foros dedicados a planeamiento de recursos en la empresa |
Ebizq | Quizá el portal de actividades vinculadas a Integración de Aplicaciones más importante, con espacios dedicados a SOA, Web Services, ESB, Grid Computing, EAI, CRM, ERP, B2B, Colaboración, Middleware, Messaging, etc. |
Integration Consortium | Organización dedicada a dar valor en la integración, con desarrollo de mejores prácticas, desarrollo de técnicas, estudio de casos, con recursos abiertos al público, además de los disponibles para las empresas asociadas |
Clave Empresarial | Buena orientación en castellano sobre el significado, la historia, y los recursos componentes de las Aplicaciones de Empresa (ERP) |