21. Diagramas de despliegue: nodos, dispositivos, servidores y artefactos

21.1 Introducción

El diagrama de despliegue es un diagrama UML de estructura que muestra dónde se ejecuta el software y cómo se distribuyen sus artefactos en nodos físicos o virtuales. Permite representar servidores, dispositivos, máquinas virtuales, contenedores, redes, bases de datos y conexiones entre partes de la infraestructura.

Mientras el diagrama de componentes muestra módulos de software y dependencias, el diagrama de despliegue muestra el entorno donde esos módulos se ejecutan. Es especialmente útil cuando la distribución física o lógica afecta rendimiento, seguridad, disponibilidad, comunicación o mantenimiento.

21.2 Qué representa un diagrama de despliegue

Un diagrama de despliegue representa la arquitectura de ejecución de un sistema. Muestra nodos y artefactos. Los nodos son recursos de ejecución, como servidores, dispositivos, contenedores o máquinas virtuales. Los artefactos son elementos de software desplegados, como aplicaciones, servicios, archivos ejecutables, bibliotecas o paquetes.

Por ejemplo, una aplicación web puede ejecutarse en un servidor de aplicaciones, comunicarse con una base de datos en otro servidor y usar un servicio externo de pagos a través de Internet.

Un diagrama de despliegue responde: dónde se ejecuta el software y cómo se conectan los elementos de infraestructura.

21.3 Distribución del software en infraestructura

El diagrama de despliegue permite observar nodos de ejecución, artefactos instalados y rutas de comunicación. Esta vista ayuda a comprender cómo una solución pasa del diseño lógico a un entorno donde realmente se ejecuta.

Diagrama de despliegue UML con nodos, servidores, dispositivos, artefactos y conexiones

21.4 Nodo

Un nodo representa un recurso donde puede ejecutarse o almacenarse software. Puede ser un servidor físico, una máquina virtual, un contenedor, un dispositivo móvil, un navegador, un equipo embebido o un servicio de infraestructura.

En UML, el nodo suele dibujarse como un cubo o una caja tridimensional. Puede contener artefactos desplegados o conectarse con otros nodos mediante rutas de comunicación.

21.5 Dispositivo

Un dispositivo es un tipo de nodo físico. Puede ser una computadora, un teléfono, una terminal de autoservicio, un sensor, un servidor físico o cualquier hardware que participe en la ejecución del sistema.

Por ejemplo, en un sistema de monitoreo, los sensores pueden enviar datos a un servidor central. En una aplicación móvil, el teléfono del usuario puede representarse como un nodo dispositivo.

21.6 Entorno de ejecución

Un entorno de ejecución es un nodo que ofrece capacidad para ejecutar software. Puede ser un servidor de aplicaciones, una máquina virtual, un contenedor, un motor de base de datos, un navegador o una plataforma de ejecución.

Por ejemplo, un artefacto Aplicación web puede ejecutarse dentro de un servidor de aplicaciones, y un artefacto Servicio de pedidos puede ejecutarse dentro de un contenedor.

21.7 Artefacto

Un artefacto representa una pieza física o generada de software. Puede ser un archivo ejecutable, una biblioteca, un paquete, un archivo WAR, una imagen Docker, un script, un archivo de configuración o una aplicación instalable.

Los artefactos se despliegan en nodos. Por ejemplo, app-web.war puede estar desplegado en un servidor de aplicaciones, y servicio-pedidos.jar puede estar desplegado en un contenedor.

21.8 Relación entre componente y artefacto

Un componente representa una unidad lógica de software. Un artefacto representa una unidad física o generada. Un componente puede manifestarse mediante uno o varios artefactos.

Por ejemplo, el componente Servicio de pedidos puede manifestarse como una imagen de contenedor, un archivo ejecutable o un paquete desplegable. El diagrama de componentes muestra la estructura modular; el diagrama de despliegue muestra dónde se ejecuta.

21.9 Rutas de comunicación

Las rutas de comunicación muestran conexiones entre nodos. Pueden representar redes, protocolos, enlaces físicos, canales seguros o comunicaciones lógicas. Pueden etiquetarse con información como HTTP, HTTPS, TCP, JDBC, REST, mensajería o VPN.

No siempre es necesario indicar el protocolo. Se agrega cuando ayuda a comprender decisiones de arquitectura, seguridad o integración.

21.10 Base de datos

Una base de datos puede representarse como un nodo, un artefacto o un componente externo, según el nivel del diagrama. En una vista de despliegue, suele mostrarse como un servidor o servicio de base de datos conectado con la aplicación.

Por ejemplo, un servidor de aplicaciones puede comunicarse con un servidor PostgreSQL mediante una conexión protegida dentro de una red interna.

