Jonatan Matajonmatum.com
conceptosnotasexperimentosensayos
© 2026 Jonatan Mata. All rights reserved.v2.1.1
Conceptos

CI/CD

Continuous Integration y Continuous Delivery/Deployment — prácticas que automatizan la integración de código, testing y entrega a producción. Fundamento de la ingeniería de software moderna.

evergreen#devops#automation#testing#dx

CI/CD son dos prácticas complementarias que automatizan el camino del código desde el commit hasta producción. Juntas eliminan el «integration hell» y permiten releases frecuentes con confianza.

Integración Continua (CI)

Integrar código frecuentemente (mínimo diario) a una rama compartida, con verificación automática.

Principios

  1. Un solo repositorio — todo el código en un lugar
  2. Commits frecuentes — integrar cambios pequeños, no acumular
  3. Build automatizado — cada commit dispara build + tests
  4. Tests rápidos — feedback en minutos, no horas
  5. Arreglar builds rotos inmediatamente — prioridad máxima

Pipeline típico de CI

commit → build → lint → unit tests → integration tests → artifact
# Ejemplo GitHub Actions
jobs:
  ci:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'pnpm'
      - run: pnpm install --frozen-lockfile
      - run: pnpm lint
      - run: pnpm test
      - run: pnpm build

Continuous Delivery vs Continuous Deployment

Dos conceptos distintos que a menudo se confunden:

Continuous Delivery

El código puede ir a producción en cualquier momento — el deploy es manual pero el proceso está automatizado.

CI → staging auto → aprobación manual → producción

Continuous Deployment

El código va a producción automáticamente si pasa todos los checks — sin intervención humana.

CI → staging auto → producción auto
AspectoDeliveryDeployment
Deploy a producciónManual (botón)Automático
Frecuencia típicaDiaria/semanalMúltiples veces al día
RequiereTests confiablesTests + feature flags + monitoring
RiesgoMenorRequiere madurez

Pipeline completo

┌─────────────────────────────────────────────────────────────────┐
│                        CI/CD Pipeline                           │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────────────┤
│  Build  │  Test   │  Scan   │ Package │ Deploy  │   Monitor    │
├─────────┼─────────┼─────────┼─────────┼─────────┼──────────────┤
│ compile │ unit    │ SAST    │ docker  │ staging │ logs         │
│ lint    │ integ   │ DAST    │ helm    │ canary  │ metrics      │
│ deps    │ e2e     │ secrets │ artifact│ prod    │ alerts       │
└─────────┴─────────┴─────────┴─────────┴─────────┴──────────────┘

Stages explicados

  1. Build — compilar, verificar sintaxis, resolver dependencias
  2. Test — unit, integration, e2e (pirámide de testing)
  3. Scan — seguridad estática (SAST), dinámica (DAST), secretos
  4. Package — crear artefacto deployable (Docker image, binary, bundle)
  5. Deploy — staging → canary → producción
  6. Monitor — observabilidad post-deploy

Estrategias de deployment

Blue-Green

Dos entornos idénticos. Cambiar tráfico instantáneamente.

         ┌─────────┐
Users ───┤ Router  ├──► Blue (v1) ← activo
         └────┬────┘
              └──────► Green (v2) ← standby/nuevo

Rollback: cambiar router de vuelta a Blue.

Canary

Enviar porcentaje pequeño de tráfico a la nueva versión.

Users ──┬── 95% ──► v1 (estable)
        └── 5%  ──► v2 (canary)

Incrementar gradualmente si métricas son buenas.

Rolling

Actualizar instancias una por una.

[v1] [v1] [v1] [v1]  →  [v2] [v1] [v1] [v1]  →  [v2] [v2] [v2] [v2]

Métricas clave (DORA)

Las cuatro métricas de DevOps Research and Assessment:

MétricaEliteHighMediumLow
Deployment frequencyOn-demand (múltiples/día)Diario-semanalSemanal-mensualMensual+
Lead time for changes< 1 hora1 día - 1 semana1 semana - 1 mes1 mes+
Change failure rate0-15%16-30%31-45%46%+
Time to restore< 1 hora< 1 día< 1 semana1 semana+

Herramientas por categoría

CategoríaHerramientas
CI/CD PlatformsGitHub Actions, GitLab CI, Jenkins, CircleCI, Travis CI
Artifact RegistryDocker Hub, GitHub Packages, AWS ECR, Google Artifact Registry
InfrastructureTerraform, Pulumi, AWS CDK, CloudFormation
KubernetesArgoCD, Flux, Helm, Kustomize
TestingJest, Playwright, Cypress, k6
SecuritySnyk, Trivy, SonarQube, OWASP ZAP
MonitoringDatadog, Grafana, Prometheus, New Relic

Anti-patrones

  • Tests lentos — si CI tarda 30+ minutos, los desarrolladores evitan integrar
  • Flaky tests — tests que fallan aleatoriamente destruyen la confianza
  • Deploy manual — si requiere pasos manuales, se acumula trabajo
  • Sin rollback — cada deploy debe poder revertirse en minutos
  • Secrets en código — usar secret managers, nunca hardcodear
  • Ignorar alertas — alert fatigue lleva a ignorar problemas reales

¿Por qué importa?

