Arquitectura orientada a Servicios

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 23 de agosto de 2020; las comprobaciones requieren 14 ediciones .

La arquitectura orientada a servicios ( SOA , en inglés ,  Service-Oriented Architecture - SOA ) es un enfoque modular para el desarrollo de software , basado en proporcionar el uso remoto de componentes (servicios) distribuidos , débilmente acoplados fácilmente reemplazables con interfaces estandarizadas que utilizan protocolos estandarizados .

Los sistemas de software desarrollados de acuerdo con SOA generalmente se implementan como un conjunto de servicios web que interactúan sobre el protocolo SOAP , pero existen otras implementaciones (por ejemplo, basadas en jini , CORBA , basadas en REST ).

Las interfaces de componentes en una arquitectura orientada a servicios encapsulan los detalles de implementación ( sistema operativo , plataforma , lenguaje de programación ) de otros componentes, lo que permite que los componentes se combinen y reutilicen para construir sistemas de software distribuidos complejos , asegurando la independencia de las plataformas y herramientas de desarrollo utilizadas, contribuyendo escalabilidad y controlabilidad de los sistemas creados.

Ganó popularidad a finales de la década de 1990 y principios de la de 2000. Desde mediados de la década de 2010, la arquitectura de microservicios ganó popularidad  , una variante de SOA basada en el uso de servicios lo más pequeños posible.

Tecnologías de implementación

La arquitectura orientada a servicios no está ligada a ninguna tecnología en particular. Se puede implementar utilizando una amplia gama de tecnologías, incluidas tecnologías como REST , RPC , DCOM , CORBA o servicios web . SOA puede implementarse usando uno de estos protocolos y, por ejemplo, puede usar adicionalmente el mecanismo del sistema de archivos para el intercambio de datos.

Lo principal que distingue a SOA es el uso de servicios independientes que realizan tareas bien definidas, llamados de forma estándar a través de interfaces bien definidas, sin que los servicios sepan sobre las aplicaciones que los llaman y las aplicaciones, las formas en que el servicios realizan su tarea.

SOA también se puede considerar como un estilo de arquitectura de sistema de información que permite que las aplicaciones se construyan mediante la combinación de servicios interactivos débilmente acoplados. Estos servicios interactúan en función de una interfaz bien definida independiente de la plataforma y el idioma (por ejemplo, WSDL ). La definición de la interfaz oculta la implementación del idioma del servicio.

Así, los sistemas basados ​​en SOA pueden ser independientes de las tecnologías y plataformas de desarrollo (como Java , .NET , etc.). Por ejemplo, los servicios de C# que se ejecutan en plataformas .Net y los servicios de Java que se ejecutan en plataformas Java EE pueden llamarse de la misma manera mediante una aplicación compuesta común. Al permitir que las aplicaciones que se ejecutan en una plataforma llamen a los servicios que se ejecutan en otras plataformas, es más fácil reutilizar los componentes.

SOA puede admitir la integración y consolidación de operaciones en sistemas complejos, pero SOA no define ni proporciona metodologías o marcos para documentar servicios.

Los lenguajes de alto nivel como BPEL o especificaciones como WS-CDL y WS-Coordination amplían el concepto de un servicio al proporcionar un método de orquestación para combinar servicios de nivel inferior en servicios comerciales más grandes que a su vez pueden ser utilizados tecnológica y comercialmente. procesos implementados como aplicaciones compuestas o portales .

El uso de arquitectura de componentes (SCA) para implementar SOA es un área de investigación actual.

Enlaces