Oswald Regular
OpenSans Regular
El Co>Operating System®
Prestaciones amplias y exhaustivas

El Co>Operating System® es un entorno para armar, integrar y ejecutar aplicaciones empresariales. Es la base que soporta todas las tecnologías de Ab Initio, como el Enterprise Meta>Environment®, Continuous>Flows®, Conduct>It®, Business Rules Environment, entre otras. Estas tecnologías proporcionan un entorno completo y sin fisuras para el desarrollo y la ejecución de aplicaciones.

El núcleo del Co>Operating System es un “motor de flujo de datos”. Este motor alimenta una extensa biblioteca de “componentes” para el procesamiento de datos, los cuales manipulan los datos que fluyen a través de una aplicación. Las aplicaciones se diseñan, implementan y mantienen en un entorno gráfico mediante el Graphical Development Environment (GDE®) de Ab Initio.

El principio central que guía el Co>Operating System es la idea de que las aplicaciones se diseñan y se desarrollan de forma similar a como la mayoría de la gente diseñaría un sistema, llegado el caso, sobre una pizarra o una servilleta. Utiliza iconos fáciles de reconocer que representan las entradas y salidas, y que luego se combinan con rectángulos de procesamiento y flechas para definir el flujo de procesamiento general. Al seleccionar los componentes adecuados en la biblioteca y “conectarlos”, el usuario crea una aplicación de Ab Initio®.

Ab Initio integra con consistencia el diseño y la ejecución de aplicaciones. A todos los efectos, el dibujo es la aplicación. Y la aplicación resultante puede ser por lotes, casi en tiempo real, en tiempo real o, incluso, una combinación de todas ellas (en un entorno de computación, además, potente y coherente).

Gracias a su planteamiento de flujo de datos gráfico, las tecnologías de Ab Initio se pueden utilizar para armar la gran mayoría de las aplicaciones empresariales al uso. Como por ejemplo, sistemas operacionales, integración de aplicaciones distribuidas, procesamiento de eventos complejos, o sistemas de gestión de almacenamiento de datos y de calidad de datos. No obstante, el diseño y el desarrollo gráficos solucionan únicamente una parte de los desafíos que enfrentan las compañías. Al mismo tiempo, estas aplicaciones deben también satisfacer requisitos de gestión y de operación muy exigentes.

Históricamente, las tecnologías de programación en un entorno gráfico suministraban imágenes muy atractivas en lo visual pero que resultaban de nula utilidad a la hora de ponerlas en práctica. El Co>Operating System no tiene nada que ver con aquellas tecnologías vistosas que luego nunca funcionaban en el “mundo real”. Lo que lo hace diferente es, de hecho, que sí que funciona. A continuación, se reseñan algunos ejemplos de implementaciones exitosas del Co>Operating System (junto con los requisitos que hubo que tener en cuenta al adaptar la tecnología a las necesidades variables de cada cliente):

  • Una de las mayores bolsas de valores del mundo convirtió millones de líneas de código Cobol para operaciones de misión crítica a aplicaciones de Ab Initio. Ahora, la solución es una parte muy importante de la canalización del procesamiento de operaciones de compra-venta. La implementación se conecta al bus de compra-venta en tiempo real, y procesa transacciones a una velocidad de más de 500 000 mensajes por segundo.
  • Uno de los más grandes comercios al por mayor del mundo recibe, en tiempo real, datos de cartera de mercado desde las cajas registradoras de miles de tiendas. Se facilita así el control de inventario y la detección de fraudes.
  • Una de las mayores compañías telefónicas del mundo procesa información de detalles de llamadas para poder aplicar la tarifa correcta a cada llamada, simplificando el seguimiento del uso de los datos y el monitoreo de la red. A diario, se procesan miles de millones de registros de detalles de llamadas, así como millones de consultas de uso.
  • Uno de los mayores fabricantes de chips del mundo extrae información en tiempo real acerca de la calidad de sus productos desde la misma línea de fabricación. El objetivo es incrementar la productividad.
  • Una de las mayores redes de tarjetas de crédito del mundo utiliza Ab Initio como su backbone de datos, procesando y pasando todas las transacciones a sistemas de servidor por lotes y en tiempo real. Con la ayuda de Ab Initio, la red acumula un petabyte de datos de transacciones al año en un sistema de retención de datos. Además, se logra dar soporte a los centros de llamadas de atención al cliente para que el tiempo de respuesta sea inferior a un segundo.
  • Una de las mayores compañías de Internet del mundo procesa decenas de miles de millones de impresiones de publicidad al día, para poder así agilizar la facturación y mejorar la inserción de anuncios.
  • Una de las mayores compañías aseguradoras del mundo realiza muchas partes del procesamiento de sus reclamaciones con Ab Initio. El sistema de reaseguramiento y de procesamiento de tratados de la compañía contiene muchas decenas de miles de reglas, todas ellas implementadas ahora con nuestro software.
  • Una de las mayores empresas de mensajería del mundo genera todas sus facturas y computa las compensaciones para el personal de ventas utilizando aplicaciones de Ab Initio.
  • Uno de los mayores bancos del mundo consolida la información acerca de sus clientes (y desde todas las líneas del negocio) en un almacén de datos enorme armado con el software de Ab Initio. La misma compañía utiliza Ab Initio para personalizar y procesar el tráfico de transacciones SWIFT entre sus filiales internacionales.

