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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.