CI/CD es el multiplicador de velocidad más importante en ingeniería de software. Sin CI, los bugs se acumulan y los merges son dolorosos. Sin CD, el código aprobado espera días o semanas para llegar a producción. Las métricas DORA demuestran consistentemente que los equipos con CI/CD maduro entregan más rápido y con mayor estabilidad.

Referencias

  • Continuous Delivery — Jez Humble & David Farley, 2010. El libro que definió la práctica.
  • Accelerate — Nicole Forsgren, Jez Humble & Gene Kim, 2018. Investigación científica sobre métricas DORA y alto rendimiento.
  • The DevOps Handbook — Gene Kim et al., 2021. Guía práctica de implementación.
  • Google SRE Book — Google, 2016. Prácticas de Site Reliability Engineering incluyendo CI/CD.
  • Martin Fowler on CI — Martin Fowler, 2006. Artículo seminal que popularizó CI.

Contenido relacionado

  • GitHub

    Plataforma de desarrollo colaborativo construida sobre Git. Más que hosting de repositorios — es el hub central para code review, CI/CD, gestión de proyectos y colaboración open source.

  • GitHub Flow

    Modelo de branching minimalista diseñado para continuous deployment. Solo dos elementos — main y feature branches — con PRs como punto de integración y deploy inmediato tras merge.

  • DevOps

    Cultura y conjunto de prácticas que unifican desarrollo (Dev) y operaciones (Ops) para entregar software con mayor velocidad, calidad y confiabilidad. No es un rol — es una forma de trabajar.

  • Cloud Native

    Enfoque de desarrollo que aprovecha las ventajas de la nube: contenedores, microservicios, infraestructura inmutable y automatización declarativa para sistemas escalables y resilientes.

  • Calidad de Código

    Prácticas, herramientas y métricas para mantener código legible, mantenible, testeable y libre de defectos a lo largo del tiempo.

  • Registros de Contenedores

    Repositorios para almacenar, versionar y distribuir imágenes de contenedores, desde registros públicos como Docker Hub hasta registros privados como ECR.

  • PR Auto-Approver

    GitHub App serverless que auto-aprueba pull requests después de que CI pasa, con revisión de código opcional vía Amazon Bedrock. Cinco repositorios: app TypeScript/Probot, módulo Terraform AWS (Lambda + API Gateway + Secrets Manager + SQS DLQ), módulo Terraform GitHub (webhooks), infra de despliegue y repo de pruebas.

  • Agente de Contenido con Strands y Bedrock

    Sistema de tres agentes que automatiza el ciclo de vida de contenido MDX bilingüe: auditoría QA determinística, correcciones quirúrgicas y upgrades completos — todo orquestado con Strands Agents, Claude Sonnet 4 en Amazon Bedrock y GitHub Actions con patrón diamante.

  • Escaneo de Vulnerabilidades

    Proceso automatizado de identificar vulnerabilidades conocidas en código, dependencias, contenedores e infraestructura antes de que lleguen a producción.

  • Estrategias de Testing

    Enfoques y niveles de testing para validar que el software funciona correctamente, desde unit tests hasta tests end-to-end y testing en producción.

  • Terraform

    Herramienta de Infrastructure as Code de HashiCorp que permite definir, provisionar y gestionar infraestructura multi-cloud mediante archivos declarativos en HCL.

  • Linting y Formateo

    Herramientas automatizadas que verifican estilo, detectan errores potenciales y formatean código consistentemente, eliminando debates de estilo y mejorando la calidad.

  • Infrastructure as Code

    Práctica de definir y gestionar infraestructura mediante archivos de configuración versionados en lugar de procesos manuales. Fundamento de la automatización moderna de operaciones.

  • Golden Paths

    Caminos recomendados y pre-configurados para tareas comunes de desarrollo que incorporan mejores prácticas, reduciendo la carga cognitiva de los equipos.

  • GitOps

    Práctica operacional que usa Git como fuente única de verdad para infraestructura y configuración, con reconciliación automática entre el estado deseado y el real.

  • GitHub Actions

    Plataforma de CI/CD nativa de GitHub. Workflows declarativos en YAML que automatizan build, test, deploy y cualquier tarea del ciclo de desarrollo — directamente desde el repositorio.

  • Feature Flags

    Técnica que permite activar o desactivar funcionalidades en producción sin desplegar código nuevo, habilitando releases progresivos y experimentación.

  • DevSecOps

    Integración de prácticas de seguridad en todo el ciclo de vida del desarrollo de software, automatizando controles de seguridad en el pipeline de CI/CD.

  • Prácticas DevOps

    Conjunto de prácticas técnicas y culturales que implementan los principios DevOps — desde Infrastructure as Code hasta blameless post-mortems. El «cómo» detrás de la filosofía.

  • Experiencia del Desarrollador

    Disciplina enfocada en optimizar la productividad, satisfacción y efectividad de los desarrolladores mediante herramientas, procesos y entornos bien diseñados.

  • Dev Containers

    Especificación para definir entornos de desarrollo reproducibles en contenedores, eliminando el problema de 'funciona en mi máquina' y acelerando el onboarding.

  • AWS SAM

    Framework open-source de AWS para construir aplicaciones serverless con una sintaxis simplificada de CloudFormation, CLI para desarrollo local y despliegue integrado.

  • Accesibilidad

    Práctica de diseñar y desarrollar productos digitales que puedan ser usados por todas las personas, incluyendo aquellas con discapacidades visuales, auditivas, motoras o cognitivas.

Conceptos