Es muy posible que usted se pregunte qué es lo que lleva a todas estas empresas de primer nivel a elegir a Ab Initio. Nuestra empresa se distingue por haber logrado una combinación de prestaciones única en la industria del software. La tecnología de Ab Initio no sólo es intuitiva y fácil de utilizar, sino que resulta además compatible con la más compleja lógica de aplicaciones. Es, al mismo tiempo, capaz de manejar grandes volúmenes de datos. Y todo lo anterior, lo consigue con un alto rendimiento y una robustez notable.

Los ejemplos referidos más arriba dan cuenta de distintas implementaciones realizadas por clientes de Ab Initio (implementaciones, por cierto, que tienden a ser muy amplias). Satisfacer requisitos tan dispares obliga a poner en juego un sinfín de capacidades. Destacaremos algunas:

  • la capacidad de expresar gráficamente y con facilidad grandes cantidades de una lógica compleja;
  • conectividad prácticamente plena; una amplia gama de bases de datos, sistemas de colas, archivos planos, sistemas ERP, protocolos de mensajes estándar y más;
  • soporte nativo para estructuras de datos complejas; cualquier clase de datos desde cualquier origen; jerárquicos (XML y heredados), internacionales, objetos grandes, longitud variable, datos en formato bit-packed y muchos más;
  • soporte para una amplia gama de sistemas operativos (Unix, Linux, Windows, mainframe) y procesamiento distribuido en todas estas plataformas;
  • arquitectura abierta para la integración rápida con aplicaciones, datos y entornos heredados y de terceros;
  • alta eficacia y alta escalabilidad, junto con la capacidad de habilitar una computación similar a la computación en “nube” en redes de servidores;
  • procesamiento por lotes y en tiempo real de alto rendimiento (servicios web y arquitecturas orientadas a servicios (SOA), así como la transmisión por secuencias);
  • alto grado de reutilización de fragmentos grandes y pequeños de aplicaciones, incluidas las reglas de negocio.
  • alta resistencia frente a problemas con los datos y los fallos en el sistema; control de usuario fuerte frente a la respuesta de error;
  • capacidades de gestión exhaustivas; soporte para el ciclo de vida de desarrollo de software, incluido el control de versiones y la promoción de versiones; programación, monitoreo y avisos de ejecución; análisis de aplicaciones y mucho más.

La única forma de satisfacer los requisitos anteriores consiste en diseñar, desde el principio, una arquitectura que pueda cumplirlos. Y esto es así porque, una vez que se ha establecido una arquitectura, resulta prácticamente imposible añadirle nuevas capacidades fundamentales. El Co>Operating System fue diseñado desde el primer momento para que incluyese todas las capacidades mencionadas. Es una tecnología robusta y comprobada que se utiliza con éxito para una gama muy amplia de complejas aplicaciones de procesamiento de datos.

¿Qué es una aplicación de Ab Initio®?

El núcleo de una aplicación de Ab Initio es un grafo de flujo de datos (o un “grafo”, según la expresión abreviada). Un grafo consta de componentes que se conectan mediante “flujos” de datos.

Pongamos un ejemplo. El grafo siguiente es una aplicación sencilla que, primero, lee cada registro desde un archivo plano donde se contienen transacciones de clientes. La aplicación reformatea luego los datos (aplicándoles reglas) antes de ordenarlos. Seguidamente, la aplicación agrupa (o agrega) los datos. A continuación, los resultados de este procesamiento se escriben en una tabla de una base de datos, como Oracle.

