Inicio
Topics
¿Qué es la SOA (arquitectura orientada a servicios)?
SOA, o arquitectura orientada a servicios, define una manera de conseguir que los componentes de software sean reutilizables a través de interfaces de servicio. Los servicios utilizan estándares de interfaz comunes y un patrón de arquitectura para facilitar su incorporación a nuevas aplicaciones. De este modo, se evitan determinadas tareas al desarrollador de aplicaciones, que antes debía volver a desarrollar o duplicar la funcionalidad existente o tenía que saber cómo conectar o proporcionar interoperatividad con las funciones existentes.
Cada servicio de una SOA incorpora el código y las integraciones de datos necesarias para ejecutar una función de negocio completa distinta (por ejemplo, comprobar el crédito de un cliente, calcular el pago mensual de un préstamo o procesar una solicitud de hipoteca). Las interfaces de servicio proporcionan acoplamiento dinámico, que significa que se las puede llamar sin apenas conocimientos, o incluso sin ningún conocimiento sobre cómo se implementa el servicio por debajo, de forma que se reducen las dependencias entre aplicaciones.
Esta interfaz es un contrato de servicio entre el proveedor del servicio y el consumidor del servicio. Las aplicaciones que hay tras la interfaz de servicio se pueden escribir en Java, Microsoft .Net, Cobol o cualquier otro lenguaje de programación, suministrarse como aplicaciones de software empaquetadas por un proveedor (por ejemplo, SAP), aplicaciones SaaS (por ejemplo, Salesforce CRM) u obtenerse como aplicaciones de código abierto. Las interfaces de servicio normalmente se definen con Web Service Definition Language (WSDL), que es una estructura de etiquetas estándar basada en xml (lenguaje de marcado extensible).
Los servicios se exponen utilizando protocolos de red estándar, como SOAP (protocolo de acceso a objetos simple)/HTTP o Restful HTTP (JSON/HTTP), para enviar solicitudes para leer o modificar datos. El gobierno del servicio controla el ciclo de vida para el desarrollo y, en la etapa adecuada, los servicios se publican en un registro que permite a los desarrolladores encontrarlos rápidamente y reutilizarlos para ensamblar nuevas aplicaciones o procesos de negocio.
Estos servicios se pueden crear desde cero, pero a menudo se crean exponiendo funciones desde sistemas de registro existentes como interfaces de servicio.
De este modo, SOA representa una etapa importante en la evolución del desarrollo y la integración de aplicaciones en las últimas décadas. Antes de que surgiera SOA a finales de la década de 1990, conectar una aplicación a datos o funcionalidad alojada en otro sistema requería una integración punto a punto compleja, integración que los desarrolladores tenían que recrear, en parte o en su totalidad, para cada nuevo proyecto de desarrollo. Exponer estas funciones a través de servicios de SOA permitió al desarrollador reutilizar la funcionalidad existente y conectar a través de la arquitectura de ESB de SOA (véase a continuación).
Tenga en cuenta que, aunque SOA y la más reciente arquitectura de microservicios comparten muchas palabras en común (como "servicio" y " arquitectura "), solo están vagamente relacionadas y, de hecho, trabajan en ámbitos distintos, como se describe más adelante en este artículo.
Un ESB, o bus de servicio empresarial, es un patrón de arquitectura por medio del cual un componente de software centralizado realiza integraciones entre aplicaciones. Realiza transformaciones de modelos de datos, maneja conectividad/mensajería, realiza direccionamiento, convierte protocolos de comunicación y gestiona potencialmente la composición de varias solicitudes. El ESB permite que estas integraciones y transformaciones estén disponibles como una interfaz de servicio para que la puedan reutilizar nuevas aplicaciones. El patrón de ESB se implementa normalmente utilizando un ejecutable de integración especialmente diseñado y un conjunto de herramientas que garantizan la mejor productividad posible.
Se puede implementar una SOA sin un ESB, pero sería como tener sólo un montón de servicios. Cada propietario de aplicaciones tendría que conectarse directamente a cualquier servicio que necesitase y realizar las transformaciones de datos correspondientes para cumplir con los requisitos de cada una de las interfaces de servicio. Esto supone mucho trabajo (incluso aunque las interfaces sean reutilizables) y plantea importantes desafíos de mantenimiento en el futuro, ya que cada conexión es de punto a punto. De hecho, con el tiempo, los ESB llegaron a ser considerados un elemento tan propio de cualquier implementación de SOA que los dos términos se utilizan a veces como sinónimos, lo que genera confusión.
En comparación con las arquitecturas que le precedieron, SOA ofrece importantes ventajas a la empresa:
En 2010, las implementaciones de SOA estaban en plena expansión entre las empresas líderes en prácticamente todos los sectores. Por ejemplo:
Los expertos han escrito miles de páginas de literatura impresa y digital comparando SOA y microservicios y definiendo las sutilezas de la relación entre estos dos conceptos. A efectos del presente artículo, las principales diferencias entre ambos son el acoplamiento de componentes y el ámbito de aplicación:
La arquitectura de microservicios surgió y ganó fuerza con el auge de la virtualización, cloud computing, las prácticas de desarrollo Agile y DevOps. La mayoría de las ventajas de los microservicios en estos contextos surgen del desacoplamiento completo de los componentes, lo que simplifica y mejora lo siguiente:
Para profundizar en las diferencias entre SOA y los microservicios, consulte el artículo "SOA frente a microservicios: ¿en qué se diferencian?"
De la misma manera que la arquitectura de microservicios tiene el potencial de aportar mejoras en agilidad, escalabilidad y resiliencia al diseño de aplicaciones, estas mismas técnicas también se pueden aplicar a la integración. Esto es importante porque, con el tiempo, el patrón de ESB fuertemente centralizado y su equipo de especialistas en integración centralizado y asociado pueden provocar un cuello de botella. Teniendo en cuenta los principios de microservicios, podemos dividir potencialmente el ESB en una integración más precisa y descentralizada. Esta es una de las premisas principales en las que se basa la integración ágil.
Conecte aplicaciones, servicios y datos con IBM Cloud Pak for Integration, la plataforma de integración más completa del mercado.
Conecte aplicaciones y datos con un potente software de integración de aplicaciones automatizado por IA.
IBM® API Connect es una solución de gestión de API segura que utiliza una experiencia intuitiva para ayudar a crear, gestionar, proteger, socializar y monetizar las API.
Aprenda los conceptos básicos de la arquitectura orientada a servicios (SOA) y los microservicios, sus diferencias principales y qué enfoque sería el más adecuado para su situación.
Esta guía describe cómo acelerar la modernización de aplicaciones, incrementar la productividad de los desarrolladores y mejorar la eficiencia operativa y la estandarización.
Obtenga más información sobre el ESB (un componente esencial de SOA), los beneficios que ofrece y cómo se relaciona con la arquitectura de microservicios.