Ultima revisión 11/01/2013
Hablemos de la Arquitectura SOA
SOA es un paradigma de arquitectura para sistemas de información (SSII) que busca el mínimo acoplamiento entre sus componentes y que promueve su reutilización, favoreciendo la identificación de un conjunto de servicios en red y la definición de los procesos por los cuales interactúan. El conjunto de técnicas, recomendaciones y tecnologías que denominamos Service-Oriented Architecture (SOA) buscan que los nuevos SSII sean modulares, abiertos e independientes.
La arquitectura que nos presenta SOA se basa en definir unos servicios que componen una capa de abstracción entre el negocio y la tecnología y, la habilidad para responder a cambios en los requisitos. Por tanto, un servicio será la unidad básica de funcionalidad en la arquitectura SOA y se definirá como un conjunto coherente de funcionalidad, autocontenido, sin estado e independiente.
Los servicios web (WS) son un caso particular de mecanismo estándar para implementar la interacción entre los componentes software, mediante la invocación de métodos remotos. Estos suponen una interconexción punto a punto que, por sí sola, no tienen capacidad de integración y flexibilidad frente a los cambios que se necesitan en los SSII de las organizaciones.

Los estándares definidos en una arquitectura SOA son XML, WSDL, UDDI y SOAP.
La arquitectura SOA típica se encuentra organizada en varios niveles:
- Nivel de Presentación: Es el único punto de acceso para el usuario y recoge todo lo que puede utilizar.
- Nivel de Procesos: Compuesto por la definición, gestión y ejecución de los procesos de negocio.
- Nivel de Servicios: Es la capa dónde reside la lógica de las aplicaciones y de los servicios que éstas ofrecen.
- Nivel de integración: Utilizado para las comunicaciones entre los servicios y las demás aplicaciones.
- Nivel de Seguridad: Capa transversal dónde se define un esquema de autorización de ejecución para cada servicio, así como el acceso a la información.
- Nivel de Gobernabilidad: Para controlar el uso de las infraestructuras, servicios y estado de disponibilidad.
Ventajas de una arquitectura SOA
La adopción de la filosofía SOA en una organización trae consigo una serie de beneficios, entre lo cuales se pueden mencionar:
- Reducción del time-to-market y de los costes de desarrollo.
- Mayor agilidad, al simplificarse la adaptación de los SSII frente a las nuevas necesidades que surjan.
- Mayor interoperabilidad de los distintos sistemas existentes (legacy).
- Reducción de los costes de integración, consecuencia del punto anterior.
- Mejor alineación tecnología-negocio.
- Disminución de las ataduras tecnológicas (plataformas, suministradores, etc).
Críticas sobre SOA
La arquitectura SOA no estáexenta de problemas:
- Mensajería: tiempos de invocación de los servicios, problemas en la red (propio de los sistemas distribuidos), ...
- Uso extensivo de XML (ineficiente para gran volumen de datos).
- Riesgo de llegar a una “explosión de servicios”: el desarrollo de una batería inmanejable de servicios que se invocan unos a otros.
- La integración resulta no ser tan simple (ver la pila de protocolos WS-* o echar un vistazo a un documento WSDL).
- Mal entendida, puede acabar siendo lo que se conoce por "YARPC" (Yet Another RPC), como tecnologías precedentes: COM, CORBA, RMI ...
- Quizás se deja de lado al usuario final. Los servicios son algo más que invocaciones RPC: deben hacer algo útil que ofrezca un beneficio al usuario.