La Arquitectura Orientada a Servicios (SOA – Service Oriented Architecture) se ha transformado probablemente en el concepto más nombrado en el área de las TI. Según los expertos, las principales empresas del mercado han comenzado a adoptarlo y se espera que en la próxima década la mayoría de las grandes compañías hayan integrado esta arquitectura.
SOA está constituida por tres partes: un proveedor, un intermediario y un cliente, que no presentan ningún acoplamiento entre ellas.
El proveedor ofrece un servicio determinado que el cliente, ‘a priori’, no conoce y que entonces aprende a utilizar a partir de la información que le brinda el intermediario, que normalmente simplifica el uso de dicho servicio. El cliente generalmente sólo sabe cómo utilizar el servicio, es decir, cómo enviar y recibir datos, pero no conoce ningún detalle de su implementación interna.
A continuación, un ejemplo que ayuda a entender esto de mejor manera. Vamos a suponer que Pablo, a través de una aplicación Internet, solicita información sobre un viaje que desea realizar, a una agencia de viajes (proveedor) que ofrece sus servicios a través de la web. Para proporcionar al cliente (usuario) los datos que necesita, la agencia de viajes pide información de hoteles y líneas aéreas, a través de otros servicios web. Con ello, la agencia se convierte a la vez en cliente de esos otros servicios web que proporcionarán la información solicitada sobre el hotel y la línea aérea. Por último, el usuario cancelará el viaje a través de la agencia de viajes que servirá de intermediaria entre el cliente y el servicio web que gestionará el pago
Una de las mayores ventajas de SOA es que permite a las empresas crear aplicaciones más flexibles y adaptables. Algunos beneficios concretos son la mayor rapidez en el desarrollo de éstas, y la consolidación y consistencia superior de los procesos de negocio a través de las aplicaciones que comparten servicios comunes.
Figura 1.
No es posible garantizar que sea más barato construir un producto bajo SOA, sin embargo, sí es la manera más económica de desarrollar las próximas aplicaciones, fundamentalmente porque bajo SOA están siempre presentes los conceptos de simplicidad, flexibilidad, capacidad de mantenimiento, reutilización, bajo acoplamiento e interoperabilidad. De hecho, a medida que aumenta el reuso de un servicio, se reduce progresivamente el costo de las nuevas aplicaciones (ver figura 1).
Metodología para la adopción de SOA
Deloitte propone la realización de varias etapas que permitirán reducir el riesgo de adopción de SOA en la empresa (ver figura 2):
Estrategia de SOA
Para escoger una implementación adecuada, es necesario alinear los objetivos de corto y largo plazo en la organización. También es importante:
• Comunicar los beneficios al negocio: Para ello hay que cuantificarlos, considerando aspectos como la productividad del usuario final, servicios al consumidor y rápida automatización de procesos. Se deben agregar los beneficios técnicos y descontar todos los costos directos involucrados en la tecnología. A modo de referencia, costos del software, entrenamientos, desarrollos y operación.
• Construcción del roadmap a alto nivel: Es necesario desarrollar un roadmap de proyectos a corto y largo plazo. La idea es tener en cuenta una serie de factores, tales como el retorno de la inversión y cómo ésta se alinea con la estrategia de negocio:
– Se recomienda el desarrollo de un layout estructurado que fomente la gobernabilidad y administración de los servicios.
– Se deben considerar las iniciativas de un proyecto piloto y empresarial.
– Tomar en cuenta los objetivos a corto y largo plazo.
Figura 2.
Proyecto piloto de SOA
Un proyecto piloto permite analizar la viabilidad de SOA, así como afianzar la confianza en la estrategia seleccionada. Por otra parte, posibilita validar la metodología y tecnología adquirida para estos fines. Un proyecto piloto, en conjunto con una implementación empresarial, en definitiva permiten minimizar los riesgos de falla de la implementación final:
• Construir la infraestructura necesaria: Esta fase permite establecer la infraestructura SOA que se requiere para la organización, ya sea en términos de arquitectura tecnológica de gobernabilidad, niveles de servicio, estándares, directrices, programas de aseguramiento de la calidad y de control, procesos de gobernabilidad y desarrollo y definición de entrenamientos, así como el poder estructurar un centro de excelencia.
• Exponer las funciones como servicios: Esta etapa posibilita determinar cuáles serán los servicios de procesos de negocios expuestos en forma interna o externa. Adicionalmente, permite la realización de la agrupación de servicios en base a su función, control de nivel de acceso y el alineamiento a los grupos de servicios para grupos de usuarios. Por último, en esta fase se crean los servicios que darán la posibilidad de transformar las aplicaciones ‘stand alone’ a la arquitectura necesaria para finalmente desarrollar las interfaces de las aplicaciones legadas para publicarlas como servicios.
• Unificar vistas y automatizar procesos: En esta fase se realiza la implementación de algunos procesos claves, con el fin de tener visibilidad del funcionamiento de la arquitectura escogida.
Implementación empresarial de SOA
La mayor parte de las tareas están dirigidas a diseñar e implementar los componentes de arquitectura necesarios para la ejecución y desarrollo de aplicaciones, según se vayan requiriendo durante la implantación. Esta fase es consecuencia de la etapa anterior y de ello dependerá cómo se realizará la implementación de SOA en la organización. Este movimiento puede ser realizado en forma progresiva o en un big bang. La mayoría de las empresas opta por la primera, dado que es menos riesgosa y más controlada.
• Administrar y monitorear servicios: Implementar SOA representa un proceso cíclico y evolutivo, en el cual, en base a la colección de métricas y simulaciones, es posible optimizar los procesos de negocios. Producto de lo anterior es fundamental tener herramientas de monitoreo que permitan capturar métricas en tiempo real, para así administrar los recursos en forma dinámica.