Mira la clase

La clase grabada de este módulo, con subtítulos.

JSON, YAML y APIs
Teoría
Submódulos

Objetivos de Aprendizaje

Al finalizar este módulo podrás: Comprender la configuración como código y su importancia en la automatización de entornos.
Dominar: Formatos de datos (JSON, YAML, XML), variables de entorno, plantillas y generación automática de configuraciones.
Aplicar: Crear configuraciones reutilizables, versionadas y validadas para diferentes entornos de desarrollo.

9.1 ¿Por qué Configuración como Código?

El Problema de la Configuración Manual

Imagina que cada vez que quieras configurar un servidor, tengas que hacer clic en cientos de opciones diferentes. Es como tener que armar un mueble sin instrucciones cada vez que te mudas. La configuración como código resuelve exactamente este problema.
Ejemplo práctico:
En lugar de configurar manualmente una base de datos en cada servidor, escribes un archivo que dice: "Quiero PostgreSQL versión 14, con 2GB de memoria, puerto 5432, y estas credenciales". ¡Una vez escrito, funciona en cualquier lugar!

Los Tres Pilares Fundamentales

1. Repetibilidad: Hacer lo mismo muchas veces sin errores. Es como tener una receta de cocina perfecta que siempre da el mismo resultado delicioso.

2. Versionado: Control de cambios en el tiempo. Sabes exactamente qué cambió, cuándo y por qué. Como un historial médico de tus sistemas.

3. Documentación: El código mismo explica qué hace cada cosa. No más "misterios" de configuración que nadie entiende.

9.2 Formatos de Datos

JSON: El Formato de Internet

JSON (JavaScript Object Notation) es como el "idioma universal" de las aplicaciones web. Casi todo lo entiende, es compacto y eficiente.
{ "aplicacion": "mi-app", "version": "1.2.3", "configuracion": { "puerto": 8080, "debug": true, "base_datos": { "host": "localhost", "nombre": "mi_bd" } } }

Ventajas

  • Soporte universal
  • Compacto y rápido
  • Fácil de parsear

Desventajas

  • No permite comentarios
  • Menos legible para humanos
  • Estricto con la sintaxis

YAML: El Formato Humano

YAML es como JSON pero "amigable para humanos". Usa espacios en lugar de llaves y es mucho más fácil de leer y escribir.
# Configuración de mi aplicación aplicacion: mi-app version: 1.2.3 configuracion: puerto: 8080 debug: true # Configuración de base de datos base_datos: host: localhost nombre: mi_bd # Comentarios permitidos! conexiones_maximas: 10

¿Cuándo Usar Cada Uno?

Situación Formato Recomendado Razón
APIs y servicios web JSON Rápido, compacto, soporte universal
Archivos de configuración YAML Legible, permite comentarios
Documentos complejos XML Validación estricta, namespaces
Variables de entorno Texto plano Formato key=value simple

9.3 Variables de Entorno

Configuración Sin Hardcodear

Las variables de entorno son como "settings globales" que tu aplicación puede leer. Es la diferencia entre tener todo "quemado" en el código vs. poder cambiar comportamientos sin tocar una línea de código.
Ejemplo práctico:
En lugar de escribir "conectar a la base de datos en 192.168.1.100", escribes "conectar a la base de datos en $DB_HOST". Luego defines DB_HOST=192.168.1.100 en desarrollo y DB_HOST=prod-server.com en producción.

Diferentes Ambientes

Tu aplicación viaja por diferentes "mundos": desarrollo (tu laptop), pruebas (servidor de QA), y producción (el servidor real). Cada mundo necesita configuraciones diferentes, pero el mismo código.
# Desarrollo (.env.development) DB_HOST=localhost DB_NAME=mi_app_dev DEBUG=true LOG_LEVEL=debug # Producción (.env.production) DB_HOST=prod-cluster.company.com DB_NAME=mi_app_prod DEBUG=false LOG_LEVEL=error

9.4 Plantillas y Generación

DRY: Don't Repeat Yourself

Si te encuentras copiando y pegando configuraciones similares, es momento de usar plantillas. Es como tener un "molde para galletas" - defines la forma una vez y generas miles de galletas idénticas.
Ejemplo práctico:
En lugar de crear 10 archivos de configuración casi idénticos para 10 microservicios, creas una plantilla que dice "Servicio {{nombre}} en puerto {{puerto}} con base de datos {{db_name}}" y generas automáticamente todos los archivos.

Validación: Asegurar que Está Correcto

Antes de aplicar cualquier configuración, siempre valida que esté bien formada. Es como revisar la receta antes de cocinar - mejor detectar errores antes de que explote todo.