Gracias al uso de componentes altamente configurables, el Co>Operating System de Ab Initio proporciona los bloques funcionales fundamentales para el procesamiento de datos empresariales. A saber:

  • transformaciones de datos;
  • selección/filtrado;
  • desduplicación;
  • unión/fusión;
  • normalización/desnormalización;
  • compresión/descompresión;
  • agregación/escaneado;
  • ordenación;
  • generación y validación de datos;
  • ...y muchos más.

Además, el Co>Operating System se distribuye con una surtida biblioteca de componentes integrados que permite procesar prácticamente todo tipo de origen o de destino de datos. Esta biblioteca incluye componentes para:

  • conectar con cualquier clase de archivo plano en Unix, Windows y mainframes;
  • conectar con todas las bases de datos comunes y algunas menos comunes (Oracle, DB2, Teradata, SQL Server, Netezza, Greenplum, mainframe DB2, IMS, IDMS, Adabas, ...);
  • conectar con todas las infraestructuras de colas de mensajes estándar (IBM MQ, JMS, Microsoft MQ);
  • conectar con infraestructuras de servicios web (WebSphere, WebLogic, IIS, Apache/Tomcat, ...);
  • conectar con muchos productos de terceros (SAP, Siebel, SAS, PeopleSoft, Salesforce.com, ...);
  • análisis y manipulación de estructuras de datos jerárquicas (XML, ASN.1, Cobol, ...);
  • análisis, manipulación y generación de formatos de datos específicos a un dominio (Swift, FIX, EDIFACT, ...);
  • enrutamiento de mensajes con base en contenido;
  • conectividad de metadatos con una amplia gama de definiciones de datos y productos de inteligencia empresarial (ERWin, ERStudio, Microstrategy, Business Objects, Cognos, ...).

Las aplicaciones pequeñas pueden tener entre tres y cinco componentes. Las aplicaciones grandes pueden tener hasta un centenar de componentes. Las aplicaciones muy grandes pueden tener muchos miles de componentes. Las aplicaciones también pueden constar de muchos grafos, cada uno de los cuales puede tener a su vez muchos componentes.

A lo largo del espectro que va desde las aplicaciones más pequeñas hasta las mayores, las aplicaciones de Ab Initio explotan reglas y componentes reutilizables, habilitando una respuesta rápida a necesidades empresariales cambiantes.

Lógica empresarial especificada de una forma completamente gráfica

Por debajo del nivel de componentes, el Co>Operating System puede aplicar prácticamente cualquier tipo de regla y de lógica especificadas por el usuario a cualquier tipo de datos. Y esas reglas se especifican de una manera gráfica. Comparada con otras tecnologías, el Co>Operating System representa un salto importante. En la medida en que estas tecnologías proporcionan una especificación gráfica de las reglas, sólo se aplican a reglas sencillas. Cuando las reglas se vuelven complejas, el usuario se enfrenta a obstáculos insuperables. Al final, el usuario con frecuencia tiene que abandonar la tecnología por otra más compleja, y en su lugar utilizar métodos de programación tradicionales (Java, C++, scripts, procedimientos almacenados, Perl, ...).

Cuando los usuarios tienen acceso al Co>Operating System, se dan cuenta de que es más fácil especificar una lógica compleja desde dentro del Co>Operating System que desde fuera. Esto entraña implicaciones formidables para la productividad, la facilidad de uso y la transparencia. De una parte, especificar reglas en un entorno gráfico es más sencillo y más rápido. Y de otra, resulta más simple para los empleados de negocios comprender esas reglas.

En el Co>Operating System, el usuario especifica reglas utilizando el Lenguaje de manipulación de datos (DML) de Ab Initio. Estas reglas se incorporan en los componentes de “transformación”, que son los bloques funcionales básicos para procesar datos. Existen componentes de transformación para asignar una clase de estructura de registros a otra, para agregar datos, para filtrar datos, para normalizar y desnormalizar estructuras, o para unir varias secuencias de registros, entre otras situaciones. Cada uno de estos componentes puede aplicar reglas (especificadas en DML) a los registros a medida que éstos se procesan.

La captura de pantalla siguiente ilustra una regla sencilla que computa la salida de un componente de asignación. A la izquierda aparecen los campos que entran en el componente; a la derecha, los campos que salen de los componentes; y en el medio, las reglas.

