La arquitectura orientada a servicios o SOA ( arquitectura de servicios orientada a la capa en inglés , SOA ) es una forma de arquitectura de mediación que es una aplicación de modelo de interacción que implementa servicios ( software de componentes ):
Este término apareció durante el período 2000-2001 y originalmente se refería principalmente a las cuestiones de interoperabilidad sintáctica en relación con las tecnologías informáticas utilizadas en los negocios. Este diseño ha evolucionado para referirse ahora al subconjunto particular de arquitectura de mediación dependiendo de la tecnología disponible.
En la vida cotidiana, un proveedor ofrece un servicio a un cliente consumiéndolo en una relación de confianza establecida entre las dos partes. Por lo general, el cliente solo está interesado en el producto resultado del servicio sin tener la necesidad o preocupación de saber cómo se obtiene. SOA sigue este mismo principio. El servicio es una acción realizada por un "proveedor" (o "productor") para un "cliente" (o "consumidor"), sin embargo, la interacción entre el consumidor y el productor se realiza a través de un mediador (que puede ser un autobús) responsable de conectar los componentes. El servicio, al ser de gran tamaño, engloba y ofrece las funcionalidades de los componentes del sistema. Estos sistemas también se pueden definir como capas de aplicación. La arquitectura orientada a servicios es una respuesta muy eficaz a los problemas que encuentran las empresas en términos de reutilización, interoperabilidad y reducción de acoplamientos entre los diferentes sistemas que implementan sus sistemas de información. Las SOA o SOA se popularizaron con la llegada de estándares como los Servicios Web en el comercio electrónico ( comercio electrónico) ( B2B , interempresarial o B2C , de empresa a consumidor) basados en plataformas como Java EE o .NET . Aplican parte de los principios de urbanización . Dentro de la arquitectura orientada a servicios, distinguimos las nociones de directorio, bus, contrato y servicio, siendo este último el núcleo y el punto central de una arquitectura orientada a servicios. La variación o más precisamente la implementación de SOA que se basa completamente en Internet se denomina WOA ( arquitectura orientada a la Web ).
Durante la década 1980-1990, el problema de la interoperabilidad de los sistemas de información, particularmente complejo durante la fusión o adquisición de empresas, dio origen al campo de investigación de la interoperabilidad de datos; Fue en este momento que la interoperabilidad sintáctica se distinguió de la interoperabilidad de datos semánticos. Esta investigación condujo a los sistemas multibase , el desarrollo de bases de datos distribuidas y la arquitectura federada . Debido a muchos problemas insolubles, la arquitectura federada fue prácticamente abandonada.
Los dos requisitos funcionales principales que surgieron durante este período son:
Estos requisitos funcionales cristalizaron con la invención de Gio Wiederhold la arquitectura de mediación en 1990-1992:
La investigación sobre mediación de datos se centró luego en la creación de arquitectura genérica como ARPA I3 donde aparecieron las cinco grandes familias de servicios (Adaptación, Transformación, Extensión, Gestión y Coordinación), el desarrollo de lenguajes con alta expresividad semántica como KQML y herramientas de transformación de información semántica como ontologías .
Al mismo tiempo, el desarrollo de la tecnología web hizo que otras tecnologías de computación distribuida fueran cada vez menos atractivas. La llegada en 1996 de XML provocó una locura por este lenguaje en la comunidad investigadora y los lenguajes ad-hoc o más complejos como KQML fueron prácticamente abandonados, al menos para este tipo de arquitectura. La industria desarrolló muchos productos bajo el impulso de la investigación básica, por ejemplo, hay más de 150 Ph.D. línea directa de Wiederhold, la mayoría habiendo estado involucrada activamente en el desarrollo de esta tecnología en IBM , Oracle , Sun , Microsoft , Cisco , Samsung , LG , Bell Laboratories , Silicon Graphics , Kodak , Google , Napster y otros; como James Duncan Davidson, quien fue el creador de Tomcat ( Java Servlet y JavaServer Pages ), así como Ant . A finales de la década 1990-2000, se encontró un número considerable de este tipo de tecnologías cuya interoperabilidad era en ocasiones sumamente problemática, al menos sin receta de software para lograrlo.
Una arquitectura orientada a servicios se ajusta a varios principios de gestión de servicios que influyen directamente en el comportamiento intrínseco de una solución de software y el estilo de su diseño:
La arquitectura orientada a servicios representa un medio técnico para integrar los diversos sistemas de información de la empresa considerando cada recurso de TI como un servicio. Permite construir los pilares que conformarán el urbanismo del sistema de información.
La noción de interfaz es importante en el enfoque orientado a servicios. De hecho, representa el punto de entrada único a las funcionalidades de la solución de software y asegura la comunicación a través del intercambio de mensajes. Cada mensaje lleva la semántica específica de la solución de software. Además, este mensaje está escrito en un lenguaje comprensible para ambas partes involucradas. Los servicios que ofrece una arquitectura ágil describen la estructura de los mensajes que esperan del cliente.
La Arquitectura Orientada a Servicios es una solución de software distribuida. Proporciona un mecanismo para el intercambio seguro de mensajes entre los sistemas de información subyacentes mediante el empleo de protocolos de comunicación estandarizados. Este enfoque ofrece a la arquitectura una oportunidad para abrirse a una amplia gama de soluciones de software existentes.
El servicio es un componente clave de la arquitectura orientada a servicios. Consiste en una función o funcionalidad bien definida. También es un componente autónomo que no depende de ningún contexto o servicio externo. Se divide en operaciones que constituyen tantas acciones específicas como pueda realizar el servicio. Podemos establecer un paralelo entre operaciones y servicios por un lado, y métodos y clases en modo orientado a objetos por el otro.
Una arquitectura orientada a servicios es esencialmente una colección de servicios que interactúan y se comunican entre sí. Esta comunicación puede consistir en una simple devolución de datos o en una actividad (coordinación de varios servicios).
Un servicio es una entidad procesadora que reúne las siguientes características:
Una variación del servicio es, por ejemplo, el servicio web que utiliza WSDL (un metalenguaje XML) como lenguaje de descripción, un directorio UDDI para permitir su localización y un protocolo de transporte como HTTP en la arquitectura REST y SOAP para la arquitectura SOA.
Existe una jerarquía de servicios correspondiente a las diferentes capas técnicas de la arquitectura de una solución:
El directorio de servicios hace referencia a todos los servicios (y contratos asociados) disponibles dentro del SI, por lo que participa activamente en la implementación de un mapeo dinámico del SI. En un modelo de bus, el directorio puede ser autoproporcionado por el servicio (registro). Los directorios UDDI hoy en día forman el estándar para los servicios de referencia.
La implementación más común de SOA es la basada en un bus de servicio. Este bus tiene un papel de mediador (middleware) entre el consumidor y el productor del servicio, lo que permite lograr un acoplamiento flexible. El autobús también puede proporcionar una variedad de servicios:
Generalmente hablamos de ESB ( Enterprise Service Bus ), una herramienta de nueva generación para IAE ( Enterprise Application Integration , EAI ) construida sobre estándares como XML, JMS ( Java Message Service ) o servicios web. La principal diferencia con IAE es que ESB ofrece una integración completamente distribuida mediante el uso de contenedores de servicios. Estos "miniservidores" contienen la lógica de integración y se pueden dejar en cualquier lugar de la red. ESB es principalmente una herramienta de intercambio asincrónica con interfaces estandarizadas (SOAP, JMS…) o integradas ( JBI …). También puede ofrecer servicios de valor añadido (traducción, transformación, etc.) activados por eventos.
Otra posibilidad para configurar SOA dentro de un IS es utilizar la web como único soporte de servicio (y no un bus). Este enfoque es posible por el hecho de que la web ya contiene las cualidades necesarias para una SOA (enrutamiento, seguridad, etc.).
Sin embargo, una arquitectura de este tipo requiere que todos los servicios estén expuestos en la web (es decir, accesibles desde una URL), favoreciendo así los servicios web (recuerde que los servicios web no son la única forma de exponer servicios en la web). La ventaja de este diseño es que el soporte para mensajes de invocación de servicios (la web por lo tanto) es verdaderamente universal y no requiere ninguna configuración, mantenimiento, evolución ... Pero esta solución actualmente está bastante desaprobada en situaciones donde el rendimiento es un problema. criterio (cf. desventajas de los servicios web ).
Esta solución parece, en términos de arquitectura pura (aparte de las consideraciones técnicas), realmente más en línea con los principios de SOA.
En el momento de escribir este artículo (verano de 2008), WOA es todavía joven y sin ningún formalismo real, todavía da lugar a muchos debates. Por tanto, es necesario tomar toda la distancia necesaria con respecto a la presente descripción de WOA.
Qworum es un ejemplo de tecnología WOA.
Las arquitecturas SOA se basan principalmente en el uso de la interfaz de invocación ( SOAP , antiguo acrónimo de Simple Object Access Protocol ) y el vocabulario de descripción de datos ( WSDL , Web Services Description Language y XML , Extensible Markup Language ) que debe ser común a todos los agentes (proveedores de servicios). y usuarios del servicio).
Este dispositivo permite reutilizar aplicaciones empresariales, con el objetivo de que la empresa se adapte rápidamente a un nuevo contexto de mercado.
En términos de interoperabilidad, las arquitecturas SOA se basan en parte en los estándares descritos a través del WS-I .
Entre las diferentes capas de estándares y protocolos que hacen posible construir este tipo de arquitecturas, destacamos:
Una arquitectura SOA se puede complementar con:
OASIS (Organización para el Avance de Estándares de Información Estructurada) es un consorcio sin fines de lucro que impulsa el desarrollo, la convergencia y la adopción de estándares "ABIERTOS" para arquitecturas de sistemas de información.
Alrededor de 2013, varias empresas, como Netflix , aplicaron patrones SOA teniendo en cuenta los desarrollos tecnológicos (contenerización, kubernetes , kafka, etc.) de la época. La retroalimentación anterior ha hecho posible refinar algunos de los principios, en particular la granularidad de los servicios, de ahí el nombre “ Microservicios ”. Desde este punto de vista, podemos considerar los microservicios como una evolución de SOA.
La SNCF ha introducido una arquitectura SOA para su sistema de reservas (programación de búsqueda, solicitud de tarifas, reserva ...) que admite tanto terminales como agencias y estaciones, y destaca su sitio web de pedidos online Voyages-sncf.com .
El grupo Air France-KLM también ha decididojulio 2008para elegir una arquitectura orientada a servicios para su SI (arquitectura basada en servicios web, eventualmente reemplazará a la arquitectura SOA “doméstica” que ha estado vigente desde la década de 1990). La empresa opta por esta arquitectura para "hacer que su SI sea escalable y receptivo".
Por último, la administración francesa también se está modernizando mediante la renovación de la infraestructura técnica en ciertos ministerios, incluidos los de Defensa y excombatientes. Por ejemplo, el equipo del proyecto para el próximo sistema de información de adquisiciones departamental planea utilizar una arquitectura de servicio basada en un ESB. De hecho, este SI HA ministerial tendrá que intercambiar con muchos otros. Por lo tanto, SOA le permitirá integrarse en un panorama limitado por una fuerte necesidad de interoperabilidad.