Arquitectura orientada a servicios (SOA)

Introducción a SOA

SOA es un paradigma de arquitectura de software moderno para desarrollar aplicaciones como un conjunto de unidades de software modulares denominadas servicios. En SOA, los servicios son autónomos, modulares y relativamente independientes. Este enfoque permite desarrollar aplicaciones complejas y distribuidas en las que puede actualizar componentes individuales, en lugar de aplicaciones monolíticas completas. Una pila de software SOA típica incluye software de aplicación que consta de servicios, servicios de plataforma y middleware. Estos servicios se ejecutan en hardware de alto rendimiento o equipos virtuales.

Pila de software SOA genérica con capas de arriba a abajo (software de aplicación, middleware y software básico) que se ejecuta en hardware de alto rendimiento.

Pila de software SOA genérica.

Comunicación orientada a servicios (SOC)

Las aplicaciones basadas en SOA utilizan interfaces orientadas a servicios para la comunicación orientada a servicios a fin de proporcionar y utilizar funcionalidades para intercambiar información a través de mensajes. En una SOA, los servicios desempeñan el papel de clientes o servidores. Cada servicio de cliente o servidor se implementa en software como un componente. Los puntos de conexión entre los componentes de cliente y servidor se conocen como puertos cliente/servidor, y conforman las interfaces orientadas a servicios.

Dos aplicaciones orientadas a servicios que se comunican entre sí por medio de mensajes.

Comunicación orientada a servicios empleando mensajes.

Para facilitar el intercambio de información, los componentes de cliente y servidor utilizan diversos patrones de comunicación orientada a servicios, tales como publicar-suscribir, solicitud-respuesta y enviar-olvidar. Estos patrones pueden ser asíncronos o aperiódicos, que es una característica clave de SOC. El modelado basado en eventos se puede realizar con Stateflow® y SimEvents®. Además, la librería Messages & Events de Simulink® permite modelar, simular y generar código C++ para aplicaciones con comunicación basada en mensajes.

Patrones de interfaz de comunicación orientada a servicios que incluyen métodos (solicitud-respuesta y enviar-olvidar), eventos y campos.

Patrones de interfaz de comunicación orientada a servicios.

Flujo de trabajo de SOA

Con un flujo de trabajo de diseño basado en modelos, puede crear aplicaciones orientadas a servicios de la siguiente manera:

  • Especificando requisitos con Requirements Toolbox™
  • Creando arquitecturas SOA con System Composer™
  • Modelando y simulando servicios y componentes en Simulink
  • Importando servicios y componentes existentes para reutilizarlos
  • Generando código de producción C++ con Embedded Coder®
  • Integrando la aplicación SOA completa
  • Desplegando aplicaciones SOA en dispositivos edge y la nube

Extensibilidad de SOA

Los servicios se pueden reutilizar y actualizar. Permiten crear aplicaciones escalables orientadas a servicios empleando principios de desarrollo ágil de software, tales como sistemas que admiten actualizaciones inalámbricas (OTA) para mantenerse siempre actualizados.

Flujo de trabajo de vehículo definido por software que muestra la secuencia de pasos y herramientas asociadas para acelerar el tiempo de recuperación tras incidentes.

Flujo de trabajo de vehículo definido por software para acelerar el tiempo de recuperación tras incidentes.

Casos prácticos de SOA

En sistemas definidos por software que incorporan autonomía, conectividad y electrificación, SOA desempeña un papel fundamental como marco elemental. También se utilizan arquitecturas SOA para crear sistemas de sistemas, sistemas de eventos discretos, sistemas multiagente y sistemas distribuidos en los sectores aeroespacial, automoción, automatización industrial e IoT, dispositivos médicos y robótica.

Los siguientes componentes han surgido para respaldar estos sectores: marcos de arquitectura de software, estándares de middleware, y protocolos de comunicación basados en SOA y comunicación orientada a servicios. Algunos ejemplos de estos marcos y estándares son AUTOSAR Adaptive, DDS, ROS/ROS2, FACE, SOME/IP, MOSA, MQTT y OPC UA.

SOA en automoción

SOA está muy presente en el sector de la automoción con la llegada de los vehículos definidos por software (SDV). Los SDV integran aplicaciones basadas en señales y orientadas a servicios en arquitecturas EE más recientes con controladores zonales y computadores de vehículos. Con System Composer y Simulink, se pueden modelar arquitecturas SOA, simularlas y generar código de producción C++ antes de desplegarlas como servicios modulares en dispositivos edge y la nube. Además, estos servicios se pueden actualizar a través de actualizaciones de software inalámbricas durante todo el ciclo de vida del vehículo para mejorar la experiencia del cliente. SOA se ha incorporado en los estándares de la industria mencionados anteriormente, así como en marcos internos.

Ejemplo de automoción que muestra una pila de software AUTOSAR Classic y una pila de software AUTOSAR Adaptive conectadas a la nube.

Ejemplo de automoción: pilas de software AUTOSAR Classic y AUTOSAR Adaptive.

SOA en el sector aeroespacial y de defensa

En el sector aeroespacial y de defensa, SOA aparece en el estándar Future Airborne Capability Environment (FACE™), que forma parte de la iniciativa de estandarización Modular Open Systems Approach (MOSA). FACE utiliza segmentos de servicios de transporte (TSS) para comunicación orientada a servicios. Con Simulink y DDS Blockset, puede modelar y simular aplicaciones para el estándar FACE, importar IDL de FACE para TSS de DDS, simular comunicación TSS de FACE, y generar código de producción C++ y desplegarlo para aplicaciones FACE.

Flujo de trabajo basado en IDL de FACE que muestra importación de IDL, visualización y edición del diccionario de datos de interfaz, modelado de algoritmos, generación de código C++ y su despliegue para aplicaciones FACE.

Flujo de trabajo basado en IDL de FACE desde importación hasta despliegue.

También puede consultar estos temas: System Composer, Simulink, Stateflow