1.1 Los fundamentos
El problema
A transacción de negocios es una interacción en el mundo real, generalmente entre una empresa y una persona u otra empresa, donde se intercambia algo. Por ejemplo, podría implicar el intercambio de dinero, productos, información o solicitudes de servicio. Por lo general, se requiere cierta contabilidad para registrar lo que sucedió. A menudo, esta contabilidad se realiza mediante una computadora, para una mejor escalabilidad, confiabilidad y costo. Las comunicaciones entre las partes involucradas en la transacción comercial a menudo se realizan a través de una red informática, como Internet. Este es procesamiento de transacciones (TP) – el procesamiento de transacciones comerciales por computadoras conectadas por redes de computadoras. Existen muchos requisitos en el procesamiento de transacciones por computadora, como los siguientes:
- Una transacción comercial requiere la ejecución de múltiples operaciones. Por ejemplo, considere la compra de un artículo de un catálogo en línea. Una operación registra el pago y otra operación registra el compromiso de enviar el artículo al cliente. Es fácil imaginar un programa simple que pudiera hacer este trabajo. Sin embargo, cuando la escalabilidad, la confiabilidad y el costo entran en escena, las cosas pueden complicarse rápidamente.
- El volumen de transacciones y el tamaño de la base de datos añaden complejidad y socavan la eficiencia. Todos hemos tenido la experiencia de retrasarnos porque un vendedor está esperando que responda una terminal de caja registradora o porque se tarda demasiado en descargar una página web. Sin embargo, las empresas quieren atender a sus clientes de forma rápida y con el menor coste.
- Para escalar un sistema para un alto rendimiento, las transacciones deben ejecutarse al mismo tiempo. Las transacciones concurrentes incontroladas pueden generar respuestas incorrectas. En un concierto de rock, cuando decenas de operaciones compiten por reservar los mismos asientos restantes, es importante que solo se asigne un cliente a cada asiento. La equidad también es un problema. Por ejemplo, Amazon.com dedicó un esfuerzo considerable a garantizar que cuando sus primeros mil Xbox salieran a la venta, cada uno de los 50.000 clientes que estaban compitiendo por una Xbox tuviera una oportunidad justa de conseguir una.
- Si se ejecuta una transacción, debe ejecutarse en su totalidad. En una venta al por menor, el artículo debe cambiarse por dinero o no venderse en absoluto. Cuando ocurren fallas, como sucede inevitablemente, es importante evitar el trabajo parcialmente completado, como aceptar el pago y no enviar el artículo, o viceversa. Esto haría que el cliente o la empresa se sintieran muy descontentos.
- Cada transacción debe devolver un reconocimiento de que se ejecutó o un reconocimiento negativo de que no se ejecutó. Esos reconocimientos son importantes. Si no llega ningún acuse de recibo, el usuario no sabe si volver a enviar una solicitud para ejecutar la transacción nuevamente.
- El sistema debe ser escalable de forma incremental. Cuando una empresa crece, debe aumentar su capacidad para ejecutar transacciones, preferiblemente haciendo una compra incremental, no reemplazando su máquina actual por una más grande o, peor aún, reconstruyendo la aplicación para manejar la mayor carga de trabajo.
- Cuando un sitio web de comercio electrónico (e-commerce) deja de funcionar, la empresa minorista está cerrada. Los sistemas que ejecutan transacciones son a menudo «de misión crítica» para la actividad comercial que respaldan. Casi nunca deberían estar caídos.
- Los registros de transacciones, una vez completados, deben ser permanentes y autorizados. Este suele ser un requisito legal, como en las transacciones financieras. Las transacciones nunca deben perderse.
- El sistema debe poder funcionar bien en un entorno distribuido geográficamente. A menudo, esto implica que el sistema en sí está distribuido, con máquinas en múltiples ubicaciones. A veces, esto se debe a un requisito legal de que el sistema debe operar en el país donde se realiza el negocio. Otras veces, el procesamiento distribuido se usa para cumplir con los requisitos técnicos, como la eficiencia, la escalabilidad incremental y la resistencia a fallas (usando sistemas de respaldo).
- El sistema debe poder personalizar la experiencia en línea de cada usuario en función de los patrones de uso anteriores. Para un cliente minorista, debe identificar los descuentos y anuncios relevantes y ofrecer productos personalizados para ese usuario.
- El sistema debe poder ampliarse de manera predecible y económica para manejar cargas de Internet de millones de usuarios potenciales. No hay forma de controlar cuántos usuarios inician sesión al mismo tiempo o qué transacciones pueden elegir acceder.
- El sistema debe ser fácil de administrar. De lo contrario, el personal de gestión del sistema necesario para operar un sistema a gran escala puede volverse demasiado grande y, por lo tanto, demasiado costoso. La administración compleja del sistema también aumenta la posibilidad de errores y, por lo tanto, el tiempo de inactividad, lo que a su vez genera costos humanos, como un mayor estrés y trabajo nocturno no programado.
En resumen, los sistemas de procesamiento de transacciones deben manejar grandes volúmenes de manera eficiente, evitar errores debido a la operación concurrente, evitar producir resultados parciales, crecer gradualmente, evitar el tiempo de inactividad, nunca perder resultados, ofrecer distribución geográfica, ser personalizables, escalar con elegancia y ser fáciles de administrar. Es una tarea difícil. Este libro describe cómo se hace. Explica los principios subyacentes de la automatización de transacciones comerciales, tanto para negocios tradicionales como a través de Internet; explora las complejidades de las tecnologías fundamentales, como la tala y el bloqueo; y analiza los productos de middleware transaccional comerciales de la actualidad que brindan las características necesarias para crear aplicaciones de TP.
¿Qué es una transacción?
Un transacción en línea es la ejecución de un programa que realiza una función administrativa accediendo a una base de datos compartida, generalmente en nombre de un usuario en línea. Como muchas definiciones de sistemas, esta es impresionista y no pretende ser exacta en todos sus detalles. Un detalle es importante: una transacción es siempre la ejecución de un programa. El programa contiene los pasos involucrados en la transacción comercial, por ejemplo, registrar la venta de un libro y reservar el artículo del inventario.
Usaremos las palabras programa de transacciones para significar el programa cuya ejecución es la transacción. A veces, la palabra «transacción» se usa para describir el mensaje enviado a un sistema informático para solicitar la ejecución de una transacción, pero usaremos diferentes palabras para eso: a mensaje de solicitud. Entonces, una transacción siempre significa la ejecución de un programa.
Decimos que una transacción cumple una función administrativa, aunque no siempre es así. Por ejemplo, podría ser una función en tiempo real, como hacer una llamada en un sistema de conmutación telefónica o controlar una máquina herramienta en un sistema de control de procesos de fábrica. Pero generalmente hay dinero involucrado, como vender un boleto o transferir dinero de una cuenta a otra.
La mayoría de los programas de transacciones acceden a datos compartidos, pero no todos lo hacen. Algunos realizan una función de comunicación pura, como reenviar un mensaje de un sistema a otro. Algunos realizan una función de administración del sistema, como reiniciar un dispositivo. Una aplicación en la que ningún programa accede a datos compartidos no se considera un verdadero procesamiento de transacciones, porque dicha aplicación no requiere muchos de los mecanismos especiales que ofrece un sistema de TP.
Por lo general, hay un usuario en línea, como un usuario doméstico en un navegador web o un agente de venta de boletos en un dispositivo de venta de boletos. Pero algunos sistemas no tienen ningún usuario involucrado, como un sistema que graba mensajes de un satélite. Algunos programas de transacciones operan desconectado , o en modo por lotes, lo que significa que los múltiples pasos involucrados pueden tardar más de lo que un usuario puede esperar a que se devuelvan los resultados del programa, más de, digamos, diez segundos. Por ejemplo, la mayor parte del trabajo para venderle un producto en línea ocurre después de haber ingresado su pedido: una persona o robot recibe su pedido, lo recoge de un estante, lo elimina del inventario, imprime una etiqueta de envío, lo empaqueta y se lo entrega a la empresa de transporte.
Aplicaciones de procesamiento de transacciones A aplicación de procesamiento de transacciones es una colección de programas de transacciones diseñados para realizar las funciones necesarias para automatizar una determinada actividad empresarial. La primera aplicación de procesamiento de transacciones en línea que recibió un uso generalizado fue un sistema de reserva de aerolíneas: el sistema SABRE se desarrolló a principios de la década de 1960 como una empresa conjunta entre IBM y American Airlines. SABRE fue uno de los mayores esfuerzos de sistemas informáticos realizados por nadie en ese momento, y todavía es un sistema TP muy grande. SABRE se escindió de American Airlines y ahora es administrada por una compañía separada, Sabre Holdings Corporation, que brinda servicios a más de 200 aerolíneas y miles de agencias de viajes, y que administra el sitio web de Travelocity. Puede manejar una gran cantidad de vuelos, permitir a los pasajeros reservar asientos y pedir comidas especiales con meses de anticipación, ofrecer bonificaciones para viajeros frecuentes y programar el mantenimiento de aeronaves y otras actividades operativas para las aerolíneas. Su rendimiento máximo ha superado los 20.000 mensajes por segundo.
Hoy en día, existen muchos otros tipos de aplicaciones de TP y constantemente surgen nuevas. Resumimos algunos de ellos en la Figura 1.1. A medida que disminuya el costo de ejecutar transacciones y administrar grandes bases de datos, valdrá la pena automatizar más tipos de funciones administrativas como aplicaciones de TP, tanto para reducir el costo de administración como para generar ingresos como un servicio a los clientes.
En sus primeros años, el mercado de aplicaciones de TP fue impulsado principalmente por grandes empresas que necesitaban respaldar funciones administrativas para un gran número de clientes. Estos sistemas a menudo involucran miles de terminales, docenas de unidades de disco y muchos procesadores grandes, y pueden ejecutar cientos de miles de transacciones por día. Los grandes sistemas de TP son cada vez más importantes debido a la popularidad de los servicios en línea en Internet. Sin embargo, con la reducción del tamaño de los sistemas también ha surgido la necesidad de pequeñas aplicaciones de TP, con solo unos pocos navegadores conectados a una pequeña máquina servidor, para manejar pedidos para una pequeña empresa de catálogos, inscripciones a cursos para una escuela o visitas de pacientes a una oficina dental. Todas estas aplicaciones, grandes y pequeñas, se basan en la misma estructura de sistema subyacente y abstracciones de software.
FIGURA 1.1 Aplicaciones de procesamiento de transacciones. El procesamiento de transacciones cubre la mayoría de los sectores de la economía.
Solicitud | Ejemplo de transacción |
Bancario | Retirar dinero de una cuenta |
Negociación de valores | Compra 100 acciones |
Seguro | Pagar una prima de seguro |
Control de inventario | Registrar el cumplimiento de un pedido |
Fabricación | Registrar un paso de un proceso de ensamblaje |
Punto de venta minorista | Grabar una venta |
Gobierno | Registrar un automóvil |
Las compras en línea | Realizar un pedido utilizando un catálogo en línea |
Transporte | Seguir un envio |
Telecomunicaciones | Conectar una llamada telefónica |
Mando y control militar | Dispara un misil |
Medios de comunicación | Otorgar permiso para descargar un video |
Los sistemas de TP también se ofrecen como servicios a otras empresas. Por ejemplo, Amazon.com aloja los escaparates web de otras empresas. Algunas aerolíneas desarrollan y operan servicios de reserva para otras aerolíneas. Algunos proveedores de aplicaciones empaquetadas ahora ofrecen su aplicación como un servicio que puede ser invocado por la aplicación de un tercero a través de Internet, lo que a su vez ayuda al tercero a ofrecer otros servicios de TP a sus clientes. Dados los gastos, la experiencia y la atención de la administración necesarios para construir y ejecutar un sistema de TP de alta calidad, es probable que esta tendencia hacia la subcontratación de aplicaciones de TP aumente.
Funciones principales de un programa de transacciones Un programa de transacciones generalmente hace tres cosas:
- Obtiene información de un navegador web u otro tipo de dispositivo, como un lector de código de barras o un sensor de robot.
- Realiza el trabajo real solicitado.
- Produce una respuesta y, posiblemente, la envía de vuelta al navegador o dispositivo que proporcionó la entrada.
Cada invocación del programa de transacciones da como resultado una unidad de trabajo independiente que se ejecuta exactamente una vez y produce resultados permanentes. En breve, tendremos más que decir sobre estas propiedades de un programa de transacciones.
La mayoría de las aplicaciones de TP incluyen algún código que no se ejecuta como una transacción. Este otro código se ejecuta como un programa ordinario, no necesariamente como una unidad de trabajo independiente que se ejecuta exactamente una vez y produce resultados permanentes. Usamos el término aplicación TP en este sentido más amplio. Incluye programas de transacciones, programas que recopilan información para transacciones y funciones de mantenimiento, como eliminar registros de inventario obsoletos, reconfigurar el sistema en tiempo de ejecución y actualizar las tablas de validación utilizadas para la verificación de errores.