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