Alejandría

Busca en Alejandría

Herramientas

D2

Lenguaje y herramienta de diagramas como código para documentar sistemas desde texto.

01

En pocas palabras

Lenguaje y herramienta de diagramas como código para documentar sistemas desde texto.

Qué problema resuelve

Diagramas manuales difíciles de revisar, versionar y mantener junto al software.

Cuándo utilizarlo

Documentación de arquitectura. Ejemplo: representar servicios, colas y bases de datos.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Trial (valoración de la edición aportada).

Cómo funciona

Describe nodos, conexiones y estilos mediante sintaxis declarativa. El renderizador calcula la disposición con motores compatibles y genera una representación visual.

Ejemplo de uso

Un archivo puede declarar api -> cola: publica y cola -> worker: procesa. Versionarlo con la implementación y generar la imagen en el proceso de documentación.

Sintaxis D2 ilustrativa:

api -> cola: publica
cola -> worker: procesa
worker -> base: almacena

Sintaxis esencial

direction: right

usuario: Solicitante {shape: person}

originacion: Originación {
  api: API de solicitudes {shape: rectangle}
  db: PostgreSQL {shape: cylinder}
  api -> db: lee y escribe
}

buro: Buró de crédito {style.stroke-dash: 3}

usuario -> originacion.api: envía solicitud (HTTPS)
originacion.api -> buro: consulta historial {style.stroke: red}
Elemento Sintaxis
Nodo con etiqueta id: Etiqueta
Conexión a -> b: texto, a <-> b, a -- b
Contenedor grupo: { hijo1; hijo2 } y referencia grupo.hijo1
Forma {shape: cylinder}, person, queue, cloud, sql_table, class
Estilo {style.fill: "#eef"; style.stroke-dash: 3}
Iconos {icon: https://…/postgres.svg}

Tipos de diagrama especiales

  • sql_table: tablas con columnas, tipos y claves para diagramas de datos.
  • class: diagramas de clases con atributos y métodos.
  • sequence_diagram: diagramas de secuencia con el mismo lenguaje.
  • Capas y escenarios: varias vistas en un archivo (por ejemplo, contexto y contenedores del modelo C4) con navegación entre ellas.

Renderizado

d2 arquitectura.d2 arquitectura.svg            # SVG
d2 --layout elk arquitectura.d2 out.png        # otro motor de layout
d2 --watch arquitectura.d2 out.svg             # servidor local con recarga
d2 --theme 200 arquitectura.d2 out.svg         # tema oscuro

Los motores de layout incluidos son dagre (por defecto) y ELK; TALA es un motor comercial opcional orientado a diagramas de software.

D2 frente a alternativas

Herramienta Fortalezas
Mermaid Se renderiza nativamente en GitHub, GitLab y muchas wikis
PlantUML Muy completo en UML, ecosistema maduro
Structurizr Modelo C4 con varias vistas desde un mismo modelo
D2 Sintaxis legible, layouts de calidad, estilos y contenedores anidados

Si el diagrama debe verse directamente en un README de GitHub, Mermaid es más práctico; para documentación generada (sitios, PDF) D2 suele producir resultados más cuidados.

Criterios de implementación

Mantener nombres y nivel de detalle comprensibles. Revisar licencia y disponibilidad de motores opcionales y proporcionar texto que explique las decisiones representadas.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.