Las reglas individuales se pueden armar con el “Editor de expresiones”, que mostramos a continuación. Las expresiones pueden ser arbitrariamente largas y complejas, y el DML incluye una biblioteca bien surtida de operadores y funciones integradas.

Ab Initio es también compatible con un conjunto alternativo de interfaces de usuario a través de las cuales se especifican las reglas de negocio. Estas interfaces han sido pensadas para que puedan ser usadas por personas con una capacitación técnica inferior: a menudo, analistas de negocios y expertos en materias muy concretas. Son usuarios que utilizan una terminología propia del ámbito de los negocios, en lugar de una terminología técnica, y que organizan las reglas en un formato semejante a una hoja de cálculo:

Obtenga más información acerca del Business Rules Environment.

El Co>Operating System procesa nativamente cualquier tipo de datos

Con Ab Initio, los datos son exactamente lo que el Co>Operating System o el usuario quieran que sean. Y esto es posible gracias a que el Co>Operating System no necesita convertir los datos a un conjunto determinado y limitado de formatos integrados. En su lugar, el Co>Operating System procesa los datos en su formato nativo (y los procesa, además, en cualquiera de los sistemas operativos compatibles). El Co>Operating System, al igual que el resto de los componentes de Ab Initio, puede procesar nativamente datos del mainframe en servidores Unix y Windows, XML en mainframes, estructuras jerárquicas y bit-packed complejas, datos internacionales con transcodificación automática, y así sucesivamente. A partir de los mismos datos, el Co>Operating System generará idénticos resultados, independientemente de dónde se esté ejecutando la aplicación.

Las aplicaciones pueden leer y escribir información desde un conjunto heterogéneo de sistemas, mientras que los datos pueden tener formatos muy diferentes en diferentes puntos de la aplicación. El siguiente ejemplo muestra una aplicación que lee datos del mainframe desde un archivo plano, lee datos XML desde una cola de MQ, procesa esos datos con diferentes formatos intermedios y da salida a los resultados en un archivo plano utilizando un conjunto de códigos internacional.

El Co>Operating System sabe cómo obtener formatos de datos cualquiera sea el lugar donde estén almacenados: catálogos de bases de datos, productos de definición de esquemas, Copybooks de Cobol, DTD o XSD de XML, WSDL, hojas de cálculo o sistemas de formatos de datos internos.

El formato de registros para el flujo intermedio marcado como “ASCII hierarchical” en el ejemplo anterior tendría este aspecto:

Por último, el Co>Operating System y sus componentes saben cómo convertir automáticamente formatos cuando sea necesario. Por ejemplo, si los datos EBCDIC y packed decimal se presentan a un componente que escribe en una base de datos de Oracle, el componente convertirá automáticamente los datos en ASCII y decimales si las columnas tenían esos formatos en la base de datos.

Rendimiento y escalabilidad

El Co>Operating System fue diseñado de abajo a arriba para lograr un rendimiento y una escalabilidad máximos. Cada aspecto del Co>Operating System ha sido optimizado para obtener un rendimiento máximo de su hardware. Y no se necesita recurrir a la tecnología de computación en la “nube”, porque el Co>Operating System distribuye de forma natural el procesamiento entre las granjas de servidores.

El Co>Operating System suele ser, como mínimo, cuatro o cinco veces más rápido que la siguiente tecnología más rápida. Esto incluye programas codificados manualmente en Java y en C++. De hecho, muy pocos programadores pueden escribir un programa que se ejecute tan rápido como la versión de Ab Initio. Pero la dificultad es aún mayor, porque los pocos programadores capaces de hacerlo necesitarán invertir semanas codificando algo que, con Ab Initio, se logra en unos pocos días. Semejante situación es poco probable, en cualquier caso, porque los buenos programadores no se dedican exclusivamente a programar durante mucho tiempo. Enseguida se los transfiere a diseño, arquitectura o gestión de proyectos.

¿Cómo consigue Ab Initio una escalabilidad y un rendimiento tan extraordinarios? ¿Cuál es su secreto? La receta exitosa la forman muchos ingredientes, pero los más decisivos son su arquitectura y una atención obsesiva por los detalles. La arquitectura del Co>Operating System fue diseñada “a partir de primeros principios” para habilitar una computación escalable.

