Arquitectura orientada a servicios (SOA)

Introducción a la arquitectura orientada a servicios

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, middleware y servicios de plataforma. Estos servicios se ejecutan en hardware de alto rendimiento o equipos virtuales.

Pila de software SOA generalizada con capas de arriba a abajo (software de aplicación, middleware y software básico) ejecutada en hardware de alto rendimiento.

Pila de software SOA generalizada.

Comunicación orientada a servicios (SOC)

Las aplicaciones basadas en SOA emplean interfaces orientadas a servicios para SOC, y proporcionan y utilizan funcionalidades para intercambiar información a través de mensajes. En una arquitectura 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 denominan 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, como publicar-suscribir, solicitud-respuesta y enviar-olvidar. Estos patrones pueden ser síncronos o asíncronos, 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 tales como métodos (solicitud-respuesta y enviar-olvidar), eventos y campos.

Patrones de interfaz de comunicación orientada a servicios.

Flujo de trabajo de SOA

Puede crear aplicaciones orientadas a servicios con un flujo de trabajo de MBD que incluye estas actividades:

  • Especificar requisitos con Requirements Toolbox™
  • Desarrollar arquitecturas SOA con System Composer™
  • Modelar y simular servicios y componentes en Simulink
  • Importar servicios y componentes existentes para reutilizarlos
  • Generar código de producción C++ con Embedded Coder®
  • Integrar la aplicación SOA completa
  • Desplegar 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 necesarias 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.

Marcos de arquitectura de software, estándares de middleware, y protocolos de comunicación basados en SOA y SOC han surgido para respaldar estas industrias. 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 ha estado presente en el sector de automoción desde la introducción de 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. En el sector de la automoción, AUTOSAR es un estándar popular que utiliza metodología SOA en las plataformas Adaptive. Con AUTOSAR Blockset, puede modelar y simular aplicaciones de AUTOSAR Classic y Adaptive, y luego generar código C/C++ y realizar verificación con Embedded Coder. 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 de usuario. 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 Adaptive.

SOA en aeroespacio y defensa

En los sectores de aeroespacio y defensa, SOA integra 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 en 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 despliegue en aplicaciones FACE.

Flujo de trabajo basado en IDL de FACE, de importación a despliegue.

También puede consultar estos temas: System Composer, Simulink, Stateflow, Embedded Coder, AUTOSAR Blockset, DDS Blockset