Arquitectura orientada a Servicios


En ingeniería de software , la arquitectura orientada a servicios ( SOA ) es un estilo arquitectónico que admite la orientación a servicios. [1] En consecuencia, también se aplica en el campo del diseño de software, donde los servicios se proporcionan a los demás componentes mediante componentes de aplicación , a través de un protocolo de comunicación a través de una red. Un servicio es una unidad discreta de funcionalidad a la que se puede acceder de forma remota y actuar sobre ella y actualizarla de forma independiente, como recuperar un extracto de tarjeta de crédito en línea. SOA también pretende ser independiente de proveedores, productos y tecnologías. [2]

La orientación al servicio es una forma de pensar en términos de servicios y desarrollo basado en servicios y los resultados de los servicios. [1]

Se pueden usar diferentes servicios en conjunto como una red de servicios para proporcionar la funcionalidad de una gran aplicación de software , [5] un principio que SOA comparte con la programación modular . La arquitectura orientada a servicios integra componentes de software distribuidos, mantenidos e implementados por separado. Está habilitado por tecnologías y estándares que facilitan la comunicación y la cooperación de los componentes a través de una red, especialmente a través de una red IP.

SOA está relacionado con la idea de una interfaz de programación de aplicaciones (API), una interfaz o protocolo de comunicación entre diferentes partes de un programa informático destinado a simplificar la implementación y el mantenimiento del software. Se puede pensar en una API como el servicio y en la SOA como la arquitectura que permite que el servicio funcione.

En SOA, los servicios usan protocolos que describen cómo pasan y analizan los mensajes usando metadatos de descripción . Estos metadatos describen tanto las características funcionales del servicio como las características de calidad del servicio. La arquitectura orientada a servicios tiene como objetivo permitir a los usuarios combinar grandes porciones de funcionalidad para formar aplicaciones que se crean únicamente a partir de servicios existentes y combinarlos de manera ad hoc. Un servicio presenta una interfaz simple al solicitante que abstrae la complejidad subyacente que actúa como una caja negra. Otros usuarios también pueden acceder a estos servicios independientes sin ningún conocimiento de su implementación interna. [6]

La palabra de moda relacionada que promueve la orientación a servicios es un acoplamiento flexible entre servicios. SOA separa las funciones en distintas unidades, o servicios, [7] que los desarrolladores hacen accesibles a través de una red para permitir que los usuarios las combinen y las reutilicen en la producción de aplicaciones. Estos servicios y sus consumidores correspondientes se comunican entre sí pasando datos en un formato compartido bien definido, o coordinando una actividad entre dos o más servicios. [8]


Elementos de SOA, por Dirk Krafzig, Karl Banke y Dirk Slama [26]
Metamodelo SOA, The Linthicum Group, 2007