La arquitectura del Co>Operating System es conocida por ser una arquitectura que no comparte nada (“shared-nothing”). Como el Co>Operating System no requiere que las CPU compartan nada, estas CPU se pueden ejecutar de una manera completamente independiente entre sí. Ello permite que una única aplicación abarque tantas CPU en tantos servidores como se quiera. El Co>Operating System tiene capacidades para distribuir la carga de trabajo uniformemente entre muchas CPU, con lo que se logra que la mayoría de las aplicaciones alcancen una escalabilidad lineal. Esto significa que, al doblar el número de CPU, también se duplica el rendimiento. Diez veces más CPU se traduce en diez veces más rendimiento. El Co>Operating System combina el paralelismo de datos y el paralelismo de flujo para crear el número máximo de oportunidades para ejecutar simultáneamente fragmentos de una aplicación.

El ejemplo sencillo que se muestra a continuación sirve para ver cómo una aplicación podría particionar los datos de manera que el componente Score se ejecute en paralelo en muchas CPU (y servidores). El componente Partition by Round-robin divide los datos de clientes en secuencias de datos iguales, como alguien que reparte las cartas de una baraja de naipes. Luego, el Co>Operating System ejecuta varias instancias del componente Score, con cada instancia trabajando con una secuencia de datos. A medida que se da salida a cada registro desde cada instancia del programa Score, el componente Interleave vuelve a fusionar las secuencias antes de escribir el resultado en el archivo de salida. Es así de fácil.

Las arquitecturas “shared-nothing” funcionan maravillosamente mientras no se produzcan embotellamientos. Un simple embotellamiento las hará fracasar. Aquí es donde la atención a los detalles cobra importancia. Para que nunca se convierta en un obstáculo, cualquier parte del sistema capaz de provocar un embotellamiento en serie debe estar diseñada e implementada cuidadosamente. Los algoritmos de todos los componentes deben funcionar de manera óptima en muchos escenarios diferentes. La comunicación y el transporte de datos entre particiones y componentes debe utilizar los canales más eficaces. Sólo cuando se ha prestado atención a todos estos detalles, el sistema será escalable.

Otro detalle de suma importancia es la ejecución de las reglas de negocio. Cuando el sistema está bien diseñado, es aquí donde se consume la mayoría del tiempo de CPU. El motor de transformaciones del Co>Operating System es la instancia que ejecuta las reglas de negocio. Este motor tiene un diseño especial llamado un “compilador just-in-time”. El concepto alude al hecho de que las reglas de negocio son compiladas por el Co>Operating System cuando está finalmente disponible toda la información acerca de lo que se supone que deben hacer. Es decir, en el último momento posible. El aspecto “just-in-time” aporta una flexibilidad enorme. A su vez, el “compilador” está altamente optimizado para ejecutar una lógica de negocios tradicional con el máximo rendimiento. Ésta es la razón por la que es difícil para un programador que utiliza tecnologías tradicionales el poder competir con el Co>Operating System.

El modelo de procesamiento del Co>Operating System

El Co>Operating System es un sistema de procesamiento peer-to-peer (de igual a igual) distribuido. Debe estar instalado en todos los servidores que formarán parte de la ejecución de una aplicación. Es posible que cada uno de estos servidores ejecute un sistema operativo diferente (Unix, Linux y zLinux, Windows, o z/OS).

Así es como el Co>Operating System administra un conjunto distribuido de procesos en una red de servidores:

Funcionamiento del Co>Operating System:
1.
El Co>Operating System se inicia en el servidor "maestro", que lee definiciones de aplicaciones, formatos de datos, reglas lógicas, parámetros,...
2.
El Co>Operating System inicia "agentes" en otros servidores.
3.
El proceso del servidor maestro notifica a cada agente qué componentes se deben ejecutar en ese servidor, junto con toda la información que necesitan conocer los componentes para realizar su trabajo.
4.
Los agentes inician los componentes y les notifican las reglas, los formatos de registros, los parámetros, etc.
5.
Los componentes conectan los flujos de datos y comienzan a procesar los datos mientras los agentes monitorean el procesamiento.

1. El Co>Operating System se inicia en el servidor "maestro" que lee definiciones de aplicaciones, formatos de datos, reglas lógicas, parámetros,...

2. El Co>Operating System inicia "agentes" en otros servidores.

3. El proceso maestro informa a cada agente de los componentes que se van a ejecutar en ese servidor, y suministra todo lo que necesitan los componentes para completar su trabajo.

