Iniciar sesión / Registrar Cuenta

Aplicaciones nativas de la nube

¿Qué es la arquitectura orientada a los servicios (SOA)?

Jump to section

La arquitectura orientada a los servicios (SOA) es un tipo de diseño de software que permite reutilizar sus elementos gracias a las interfaces de servicios que se comunican a través de una red con un lenguaje común. 

Un servicio es una unidad autónoma de una o más funciones del software diseñada para realizar una tarea específica, como recuperar cierta información o ejecutar una operación. Contiene las integraciones de datos y código que se necesitan para llevar a cabo una función empresarial completa y diferenciada. Se puede acceder a él de forma remota e interactuar con él o actualizarlo de manera independiente.

En otras palabras, la SOA integra los elementos del software que se implementan y se mantienen por separado, y permite que se comuniquen entre sí y trabajen en conjunto para formar aplicaciones de software en distintos sistemas.

¿Cómo funciona la arquitectura orientada a los servicios?

Antes de que se empezara a utilizar la SOA a fines de los noventa, era muy difícil conectar una aplicación con los servicios alojados en otro sistema, y se necesitaba una integración profunda de punto a punto (conectividad, enrutamiento, traducción de los modelos de datos, etc.). Luego, los desarrolladores debían repetir el proceso para cada proyecto nuevo. Este modelo se conocía como "monolítico", ya que el código para toda la aplicación formaba parte de una sola implementación. Si algo no funcionaba correctamente, había que darla de baja por completo hasta que se solucionaran los problemas, para luego volverla a implementar como una versión nueva. 

Dado que la SOA expone los servicios utilizando protocolos estándar de red para enviar solicitudes o acceder a los datos (p. ej., SOAP, JSON, ActiveMQ o Apache Thrift), no es necesario que los desarrolladores realicen las integraciones desde cero. De hecho, pueden utilizar los patrones llamados buses de servicios empresariales (ESB) para integrar un elemento centralizado y los sistemas de backend, y ponerlos a disposición de todos como interfaces de servicios.Asimismo, pueden reutilizar las funciones actuales, en lugar de tener que volver a crearlas.

En este tipo de arquitectura, los servicios se comunican por medio de un sistema "sin conexión directa". Se trata de un método para interconectar los elementos en un sistema o una red, de manera que puedan transmitir información o coordinar un proceso empresarial, mientras se reduce la dependencia entre ellos.Como consecuencia, se crea una nueva aplicación.

Ventajas frente al enfoque monolítico

  • Comercialización más rápida y mayor flexibilidad: la posibilidad de reutilizar los servicios agiliza y simplifica el proceso de creación de las aplicaciones. Los desarrolladores no tienen que empezar siempre desde cero, como en el caso de las aplicaciones monolíticas. 
  • Uso de la infraestructura heredada en los mercados nuevos: la SOA permite que los desarrolladores tomen las funciones de una plataforma o un entorno y las amplíen e implementen en otros. 
  • Reducción de los costos gracias a una mayor agilidad y un desarrollo más eficiente
  • Mantenimiento sencillo: dado que todos los servicios son autónomos e independientes, se puede modificar y actualizar cada uno cuando sea necesario, sin afectar al resto. 
  • Escalabilidad: la SOA permite que ejecutar los servicios en varios lenguajes de programación, servicios y plataformas, lo cual aumenta la escalabilidad de forma considerable. Además, utiliza un protocolo de comunicación estandarizado para que las empresas puedan disminuir la interacción entre los clientes y los servicios, lo cual permite ampliar las aplicaciones con menos presiones e inconvenientes. 
  • Mayor confiabilidad: la SOA genera aplicaciones más confiables, ya que es más fácil depurar servicios pequeños que un código de gran volumen.
  • Gran disponibilidad: las instalaciones de la SOA están disponibles para todos.

Funciones de la SOA

Los elementos fundamentales de la arquitectura orientada a los servicios consisten en tres funciones. 

Proveedor de servicios

Se encarga de crear servicios web, ofrecerlos a un registro de servicios disponibles y gestionar sus condiciones de uso.

Agente o registro de servicios

Se encarga de brindar información acerca del servicio a quien lo solicite, y puede ser público o privado. 

Usuario del servicio o persona que lo solicita

El usuario puede buscar un servicio en el registro o el agente, y se conectará con el proveedor para recibirlo.

Diferencias entre la arquitectura orientada a los servicios y los microservicios

La arquitectura orientada a los servicios introdujo un concepto de servicios que se convirtió en un elemento central de la virtualización y el cloud computing modernos en aspectos como el middleware y los microservicios

Los conceptos de la SOA y la arquitectura de microservicios son similares, por lo que la gente suele confundirlos. La principal característica que los distingue es su alcance: la SOA es un enfoque de arquitectura para toda la empresa, mientras que los microservicios son una estrategia de implementación dentro de los equipos de desarrollo de aplicaciones. 

Además, la comunicación con sus respectivos elementos también es diferente. La SOA utiliza un ESB, y los microservicios se pueden comunicar entre sí sin estado, a través de las API que no dependen de un lenguaje. La independencia de las API también permite que los equipos de desarrollo puedan elegir con qué herramientas desean trabajar. En este sentido, los microservicios pueden ser más adaptables y flexibles.

La SOA también suele confundirse con el Software como servicio (SaaS), el cual es una forma de cloud computing que ofrece una aplicación en la nube a los usuarios, junto con toda su infraestructura de TI y plataformas subyacentes. En la arquitectura orientada a los servicios, los proveedores pueden ofrecer servicios web como aplicaciones de SaaS. Por lo general, un proveedor de nube, como AWS, Azure o IBM Cloud, gestiona el entorno en el cual se aloja esta aplicación. 

Los usuarios utilizan un explorador web en sus computadoras o dispositivos móviles para interactuar con el software y pueden conectarlo con otras funciones por medio de API (p. ej., las API de REST o de SOAP).

Red Hat y los microservicios

Debido a los avances en la tecnología de contenedores, los microservicios se convirtieron en la base para las aplicaciones originales de la nube. Se trata de microservicios sin conexión directa que se implementan en los contenedores de Linux y se conectan por medio de API o de una red de servicios para el enrutamiento de los mensajes. 

Cada elemento implementa una función empresarial, y los pequeños equipos de DevOps que utilizan flujos de trabajo como la integración y la distribución continuas (CI/CD) se encargan de desarrollarlos de manera independiente. Esto permite que los sistemas de software se desarrollen más rápido, se implementen de forma automática y se actualicen con regularidad, sin las limitaciones que presentan los ciclos monolíticos.  

Red Hat cuenta con una cartera de productos open source que incluye Red Hat®Enterprise Linux® y Red Hat OpenShift, y le permite asociarse con las empresas que desean trasladar su infraestructura y el desarrollo de las aplicaciones al entorno dinámico y adaptable del cloud computing de forma progresiva, sin dejar de aprovechar al máximo su infraestructura actual. 

Aún queda mucho que aprender de los microservicios y de Red Hat