Skip to content

Clase 17 — Tema 9: DevOps (cultura, origen y prácticas)

Resumen Ejecutivo

Última clase de temario. Se cubre el Tema 9: DevOps, un tema "cultural" y descriptivo:

  1. Qué es DevOps: una cultura (no un puesto ni una herramienta) que unifica Desarrollo (Dev) y Operaciones (Ops), apoyada en la agilidad y sin olvidar la calidad (QA).
  2. Relación con la agilidad: la agilidad cierra el hueco cliente↔desarrollo; DevOps cierra además el hueco desarrollo↔operaciones y añade la retroalimentación desde producción.
  3. Origen histórico: Andrew Shafer y Patrick Debois (Agile Conference 2008), los 10+ despliegues diarios de Flickr (2009) y los DevOps Days (Gante, 2010).
  4. Siete prácticas fundamentales: gestión de configuración, integración continua, pruebas automatizadas, infraestructura como código, entrega continua, despliegue continuo y monitorización.

Las clases restantes son talleres de dudas + corrección de la actividad 3. Aviso del profesor: muchos trabajos fueron "clónicos" o generados por IA (patrón Strategy mal aplicado, temas de gestión de tareas/finanzas/deportes) sin mirar el temario.


Conceptos Clave

  • DevOps: cultura que unifica Dev + Ops para reducir el tiempo entre introducir un cambio en el código y ponerlo en producción manteniendo la calidad. No es un rol ni una categoría de herramientas. ⚠️ EXAMEN
  • Las tres patas: Desarrollo ∩ Operaciones ∩ Calidad (QA). La calidad es el peligro al acelerar las releases. ⚠️ EXAMEN
  • Gestión de configuración: identificar, organizar y controlar las modificaciones del software y sus dependencias (Git, versiones, releases). ⚠️ EXAMEN
  • Integración continua (CI): procesos que se ejecutan ante cada cambio para validar que no se rompe nada; agnóstica a dónde se ejecuta (local, pipeline, servidor CI). ⚠️ EXAMEN
  • Pruebas automatizadas: práctica core que garantiza el resto del ciclo.
  • Infraestructura como código (IaC): definir recursos (cómputo, redes, firewalls) en archivos de texto/JSON, versionados. Enfoque declarativo vs imperativo. ⚠️ EXAMEN
  • Entrega continua ≠ Despliegue continuo: entregar/mostrar al cliente vs. pasar automáticamente a los usuarios finales. ⚠️ EXAMEN
  • Monitorización: cierra el bucle con retroalimentación desde producción (CloudWatch, CloudTrail). ⚠️ EXAMEN

Desarrollo del Temario

1. DevOps como cultura

DevOps une dos perfiles tradicionalmente separados: Dev (desarrollo) y Ops (operaciones). Es sobre todo una manera de enfocar el proceso y de trabajar en equipo, apoyada en herramientas pero no reducible a ellas.

  • Es la evolución del full stack developer: "todos sabemos un poco de todo". full stack → DevOps (asintóticamente).
  • No debería ser un puesto específico ("buscamos ingeniero DevOps" es discutible): lo que se busca es la cultura + dominio de herramientas.
  • No es una categoría de herramientas: una herramienta de CI no es "una herramienta DevOps"; usarla no implica tener cultura DevOps.

Surge por la agilidad (iteraciones cortas, implicación del cliente) y el paso a aplicaciones cloud que se actualizan constantemente, exigiendo respuesta rápida a errores y feedback de usuarios finales.

2. Las dos definiciones (⚠️ EXAMEN)

  1. Énfasis en las prácticas (como XP o CMMI): conjunto de prácticas que reducen el tiempo entre introducir un cambio en el código y ponerlo en producción, garantizando la calidad.
  2. Énfasis en cultura/procesos: cultura, principios y procesos que automatizan y agilizan el flujo de extremo a extremo, desde el código hasta la entrega de cambios a usuarios en producción.

3. Relación con la agilidad

flowchart LR
    subgraph Tradicional["Pre-2000 (cascada)"]
        c1[Cliente/Requisitos] -->|documento| d1[Desarrollo] -->|entrega| o1[Operaciones]
    end
    subgraph Agil["Agilidad"]
        c2[Cliente] <-->|comunicación continua| d2[Desarrollo + QA]
    end
    subgraph DevOpsEra["DevOps"]
        c3[Cliente] <--> d3[Desarrollo] <--> o3[Operaciones]
        o3 -.retroalimentación/monitorización.-> d3
    end
  • Cascada: el cliente manda especificaciones a Desarrollo y este entrega a Operaciones (gente distinta, sin conocimiento profundo del software → gap).
  • Agilidad: llena el gap cliente ↔ desarrollo (comunicación fluida, continua), pero se queda en el despliegue; no dice nada de cómo gestionar el repositorio, CI, pruebas (Scrum no; XP sí entra en prácticas de ingeniería).
  • DevOps: llena el gap desarrollo ↔ operaciones (de hecho, son las mismas personas) y cierra el ciclo con retroalimentación desde producción.

