YAML es un formato de serialización de datos creado en el año 2001 por Clark Evans, Ingy döt Net y Oren Ben-Kiki.
Su nombre proviene originalmente de Yet Another Markup Language (Otro lenguaje de marcado más). Sin embargo, poco tiempo después los propios creadores aclararon que en realidad YAML no debe entenderse como un lenguaje de marcado, sino como un lenguaje de serialización de datos, y modificaron el acrónimo a:
👉 YAML Ain''t Markup Language (YAML no es un lenguaje de marcado).
Con esto quisieron remarcar que la intención principal no es dar formato al texto (como XML) sino representar datos estructurados de una forma sencilla, legible para humanos y fácil de procesar por las computadoras.
YAML se compara habitualmente con XML y JSON, que son otros formatos muy usados para representar datos. Veamos las principales diferencias:
Ejemplo de una misma lista de productos en JSON y YAML:
JSON:
{
"productos": [
{ "codigo": 1, "descripcion": "Teclado", "precio": 15000 },
{ "codigo": 2, "descripcion": "Mouse", "precio": 9000 }
]
}
YAML:
productos:
- codigo: 1
descripcion: "Teclado"
precio: 15000
- codigo: 2
descripcion: "Mouse"
precio: 9000
Ejemplo en XML vs YAML:
XML:
<productos>
<producto>
<codigo>1</codigo>
<descripcion>Teclado</descripcion>
<precio>15000</precio>
</producto>
<producto>
<codigo>2</codigo>
<descripcion>Mouse</descripcion>
<precio>9000</precio>
</producto>
</productos>
YAML:
productos:
- codigo: 1
descripcion: Teclado
precio: 15000
- codigo: 2
descripcion: Mouse
precio: 9000
Hoy en día YAML se ha convertido en un estándar de facto para la definición de configuraciones en múltiples herramientas. Algunos de los usos más importantes son:
En proyectos modernos, la mayoría de frameworks y herramientas usan YAML para definir parámetros de configuración. Ejemplo: application.yml
en Spring Boot.
Es muy utilizado en Docker Compose (docker-compose.yml
) y Kubernetes (deployment.yaml
, service.yaml
). Permite definir contenedores, servicios, redes y volúmenes en un solo archivo legible.
GitHub Actions, GitLab CI/CD y Azure DevOps utilizan archivos .yml
para definir flujos de integración continua y despliegue automatizado.
En APIs y microservicios puede emplearse para configurar esquemas, plantillas o datos iniciales. Aunque JSON sigue siendo más popular para transmisión de datos, YAML se prefiere en los archivos de configuración que los acompañan.
En resumen: YAML es un formato de datos pensado para ser simple, legible por humanos y ampliamente adoptado en configuraciones y DevOps.