Arquitectura Orientada a Servicios (SOA)
En el desarrollo de aplicaciones modernas, los sistemas ya no se construyen como aplicaciones monolíticas aisladas. Actualmente, las aplicaciones se comunican entre sí, intercambian información y reutilizan funcionalidades mediante servicios.
La Arquitectura Orientada a Servicios (SOA) surge como una solución para construir sistemas flexibles, escalables e interoperables, siendo ampliamente utilizada en entornos empresariales y como base de arquitecturas modernas como los microservicios.
¿Qué es la Arquitectura Orientada a Servicios?
La Arquitectura Orientada a Servicios (Service-Oriented Architecture) es un estilo arquitectónico en el cual las funcionalidades de un sistema se organizan en forma de servicios independientes, accesibles a través de una red.
Definición
SOA es una arquitectura que permite construir aplicaciones a partir de servicios reutilizables, independientes y comunicados mediante protocolos estándar.
Un servicio es una unidad de software que:
- Realiza una función específica del negocio
- Está desacoplada de otros servicios
- Se comunica mediante mensajes
- Puede ser consumida por diferentes aplicaciones
Componentes principales de SOA
Proveedor de servicios (Service Provider)
- Implementa la lógica del servicio
- Publica la funcionalidad disponible
- Define cómo puede ser consumido
Consumidor de servicios (Service Consumer)
- Aplicación o sistema que utiliza el servicio
- No depende de la implementación interna
Registro de servicios (Service Registry)
- Directorio donde se publican los servicios disponibles
- Permite descubrir servicios
- Ejemplo: UDDI
Principios de diseño de los servicios
Para que una arquitectura SOA sea efectiva, los servicios deben cumplir con ciertos principios de diseño.
Bajo acoplamiento
Los servicios deben tener pocas dependencias entre sí.
Alta cohesión
Cada servicio debe cumplir una función clara y específica.
Reutilización
Un servicio debe poder ser utilizado por múltiples sistemas o aplicaciones.
Autonomía
Cada servicio controla su propia lógica y datos.
Abstracción
Los detalles internos del servicio no son visibles para el consumidor.
Descubrimiento
Los servicios deben ser fácilmente identificables y localizables.
Interoperabilidad
Los servicios deben funcionar entre distintas plataformas y lenguajes.
Estándares relacionados con los servicios
La arquitectura SOA se apoya en estándares abiertos que permiten la comunicación entre sistemas.
XML (eXtensible Markup Language)
Lenguaje de marcado utilizado para estructurar y transportar datos.
<usuario>
<nombre>Luis</nombre>
<rol>Administrador</rol>
</usuario>
Actividad: Identificando servicios en una arquitectura SOA
Objetivo
Identificar los elementos principales de una arquitectura orientada a servicios (SOA), reconociendo servicios, consumidores y estándares de comunicación.
Duración
20 a 30 minutos
Instrucciones
-
Elige uno de los siguientes sistemas:
- Sistema escolar
- Tienda en línea
- Banco
- Hospital
-
Identifica tres servicios que podrían formar parte de ese sistema.
-
Completa la siguiente tabla para cada servicio identificado:
| Servicio | ¿Qué hace? | ¿Quién lo consume? | Estándar (SOAP / REST) |
|---|---|---|---|
Ejemplo (Sistema escolar)
| Servicio | ¿Qué hace? | ¿Quién lo consume? | Estándar |
|---|---|---|---|
| Autenticación | Valida usuarios | App Web / App Móvil | REST |
| Alumnos | Gestiona información de alumnos | App Web | REST |
| Pagos | Procesa pagos | App Web | SOAP |