En un equipo DevOps no debería haber diferencia de roles: propiedad del código compartida (estilo XP); cualquier miembro entiende y puede modificar todo el código.

4. Origen histórico

  • 2001: Manifiesto Ágil.
  • 2008 (Agile Conference): Andrew Shafer da una charla de "infraestructura ágil" a la que solo asiste una persona: Patrick Debois. De esa conversación nace el concepto. (La infraestructura empezaba a gestionarse vía terminal/web y virtualización, no solo comprando máquinas.)
  • 2009: ingenieros de Flickr explican cómo hacen 10+ despliegues diarios.
  • 2010: Patrick Debois organiza los primeros DevOps Days en Gante. Hoy hay conferencias por todo el mundo.
  • Lectura recomendada: la novela The Phoenix Project (resumida por Javier Garzás).

5. Las siete prácticas fundamentales ⚠️ EXAMEN

# Práctica Idea
1 Gestión de configuración Controlar versiones, dependencias, releases (Git, GitFlow). Participa todo el equipo
2 Integración continua (CI) Procesos que validan cada cambio antes de compartir/desplegar
3 Pruebas automatizadas Práctica core: garantizan que lo demás vaya bien
4 Infraestructura como código (IaC) Definir infraestructura en texto/JSON (declarativo o imperativo), versionada
5 Entrega continua Entregar/mostrar el incremento al cliente con frecuencia
6 Despliegue continuo Paso a producción automático, sin intervención humana
7 Monitorización Retroalimentación desde producción (cuellos de botella, errores)

5.1 Integración continua

Cúmulo de procesos que se ejecutan ante cada cambio en el código para un control de calidad. Es agnóstica a la implementación: pueden correr en tu máquina (evento pre-push), en un pipeline (GitLab), etc. El servidor CI da un ground truth común para todo el equipo, independientemente del SO de cada uno. Git es un sistema de control de versiones federado (múltiples copias del repo).

5.2 Pirámide de pruebas en el ciclo

Local (linters, análisis estático, unitarias, mocks) → servidor CI (todas las unitarias + integración) → entorno de desarrollo/staging (pruebas de aceptación, p.ej. con Gherkin) → producción (no funcionales: rendimiento, resiliencia, seguridad). A medida que se avanza, pesan más las pruebas no funcionales.

5.3 Entrega continua vs. despliegue continuo (⚠️ clave)

  • Entrega continua: el software se valida en un entorno cercano a producción; el cliente puede comprobar que es correcto, pero el paso final a los usuarios es manual. Suele haber dos decisiones: la técnica (equipo de desarrollo) y la de negocio (¿se pasa a los usuarios?).
  • Despliegue continuo: ese paso a producción es automático (cualquier merge a master puede llegar a los usuarios), gracias a una confianza total en la cobertura de pruebas. Es el ideal de DevOps (a falta de la monitorización). CI/CD = integración continua + despliegue continuo.

5.4 Monitorización

Cierra el bucle: detectar errores reportados por usuarios o, antes, mediante herramientas que detectan cuellos de botella, saturación o ralentización (CloudWatch, CloudTrail). Es también una vía de negocio de los proveedores cloud.


Preguntas de Autoevaluación

  1. ¿Por qué se dice que DevOps es una cultura y no un rol ni una herramienta?
  2. ¿Cuáles son las tres patas de DevOps y por qué la calidad es la crítica?
  3. ¿Qué gap llena la agilidad y cuál llena DevOps? ¿Por qué Scrum "se queda en el despliegue"?
  4. Da las dos definiciones de DevOps (énfasis en prácticas vs. en cultura/procesos).
  5. Cuenta el origen histórico: Shafer/Debois (2008), Flickr (2009), DevOps Days (2010).
  6. Enumera las siete prácticas fundamentales de DevOps.
  7. ¿Qué es la integración continua y por qué es "agnóstica a la implementación"?
  8. Diferencia entre entrega continua y despliegue continuo. ¿Qué dos decisiones intervienen?
  9. ¿Qué es la infraestructura como código? Enfoque declarativo vs imperativo.
  10. ¿Para qué sirve la monitorización y qué herramientas cloud la soportan?