4. Los agentes inician componentes y les notifican las reglas, los formatos de registros, los parámetros, etc.

5. Los componentes conectan los flujos de datos y empiezan a procesar los datos. Los agentes monitorean el procesamiento.

Como se ve en estos diagramas, una aplicación de Ab Initio puede ejecutarse dentro de un único servidor o en una red de servidores. La definición de la aplicación, el diagrama gráfico especificado por el desarrollador, es la misma en ambos casos. Para ejecutar una aplicación en un conjunto diferente de servidores basta con cambiar la especificación de dónde se ejecuta el componente; la aplicación en sí no cambia. Por tanto, y sin hacer modificaciones, una aplicación alojada en mainframes se puede “re-alojar” en un servidor Unix, o una aplicación alojada en un servidor único en una granja de servidores, por poner dos ejemplos distintos.

El Co>Operating System se ejecuta indistintamente en Unix, Windows, Linux y zLinux, y z/OS. Además, una aplicación única se puede ejecutar en cualquier combinación de estas plataformas. Cada componente de una aplicación de Ab Initio se puede ejecutar en cualquier plataforma en la que se haya instalado el Co>Operating System (a excepción de unos pocos componentes específicos a una plataforma, como el acceso de VSAM en los equipos mainframe). El Co>Operating System se encarga de la tarea compleja de mover datos entre los equipos, por lo que proporciona un software intermedio sin fisuras y con capacidad de procesamiento. Por otro lado, la asignación de componentes a equipos de destino se puede cambiar antes de ejecutar una aplicación.

Cualquier componente o grupo de componentes puede ser asignado a un recurso de equipos diferente:

Por lotes, en tiempo real, servicios web: el Co>Operating System lo hace todo

Las necesidades que impone armar y operar aplicaciones por lotes y en tiempo real son, por lo común, muy diferentes. Como lo son también sus tecnologías. Todo lo contrario de lo que sucede con el Co>Operating System, que dispone de una arquitectura única que se aplica por igual a los sistemas por lotes, en tiempo real y de servicios web (SOA). En vez de necesitar una multitud de tecnologías y diferentes equipos de desarrollo para cada sistema (con potencialmente varias implementaciones de la misma lógica empresarial), el usuario del Co>Operating System puede hacer lo mismo con mucho menos. Apoyado en el Continuous>Flows, el Co>Operating System hace posible reutilizar en diferentes sistemas una misma tecnología, un mismo equipo de desarrollo y una misma codificación de la lógica empresarial.

Con el Co>Operating System, que una aplicación se ejecute por lotes o en tiempo real depende de lo que la aplicación lee y escribe. A continuación, se muestra una misma aplicación ejecutada en distintos “escenarios”. Primero, como un sistema por lotes (conectado a archivos planos para las entradas y las salidas). Segundo, como un sistema de colas en tiempo real (MQ para las entradas y JMS para las salidas). Y por último, como un servicio web (obteniendo solicitudes de servicio desde un sistema externo y devolviendo los resultados a ese mismo sistema):

Una aplicación, muchos modos

1. Por lotes

2. Sistema de colas

3. Servicios web

Obtenga más información acerca de Continuous>Flows.

Integración con códigos heredados

Aunque el Graphical Development Environment y el Co>Operating System permiten armar y ejecutar aplicaciones de extremo a extremo, sucede a menudo que los usuarios tienen aplicaciones preexistentes o productos de software de terceros que funcionan bien y que no merece la pena volver a implementar. Ab Initio facilita la reutilización de esas aplicaciones preexistentes, tanto si están codificadas en C, C++, Cobol, Java, scripts de shell, o en cualquier otra tecnología. De hecho, el Co>Operating System permite integrar esas aplicaciones en entornos para los que no fueron diseñadas originalmente.

Los códigos heredados se integran en las nuevas aplicaciones convertidos en componentes que se comportan exactamente igual que el resto de los componentes de Ab Initio. Para la mayoría de los códigos heredados, esto es fácil. Lo único que se necesita es una especificación para las entradas y las salidas del programa, junto con parámetros de línea de comandos. El ejemplo siguiente muestra cómo se puede tomar un programa de Cobol que lee y escribe archivos planos y conectarlo a una aplicación de Ab Initio. El código Cobol, junto con los Copybooks y el JCL, se convierte en un componente de Ab Initio. Luego, el componente se coloca en una aplicación de Ab Initio que comprende servidores Unix y un servidor mainframe. A partir de ahí, la aplicación se conecta a varios orígenes y destinos de datos (SAS y una base de datos). Por último, para mejorar el rendimiento, la carga de trabajo se particiona para que el código Cobol pueda tener varias instancias ejecutándose en paralelo.