21.11 Sistemas externos

Los sistemas externos también pueden aparecer en un diagrama de despliegue si participan en la ejecución. Por ejemplo, una pasarela de pagos, un proveedor de correo, un sistema de identidad, un servicio de mapas o una API gubernamental.

Representarlos permite visualizar dependencias fuera del sistema propio y analizar riesgos de disponibilidad, latencia, seguridad e integración.

21.12 Despliegue en capas

Muchos sistemas se despliegan en capas: cliente, servidor de aplicaciones, servicios internos y base de datos. El diagrama de despliegue puede mostrar esa distribución y las conexiones permitidas entre capas.

Por ejemplo, un navegador se comunica con un frontend web mediante HTTPS. El frontend se comunica con una API. La API accede a una base de datos en una red interna. Esta vista ayuda a comprender separación y seguridad.

21.13 Contenedores y nube

En sistemas modernos, los nodos pueden representar contenedores, clústeres, servicios administrados, balanceadores de carga o funciones en la nube. UML puede modelar estas estructuras siempre que el nivel de detalle sea útil.

Por ejemplo, un clúster puede contener varios contenedores con instancias de un servicio, conectados a una base de datos administrada y a una cola de mensajes.

21.14 Seguridad y zonas de red

El diagrama de despliegue puede mostrar zonas como red pública, red privada, DMZ o segmento interno. Esto ayuda a analizar qué nodos son accesibles desde Internet y cuáles deberían permanecer protegidos.

También puede indicar conexiones seguras, firewalls o restricciones de acceso si son relevantes para comprender la solución.

21.15 Ejemplo: aplicación web simple

Una aplicación web simple puede incluir un navegador del usuario, un servidor web, un servidor de aplicaciones y una base de datos. El navegador se comunica con el servidor web mediante HTTPS. El servidor de aplicaciones consulta la base de datos mediante una conexión interna.

El diagrama de despliegue permite ver rápidamente qué partes existen y cómo se conectan durante la ejecución.

21.16 Ejemplo: sistema de turnos médicos

Un sistema de turnos médicos puede desplegarse con una aplicación web, una API de turnos, una base de datos, un servicio de notificaciones y un proveedor externo de correo o mensajería. La API puede ejecutarse en un servidor o contenedor, y la base de datos en un nodo separado.

Esta vista ayuda a analizar disponibilidad, comunicación con servicios externos y separación de responsabilidades en infraestructura.

21.17 Cuándo usar diagramas de despliegue

Conviene usar diagramas de despliegue cuando la ubicación del software importa. Son útiles para explicar arquitectura de ejecución, infraestructura, conexiones, entornos, integración con servicios externos, seguridad, disponibilidad o distribución entre servidores.

No son necesarios para explicar reglas de negocio, clases internas o flujos de trabajo. Para eso convienen otros diagramas UML.

21.18 Criterios de revisión

  • ¿Los nodos representan recursos reales o relevantes de ejecución?
  • ¿Los artefactos están ubicados en los nodos correctos?
  • ¿Las conexiones muestran comunicaciones importantes?
  • ¿Se identifican sistemas externos críticos?
  • ¿El nivel de detalle es adecuado para la pregunta del diagrama?
  • ¿Se distinguen zonas, redes o protocolos cuando aportan claridad?
  • ¿La vista ayuda a comprender despliegue, operación o infraestructura?

21.19 Errores frecuentes

  • Confundir componentes lógicos con nodos de ejecución.
  • No mostrar dónde se despliegan los artefactos importantes.
  • Omitir conexiones críticas entre nodos.
  • Incluir detalles de infraestructura que no aportan al objetivo.
  • No representar sistemas externos relevantes.
  • Mostrar protocolos o tecnologías sin confirmar si realmente se usan.
  • Usar el diagrama de despliegue para explicar lógica de negocio.

21.20 Qué debes recordar de este tema

  • El diagrama de despliegue muestra dónde se ejecuta el software.
  • Los nodos representan recursos de ejecución, físicos o virtuales.
  • Los artefactos representan piezas desplegables de software.
  • Las rutas de comunicación muestran conexiones entre nodos.
  • Este diagrama ayuda a analizar infraestructura, seguridad, disponibilidad e integración.
  • Debe usarse cuando la distribución del sistema sea relevante.

21.21 Conclusión

El diagrama de despliegue conecta el modelo de software con el entorno donde se ejecuta. Permite visualizar nodos, artefactos y comunicaciones, lo que resulta clave para comprender infraestructura, operación e integración con otros sistemas.

En el próximo tema veremos diagramas de estructura compuesta, orientados a partes internas, puertos y conectores.