Las empresas necesitan poder interconectar los procesos, personas e informacin tanto con la propia organizacin como -atravesando sus fronteras- con subsidiarias y socios comerciales. La falta de integracin entre los componentes de IT sistemas, aplicaciones y datos- hace difcil obtener una respuesta rpida y efectiva ante los cambios que afectan de forma natural a los negocios. La inflexibilidad genera costes, reduce la capacidad de respuesta ante los clientes, compromete el cumplimiento con las normativas legales y afecta negativamente a la productividad de los empleados. En suma, una deficiente integracin es uno de los problemas ms importantes a los que las organizaciones deben hacer frente para mantener su competitividad y garantizar su crecimiento. La Arquitectura Orientada a Servicios (SOA, Service Oriented Architecture) supone una estrategia general de organizacin de los elementos de IT, de forma que una coleccin abigarrada de sistemas distribuidos y aplicaciones complejas se pueda transformar en una red de recursos integrados, simplificada y sumamente flexible. Un proyecto SOA bien ejecutado permite alinear los recursos de IT de forma ms directa con los objetivos de negocio, ganando as un mayor grado de integracin con clientes y proveedores, proporcionando una inteligencia de negocio ms precisa y ms accesible con la cual se podrn adoptar mejores decisiones, y ayuda a las empresas a optimizar sus procesos internos y sus flujos de informacin para mejorar la productividad individual. El resultado neto es un aumento muy notable de la agilidad de la organizacin.
3. Objetivos
El presente trabajo pretende dar un conocimiento , tanto a nivel de concepto como de tecnologas utilizadas, de las arquitecturas orientadas a servicio. La investigacin de estudios realizados y la recopilacin de datos tienen como fin llegar a alcanzar los siguientes objetivos:
Conocer el porqu y las necesidades de la arquitectura orientada a servicio. Entender el significado y conceptos bsicos de SOA. Explicar la relacin y las diferencias entre SOA y los Web Services. Identificar los elementos que forman parte de la arquitectura SOA y cmo llevar a cabo su implementacin.
4. SOA: Arquitectura Orientada a Servicio
4.1 La aparicin de SOA
Los sistemas IT han evolucionado exponencialmente, lo cual se ha transmitido en un crecimiento de la complejidad del software de las empresas. Las tecnologas tradicionales han alcanzado su lmite de capacidad y en las empresas cada vez se pide una respuesta ms rpida a los requerimientos de negocio, reducciones de costes y a la integracin de nuevos patrones y de nuevos clientes. Las organizaciones de IT han buscado diferentes implementaciones antes de llegar a desarrollar SOA y los problemas bsicos con lo que se han encontrado y con los que hemos de contar cuando queramos hacer implementaciones de SOA son:
Complejidad: Los entornos son complejos. Las obligaciones de cumplir los presupuestos y la eficiencia de operacin hacen necesario una reutilizacin de los sistemas, ms que un reemplazo de stos
Programacin redundante y no reutilizable: las aplicaciones igual que las empresas se van desarrollando a partir de fusiones y adquisiciones, lo cual hace que se tenga que trabajar con aplicaciones redundantes o aplicaciones con funciones que no son fcilmente reutilizables
Interfaces mltiples: Si tenemos que interconectar N sistemas existentes necesitamos N(N-1) interfaces para hacer posible esta realizacin, con lo que si queremos introducir un nuevo sistema deber crear documentacin, testear y mantener 2N nuevos interfaces.
4.2 Servicio
El acrnimo SOA significa Arquitectura Orientada a Servicio. El concepto ms importante de SOA es el de SERVICIO. Segn el CBDI (Component Based Development and Integration) Forum su definicin sera: Vehculo a partir del cual las necesidades de los clientes son satisfechas de acuerdo con el contrato negociado (implcito o explcito), el cual incluye el acuerdo de servicio (Service Agreement), la funcin ofrecida etc. Otra definicin posible que podemos encontrar, es la que nos da el W3C (World Wide Web Consortium): Componente capaz de realizar una tarea.
Se puede definir un servicio como un paquete funcional de software al cual se puede acceder a travs de una infraestructura de red. Los servicios son autnomos, autocontenidos y uno no puede tener control, ni autoridad sobre ellos. Un ejemplo de servicio puede ser, dentro de un entorno de negocio, una transaccin simple (como obtener la cuota de stock, conseguir las direcciones de los clientes), una transaccin de negocio ms compleja (calendario de entregas, cobertura de ventas) o servicios de sistema (autenticacin de usuario, mensaje de conexin). Las funciones de negocio desde el punto de vista de aplicacin no son funciones de sistema, y son atmicas (aunque estn formadas por funciones ms pequeas, se considera como un paquete indivisible). Las transacciones de negocio tienen que implementarse como una composicin de funciones de bajo nivel transparentes al que las llama. Por ltimo los servicios de sistema son funciones genricas que pueden ser abstradas fuera de la plataforma particular, como Microsoft Windows o Linux. La riqueza funcional de las aplicaciones nos la da el nivel de granularidad. La granularidad es la capacidad de descomponer las aplicaciones de negocio en servicios y tiene implicaciones prcticas, no es slo un proceso de abstraccin. Los servicios pueden ser de baja granularidad o funciones complejas de alta granularidad (fine-grained o coarse-grained respectivamente) [10]. Generalmente, los servicios son funciones coarse-grained ya que suelen ser el resultado de ejecutar varias operaciones fine-grained; por ejemplo, abrir una cuenta est compuesto por identificar al usuario y crear una cuenta nueva etc. Esta es la manera de desarrollar un entorno de aplicaciones basadas en componentes, donde los servicios se definen como un conjunto de componentes reusables que pueden ser usados para la construccin de nuevas aplicaciones, o para integrar los recursos de software ya existentes.
4.3 Beneficios de adoptar SOA
SOA te facilita el cumplimiento de las normas en toda la empresa para los procesos de negocio. Reduce costos y tiempo en el desarrollo y mantenimiento de aplicaciones, incrementando la calidad de los servicios y la productividad de la empresa, dado que todas las aplicaciones pretenden satisfacer un servicio. Las metodologas para SOA facilitan la integracin entre nuevas aplicaciones as como con los sistemas existentes. El desarrollo de aplicaciones ms productivas, flexibles, ms seguras y manejables para gestionar procesos de negocio crticos a medida que evolucionan o cambian las necesidades de negocio.
4.4 Estructura y caractersticas de los Servicios
Los servicios son una forma de encapsular componentes/programas reusables (building blocks) para proveer funcionalidad a otros usuarios y a otros servicios. Cuando un servicio provee servicios a otro, al servicio que invoca lo llamaremos consumidor, para distinguirlo del usuario. Con los servicios se interacta mediante el intercambio de mensajes. Un servicio consiste de 3 elementos
Contrato: El uso de la funcionalidad que provee un servicio es gobernada por un contrato. Especifica el propsito, la funcionalidad, las restricciones y el modo de uso del servicio. Es definido por el negocio, en trminos del negocio.
Implementacin: La funcionalidad en s misma que provee el servicio, puede ser realizada utilizando cualquier tecnologa.
Interfaces: Para acceder a la funcionalidad el consumidor necesita interfacear con el servicio. Proveen la forma de acceder a la funcionalidad de acuerdo al contrato. Un servicio puede ofrecer mltiples interfaces para permitir su consumo de diferentes maneras.
Las caractersticas funcionales de los servicios son:
Invocacin: sincrnica o asincrnica Intercambio: uni-direccional, bi-direccional Complejidad: referido a la granularidad Las caractersticas no-funcionales:
Requerimientos de Volmenes Calidad del Servicio Tiempo de ejecucin del Servicio
5. Ventajas e inconvenientes de implementar SOA
5.1 Ventajas
El concepto bsico de SOA es el de proveer de un conjunto bsico de servicios a los que cada aplicacin puede acceder para realizar su funcin. En esencia, la idea se refiere a escribir el cdigo una vez para despus utilizarlo en cualquier sitio. En consecuencia, el resultado es menos cdigo, menos costes y el incremento de estandarizaciones. El SQA (Software Quality Assurance) total decrece desde que hay menos cdigo para documentar y la documentacin de empresa ya existe para los servicios SOA. Adems, se deben compilar y debuggar menos lneas de cdigo lo cual ahorra tiempo de programacin.
En el ejemplo vemos tres aplicaciones que deben autentificar a los usuarios antes de acceder al sistema. En vez de tener cada aplicacin su propia autenticacin, todas usan el servicio de autenticacin de la empresa. Esto tiene un beneficio inmediato y es que si se detecta cualquier tipo de vulnerabilidad en el servicio de autenticacin, slo se habr de arreglar una vez, y no tres como en el caso de tener cada aplicacin su propia autenticacin. Otro beneficio es la simplificacin de manejo, por ejemplo en el caso de que un empleado abandone la empresa slo ha de darse de baja una vez, ya que la base de datos es compartida para todas las aplicaciones que disponen del servicio de autenticacin.
5.2 Inconvenientes
El primer inconveniente con el que nos encontramos al desplegar SOA es que las arquitecturas existentes no estn diseadas para soportar SOA. Es por ello que una migracin hacia SOA necesita una gran planificacin, reprogramacin y adquisiciones. Muchos negocios no tienen presupuesto suficiente para hacer un cambio de este tipo teniendo una arquitectura funcional.
Otro inconveniente es que SOA no es tan escalable o tan fcil de conseguir como otras soluciones. SOA depende de XML y comunicaciones de red que requieren anlisis y serializacin continua, lo cual provoca que incremente el tiempo de transaccin y que se haya de invertir en hardware adicional para llevar a cabo estas acciones.
Conclusiones
Las soluciones SOA permiten a organizaciones integracin de sus recursos de IT actuales y acceder a ellos, para lograr que la organizacin funcione de manera ms eficiente.
La implementacin de SOA, que parte de una correcta comprensin de los problemas y condicionantes del negocio, permite a las organizaciones alinear sus recursos de IT con las necesidades de negocio.
SOA no implica el uso de tecnologas de servicio web, hay implementaciones SOA que no utilizan servicios web. Sin embargo los servicios Web son la principal tecnologa para habilitar y realizar SOA hoy en da.
Los beneficios por la Implementacin de SOA: mejorar la satisfaccin del cliente, incrementar competitividades, mejoramiento de costos de TI, reduccin del tiempo cclico de las empresas y aumento de las utilidades.