Uso en frameworks y lenguajes

Además del mundo DevOps, YAML es ampliamente utilizado como formato de configuración o fuente de datos en distintos lenguajes y frameworks. A continuación, vemos tres casos comunes: Spring Boot (Java), Python con PyYAML y Node.js con js-yaml.

12.1 Spring Boot

Spring Boot soporta application.properties o application.yml. El formato YAML resulta más legible gracias a su estructura jerárquica.

Ejemplo application.yml:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/miappdb
    username: root
    password: 1234
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

logging:
  level:
    org.springframework: INFO
    com.miapp: DEBUG

Claves: server.port configura el puerto; spring.datasource define la conexión a la base; spring.jpa controla Hibernate; logging.level ajusta niveles de log por paquete. Es habitual crear perfiles como application-dev.yml o application-prod.yml.

12.2 Python con PyYAML

Instalación: pip install pyyaml

Archivo config.yml:

app:
  nombre: Mi Aplicación
  version: 1.0
  debug: true

database:
  host: localhost
  port: 5432
  user: admin
  password: secreto

Lectura en Python:

import yaml

with open("config.yml", "r", encoding="utf-8") as f:
    config = yaml.safe_load(f)

print("Nombre de la app:", config["app"]["nombre"])
print("Modo debug:", config["app"]["debug"])
print("Base de datos:", config["database"]["host"], config["database"]["port"])

yaml.safe_load() convierte el YAML en un diccionario. Para escribir YAML:

data = {
    "usuarios": [
        {"nombre": "Ana", "rol": "admin"},
        {"nombre": "Marcos", "rol": "editor"}
    ]
}

with open("usuarios.yml", "w", encoding="utf-8") as f:
    yaml.dump(data, f, allow_unicode=True)

12.3 Node.js con js-yaml

Instalación: npm install js-yaml

Archivo config.yml:

server:
  port: 3000

auth:
  enabled: true
  secret: "clave-secreta"

Lectura en Node.js:

const fs = require("fs");
const yaml = require("js-yaml");

try {
  const fileContents = fs.readFileSync("config.yml", "utf8");
  const config = yaml.load(fileContents);

  console.log("Servidor en puerto:", config.server.port);
  console.log("Auth habilitado:", config.auth.enabled);
} catch (e) {
  console.error("Error al leer YAML:", e);
}

Para generar YAML:

const usuarios = [
  { nombre: "Ana", rol: "admin" },
  { nombre: "Marcos", rol: "editor" }
];

const yamlString = yaml.dump({ usuarios });
fs.writeFileSync("usuarios.yml", yamlString, "utf8");

12.4 Comparación rápida

Lenguaje / Framework Librería / Soporte Uso principal
Spring Boot (Java) Soporte nativo con application.yml Configuración empresarial
Python PyYAML (pip install pyyaml) Lectura/escritura de configuraciones
Node.js js-yaml (npm install js-yaml) Configuraciones en apps web o CLI

12.5 Buenas prácticas

  • Versiona los archivos YAML junto con el código del proyecto.
  • Evita credenciales en texto plano; usa variables de entorno o gestores de secretos.
  • Valida el YAML antes de usarlo para evitar errores de indentación.
  • Separa configuraciones por entornos (dev, test, prod).

En síntesis, YAML no es solo clave en DevOps: frameworks como Spring Boot y librerías como PyYAML y js-yaml permiten manejar configuraciones limpias y portables en distintas plataformas.