lunes, 22 de octubre de 2007

SOA para todos

El primer paso antes de pasar a explicar como SOA puede ser entendido y afectar al organigrama de la empresa, es conveniente empezar por definir ciertos conceptos básicos.

¿Qué es SOA?
Existen multitud de definiciones, prácticamente cada fabricante de software, autoridad académica o publicación especializada tiene la suya. Proponemos la siguiente definición integradora:
Arquitectura orientada a servicios, SOA, es una propuesta de arquitectura (o estructura base) para la comunicación entre servicios (o unidades de trabajo) que permite el diseño y construcción de soluciones de TI donde los procesos de negocio se organizan y colaboran de manera más eficiente y eficaz.
Como se puede observar en el nombre y la definición están incluidos los conceptos de arquitectura y servicio. Entendemos por arquitectura la estructura de un sistema, sus componentes, propiedades y relaciones entre los mismos. Aunque aplicado de manera intuitiva, se trata de un concepto relativamente moderno. Algunos ejemplos de arquitecturas son: cliente servidor, tres capas, punto a punto, computación distribuida, etc. Por otro lado, un servicio es una representación lógica de una actividad del negocio repetible (comprobar crédito, validar reserva de billete, etc.) que acepta una serie de llamadas y devuelve unos resultados mediante unos protocolos previamente definidos. Tanto para la arquitectura como para los servicios, la tecnología concreta que permite su realización queda fuera de la definición.

¿Por qué SOA?
Conviene citar la excelente respuesta a esta pregunta que da IBM [1]:

"Lo que hace la arquitectura orientada a servicios es crear un lenguaje para que los negocios y la IT hablen entre si. Y ese proceso es un proceso de negocios. Por lo tanto el analista de negocios observa el proceso, lo simula y entonces, uniendo las diferencias - a través del software o de la IT - obtiene el código que luego convierte en un idioma que la persona de IT pueda comprender.
Esto codifica el rol y el vínculo entre los negocios y la IT. Eleva ambos roles, en vez de realzar uno o minimizar otro. De esta manera los pone al mismo nivel y le da la posibilidad de comunicarse con el otro. Lo protege del síndrome de reescribir, revisar, rehacer todo."

Sandy Carter. Vice President, Strategy for Channels and Marketing IBM
Normalmente los objetivos a corto plazo de TI y de negocio son diferentes [2]. Negocio normalmente quiere que TI sea más ágil sin tener que pagar más, y prefiere o necesita desarrollos rápidos para poder ofrecerlos a los clientes. TI necesita recursos para mantener aplicaciones heredadas en perfecto estado y desarrollar nuevas soluciones, y prefiere construir infraestructura que soluciones puntuales. SOA trata de conciliar las dos visiones.

¿Qué no es SOA?
Quizás una buena manera de comprender que es SOA es revisar que no es. SOA no es un producto, una tecnología especifica, un lenguaje de programación, un sistema operativo, una herramienta, un estándar o un paquete de software que se pueda comprar a un fabricante de TI.
SOA es en definitiva una manera de pensar, una manera de organizar la fusión de distintas tecnologías y estándares para lograr el objetivo de reducir la distancia entre negocio y TI.

Un ejemplo
En este ejemplo (utilizado por accenture, SAP [3] y algunas publicaciones) se puede observar un paralelismo entre la industria del automóvil y la de las soluciones software. Si observamos la evolución del diseño y construcción de automóviles a lo largo del tiempo podemos diferenciar tres tipos de estrategias.

Al principio los modelos eran diseñados uno a uno, y tenían procedimientos de fabricación exclusivos. Los productos estaban altamente diferenciados a cambio de costes elevados de diseño y fabricación. Esta fase puede asimilarse a la de producción de software a medida.

El siguiente paso en la industria fue el que los fabricantes acordaron vender el mismo coche bajo dos nombres diferentes. Las piezas eran comunes y estaban dirigidas a compradores similares. El compartir piezas permitió la reducción de costes, pero a costa de la diferenciación del producto. Este quizás es el momento actual para el software, en la que por ejemplo los ERP dan soluciones similares a todos los usuarios y, aunque permiten cierta personalización, el producto final es básicamente el mismo.

La industria del automóvil, más antigua que la del software, se encuentra en nuestros días aún más avanzada. En el modelo actual de plataformas los fabricantes son capaces de ofertar coches muy diferenciados, pero el interior (sistema de frenos, electrónica, etc. son los mismos). Si los componentes internos son de una cierta calidad y están bien ajustados, la calidad del producto final también se ajustará al estándar. Para SOA estos componentes estándar son los servicios, y se puede cambiar un servicio tal y como Volkswagen cambia el alternador usado en el Audi A3 el VW Passat. El concepto de plataforma ha proporcionado a los fabricantes de automóviles la capacidad de fabricar productos muy diferenciados, más rápidamente, a un coste reducido y manteniendo la calidad deseada. La propuesta de valor de SOA es análoga.

El puzzle SOA
Lo que trata de conectar la infraestructura basada en SOA que estamos proponiendo es una serie de usuarios (internos como ventas, o externos como clientes, B2B, socios, etc.) que acceden a los sistemas de información a través de una nueva capa que permite localizar y orquestar los servicios ofrecidos.

Por supuesto detrás de esta simplificación existe un océano de definiciones, conceptos, estrategias y tecnologías que se tratarán de ir ampliando en los siguientes puntos.

_________________________________

[1] IBM – Arquitectura Orientada a Servicios Simplificada

[2] Yogish Pai SOA Blueprint - Why SOA?

[3] SAP INFO - Cutting the Gordian Knot

No hay comentarios: