Banner

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.

modelo_basico_ws

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.