Integración de Código Heredado
Los usuarios recopilan y añaden un rango
de datos relacionados con Cobol, como:
Ese componente se puede conectar
a cualquier elemento con el que se
pueda comunicar Ab Initio.
Ahora el mismo código Cobol forma parte de un sistema que abarca UNIX y MAINFRAME,
que está conectado a SAS y a un sistema RDBMS.
UNIX
MAINFRAME

Resistencia muy alta ante datos no válidos

Uno de los aspectos más difíciles del armado y el mantenimiento de sistemas reales tiene que ver con el procesamiento de datos inesperados o no válidos. Su aparición es algo que ocurre con frecuencia. Cuando reciben datos de ese tipo, la mayoría de las aplicaciones se comportan de forma errónea. Si hay suerte, simplemente se bloquean. Pero si no la hay, las aplicaciones pueden terminar haciendo algo extraño con los datos no válidos. Puede incluso ocurrir que nadie se dé cuenta de la anomalía hasta que los resultados no válidos hayan pasado a los sistemas que siguen en la cadena de procesamiento y los hayan contaminado. Como cabe imaginar, la limpieza de un desastre así toma tiempo y perjudica la productividad.

El Co>Operating System es, por definición, resistente a los datos no válidos. Es una tecnología que constantemente verifica que los datos satisfacen los criterios especificados por el usuario y por el sistema. Y si no lo hacen, no se permite que los datos sigan adelante sin ser antes transformados. Al mismo tiempo, para los desarrolladores resulta fácil armar en la aplicación un procedimiento automatizado de intervención y de notificación. Hay dos opciones. La intervención se puede diseñar para corregir datos erróneos y volver a alimentar el sistema con ellos. O se puede también diseñar para segregar todas las entidades de datos relacionadas, de forma que puedan ser procesados más tarde de una forma coherente.

A continuación se muestra un ejemplo de cómo un desarrollador arma una aplicación en Ab Initio que 1 captura datos con problemas; 2 ejecuta los datos con problemas a través de un conjunto de reglas de “limpieza”; 3 devuelve los datos limpios al procesamiento original; 4 secuestra los datos que no se pueden limpiar; y, por último, 5 genera un informe acerca de los datos con problemas que 6 se envía mediante una cola de MQ.

Todos los componentes de Ab Initio que procesan datos de formas interesantes tienen puertos “Reject”, “Error” y “Log” opcionales. El puerto Reject recibe todos los datos con problemas; el puerto Error recibe un registro correspondiente que describe cada problema; y el puerto Log recibe información de depuración. Esto permite armar canalizaciones de procesamiento de datos extremadamente robustas.

Resistencia muy alta a los errores del sistema

Los servidores fallan. Las conexiones de red se pierden. Las bases de datos dejan de cargar… Cuantos más servidores participen en una aplicación, mayor será la probabilidad de que se produzca en el sistema algún tipo de error. Armar aplicaciones que se recuperen con confiabilidad de los errores, no es fácil. Aunque muchos desarrolladores piensan que son capaces de armarlas, la robustez de una arquitectura sólo se demuestra después de que ésta se ha recuperado de varios errores diferentes. Y superar esta curva de aprendizaje puede ser muy difícil.

El Co>Operating System fue diseñado desde el principio para recuperarse con confiabilidad de todos estos tipos de errores. Siempre y cuando el entorno haya sido configurado para que los datos valiosos no se pierdan, la capacidad de puntos de verificación/reiniciar del Co>Operating System permite reiniciar una aplicación en el punto en que se detuvo antes del error. La aplicación se reinicia, incluso, si la aplicación comprende varias redes, varios servidores y varias bases de datos (con independencia de si se ejecuta por lotes o en tiempo real). El Co>Operating System utiliza un mecanismo parecido a la confirmación en dos fases, con un rendimiento mucho más alto que el protocolo XA que es de uso estándar en la industria. En cualquier caso, el Co>Operating System es compatible con entornos que requieren XA (incluso en aquellas tecnologías de bases de datos y de colas de mensajes suministradas por otros proveedores).

