SOA para empezar

Alexander A. Ramírez M.

¿Será una necesidad o una moda?, ¿Será una necesidad creada por los consultores?, ¿Será una moda tecnológica?. Independientemente de las respuestas, en todas las empresas que me ha tocado trabajar o visitar, tienen como factor común la proliferación de aplicaciones verticales para atender distintos tipos de requerimientos. El mundo de hoy “todo conectado” y la proliferación de accesos vía internet, web o móvil requiere la integración de muchos de esos canales, antes aislados.

En particular, la Banca ha desarrollado múltiples canales como: redes de agencias, centro de atención telefónico, puntos de ventas, cajeros automáticos, redes de agencias comunitarias, banca por internet y más recientemente Banca Móvil. Cada uno de estos canales ofrece una interfaz hacia el usuario distintas, con distintas reglas de presentación de la información, de acceso a la información, de seguridad, de operación, de transaccionalidad, etc. Sin embargo los componentes que ejecutan las operaciones de forma transaccional casi siempre son los mismos. A saber, o es un débito o un crédito, un pago o una comisión, etc. Sin caer en detalles, podemos diferenciar dos familias de reglas: las relativas a la forma como se interactua con el cliente y sus capacidades o limitaciones, las reglas del negocio bancario, débitos, créditos, comisiones, conciliación, cortes, etc.

Un banco normalmente cuenta con sistemas verticales por canal con un nivel de integración muy bajo entre canales, por ejemplo: No se puede activar la banca por internet a través de un cajero, El cajero no es un navedador que me permite hacer lo mismo que desde internet, desde la Banca por internet no era posible generar una orden de retiro a través de un cajero, desde el teléfono celular no se cuenta con un servicio para consultar las agencias, cajeros o puntos de ventas cercanos, hay claves y chequeos de seguridad distintos por canal, no se puede activar la banca por internet sin tarjetas, no se puede consultar el estado de los requerimientos al banco desde cualquier canal, no se puede mostrar publicidad personalizada independiente del canal, etc. La verdad es que la Banca justo ahora está realizando esfuerzos importantes para eliminar las diferencias entre los diversos canales de atención al cliente y sin embargo esto no ocurre de una manera ágil, sino mas bien tortuosa y lenta.

Aqui es donde comienza a tener sentido definir una estrategia para implementar SOA razonablemente. SOA significa Arquitectura Orientada a Servicios, en el fondo es Arquitectura Tecnológica basada en la exposición de servicios. En términos simples los sistemas se especializan en una función que exponen a través de mecanismos como Servicios Web tipo SOAP, REST o simplemente Web/XML. La idea es que la forma como se exponen los servicios sea estandar y a partir de la estandarización simplificar la integración de las aplicaciones y a la postre es posible la integración de los datos, para producir información y a partir de ahí inteligencia (en el futuro hablaremos de esto que a veces le llaman CRM).

SOA pretende resolver el problema de integración de M x N aplicaciones. Parte de esta estrategia tiene que ver con componentes especializados, su definición e implementación, delimitando objetivos y funciones claras. ¿Quien ofrece que y cómo?.

Ahora, ¿Cómo se ofrece un servicio?. En este punto aparecen los Servicios Web (Web Services - WS). Un Servicio Web es una aplicación distribuida que expone procedimientos públicamente, cuya entrada y salida se apega a algún protocolo estandar que es independiente del lenguaje y de de la plataforma. La clave es la interoperabilidad, estos pueden ser invocados remotamente a través de la red por programas cliente escritos en lenguajes diferentes y corriendo en distintas plataformas.

SOA pretende implementar una plataforma que gerencie el acceso a los dintintos componentes y funciones mediante la administración, control, exposición y acceso a los Servicios Web provistos. Son una serie de estándares y prácticas para facilitar la integración entre las aplicaciones.

SOA define como se expone un servicio, genera un directorio, centraliza los protocolos estándares de entrada y salida y maneja políticas de acceso. Es algo así como el editor de las páginas amarillas. Define la forma como se colocan los anuncios, los dintintos tipos, el contenido, el orden así como su publicación final. Cualquiera que requiere de un servicio busca en las páginas amarillas y llama por teléfono, envía un email o accede a la página Web del proveedor.

El problema que debemos resolver los arquitectos de software es definir un camino de solución para un problema definiendo que se hace y cómo de acuerdo a los requerimientos. El reto es lidiar con todos los grados de libertad que el software ofrece y la tentación constante de resolver problemas por la vía rápida y no necesariamente más conveniente para el futuro.

Yo me pregunto ¿Por que no existe un modelo OSI para el Software? , la integración de las redes a nivel mundial es posible a través de la estandarización y definición de funciones representadas por capas. En el mundo del software hay de todo, es como el Diseño Urbano sin ordenanza. Cada lenguaje nuevo, sirve para hacer de todo, he visto sistemas de operación en JavaScript, ERPs programados en access (un amigo me lo comentó recientemente), muchas cosas se hacen sencilamente por que se puede. En fin, tal vez por eso siempre tendremos trabajo ya que algunos construimos aplicaciones y otros las reahacemos, claro con el último grito de la tecnología. :)

Sinceramente en el mundo de los sistemas hay muchas oportunidades para mejorar la forma como se construyen las aplicaciones, como se comunican, como se acceden los datos, cómo se modelan reglas, cómo se presenta la información, como se hacen seguras, como se distribuyen, como se actualizan, como escalan, como se integran, como se exponen, etc, etc, etc. Así que trabajo hay mucho.