El Co>Operating System impulsa la productividad con la reutilización

Para dar correcta solución a los problemas que enfrentan, las aplicaciones de Ab Initio pueden llegar a ser muy grandes y complejas. En general, la mayoría de los sistemas incluyen gran cantidad de fragmentos muy parecidos entre sí. Con las tecnologías de programación tradicionales, los desarrolladores suelen acabar creando muchas copias de estos fragmentos para luego modificar ligeramente cada una de ellas. Sin embargo, este remedio deriva muchas veces en una pesadilla desde el punto de vista del mantenimiento y de la productividad.

Gracias a su tecnología mucho más versátil, Ab Initio proporciona un buen número de mecanismos para incrementar radicalmente la reutilización de fragmentos de aplicaciones. Los fragmentos son almacenables en el Enterprise Meta>Environment (EME®) de Ab Initio, un repositorio centralizado. Desde allí, es posible reutilizarlos tanto dentro de una misma aplicación como en otras aplicaciones. Éstos son algunos ejemplos de los elementos que se pueden almacenar, gestionar y reutilizar centralmente:

  • Formatos de registros
  • Reglas de negocio y de lógica
  • Secciones de aplicaciones (las aplicaciones se llaman “grafos” y las secciones se llaman “subgrafos”)
  • Orquestaciones de aplicaciones (“planes” en Conduct>It de Ab Initio)

La capacidad de reutilización de Ab Initio es muy potente. Los fragmentos de aplicaciones reutilizados se pueden vincular a la versión centralizada de la que proceden; pudiendo rastrear, contemporáneamente, los cambios realizados. Además, estos fragmentos pueden ser compatibles con personalizaciones aplicadas localmente (sin dejar por ello de hacer un seguimiento de la versión centralizada).

A continuación se muestra un ejemplo de uno de estos módulos de aplicaciones reutilizables: el subgrafo. Un subgrafo puede contener los componentes de una subsección de una aplicación (grafo). El tamaño o la complejidad posibles de los subgrafos son ilimitadas. Además, los subgrafos pueden estar anidados. Los subgrafos se comportan de todas las formas en que se comportan los componentes convencionales, y se pueden guardar en una biblioteca para ser reutilizados en muchas aplicaciones.

Este subgrafo corresponde a la parte de control de errores de la aplicación que se describió anteriormente:

Observe que los componentes de este subgrafo no se conectan en forma explícita a ningún componente de entrada o de salida. En su lugar, están conectados a los puertos de entrada y de salida del subgrafo “Standard Error Handling Process”.

A continuación, se muestra la misma aplicación que antes, armada ahora con el nuevo subgrafo reutilizable para control de errores (los subgrafos se identifican visualmente en el GDE mediante la línea de borde extra que los rodea):

Conclusión

El Co>Operating System es el software básico sobre el que se construye toda la arquitectura de Ab Initio. Así, los conceptos arquitectónicos clave de Ab Initio se manifiestan en el Co>Operating System. Y puesto que todas las tecnologías de Ab Initio incorporan de una forma u otra el Co>Operating System, esos mismos conceptos quedan también incorporados de manera coherente y sin fisuras.

Los resultados de esta arquitectura son:

  • Se pueden armar sistemas de aplicaciones completos en un entorno gráfico sin tener que recurrir a la codificación tradicional.
  • El personal de desarrollo y mantenimiento técnico es mucho más productivo trabajando con un paradigma gráfico que con la codificación tradicional.
  • El personal técnico logra mejorar el tiempo de respuesta a las necesidades cambiantes del negocio.
  • Las aplicaciones son mucho más transparentes (y por ende, más fáciles de entender) para los usuarios y los analistas de negocio.
  • Los sistemas de aplicaciones son mucho más robustos en todos los sentidos. Tienen una escalabilidad ilimitada. Son portátiles entre muchas plataformas. Pueden procesar cualquier clase de datos complejos. Pueden implementar reglas de negocio muy complejas. Pueden tolerar datos no válidos y errores del sistema… Y así sucesivamente.
  • Las aplicaciones pueden volver a utilizar la lógica empresarial en aplicaciones por lotes, en tiempo real y de servicios web.

Estos logros, entre otros muchos, son posibles gracias a que el Co>Operating System ha sido diseñado, desde el principio, con una arquitectura única.

English
Français
Idioma:
Español
Deutsch
简体中文
日本語