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.
Las prácticas DevOps son las implementaciones concretas de la filosofía DevOps. Mientras DevOps es el «qué» y el «por qué», estas prácticas son el «cómo».
Definir y gestionar infraestructura mediante archivos de configuración versionados.
| Herramienta | Enfoque | Lenguaje |
|---|---|---|
| Terraform | Multi-cloud, declarativo | HCL |
| Pulumi | Multi-cloud, imperativo | TypeScript, Python, Go |
| AWS CDK | AWS, imperativo | TypeScript, Python, Java |
| CloudFormation | AWS, declarativo | YAML/JSON |
| Ansible | Configuración, agentless | YAML |
resource "aws_s3_bucket" "data" {
bucket = "my-data-bucket"
versioning {
enabled = true
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
}Mantener servidores en un estado deseado de forma automatizada.
# Ansible playbook
- hosts: webservers
tasks:
- name: Install nginx
apt:
name: nginx
state: present
- name: Copy config
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: restart nginx
handlers:
- name: restart nginx
service:
name: nginx
state: restartedEmpaquetar aplicaciones con todas sus dependencias.
# Multi-stage build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"].dockerignore para excluir archivos innecesariosUsar Git como fuente de verdad para infraestructura y deployments.
# ArgoCD Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
spec:
source:
repoURL: https://github.com/org/repo
path: k8s/
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: trueSeparar deployment de release — código en producción pero funcionalidad controlada.
// Ejemplo con LaunchDarkly / Unleash / custom
if (featureFlags.isEnabled('new-checkout', { userId })) {
return <NewCheckout />;
}
return <LegacyCheckout />;Los tres pilares para entender sistemas en producción:
{
"timestamp": "2024-01-15T10:30:00Z",
"level": "error",
"service": "api",
"trace_id": "abc123",
"message": "Payment failed",
"user_id": "user_456",
"error_code": "INSUFFICIENT_FUNDS"
}Structured logging — JSON parseable, no texto libre.
# Prometheus format
http_requests_total{method="GET", status="200"} 1234
http_request_duration_seconds{quantile="0.99"} 0.25
Tipos: counters, gauges, histograms, summaries.
Seguir una request a través de múltiples servicios:
[API Gateway] → [Auth Service] → [User Service] → [Database]
2ms 5ms 3ms 10ms
Herramientas: Jaeger, Zipkin, AWS X-Ray, Datadog APM.
| Sev | Impacto | Response time | Ejemplo |
|---|---|---|---|
| 1 | Servicio caído | Inmediato | Sitio no carga |
| 2 | Degradación mayor | < 30 min | Pagos fallan |
| 3 | Degradación menor | < 4 horas | Feature secundaria rota |
| 4 | Bajo impacto | Siguiente día hábil | Bug cosmético |
Inyectar fallos controlados para descubrir debilidades.
Integrar seguridad en todo el pipeline:
Estas prácticas no son opcionales para equipos que operan software en producción. Cada una reduce un tipo específico de riesgo: IaC elimina la configuración manual, los feature flags desacoplan deploy de release, la observabilidad convierte incidentes en aprendizaje. Adoptarlas incrementalmente es más efectivo que intentar implementar todo a la vez.
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.
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.
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.
Ejemplo de proyecto Python con Pipenv, Pytest, pre-commit hooks, CI/CD con GitHub Actions y generación de badges.
Plantillas Copier para scaffolding de proyectos con Docker Compose, documentación MkDocs y configuración automatizada.
Metodología de doce principios para construir aplicaciones SaaS modernas que sean portables, escalables y desplegables en plataformas cloud.
Herramienta de Infrastructure as Code de HashiCorp que permite definir, provisionar y gestionar infraestructura multi-cloud mediante archivos declarativos en HCL.
Estrategia de migración incremental que reemplaza gradualmente un sistema legacy con componentes nuevos, enrutando tráfico progresivamente hasta que el sistema antiguo se puede retirar.
Fork open source de Terraform mantenido por la Linux Foundation. Compatible con HCL y providers de Terraform, creado en respuesta al cambio de licencia de HashiCorp a BSL 1.1.
Capacidad de entender el estado interno de un sistema a partir de sus outputs externos: logs, métricas y traces, permitiendo diagnosticar problemas sin acceso directo al sistema.
Estrategia de organización de código donde múltiples proyectos coexisten en un único repositorio, compartiendo dependencias, configuración y herramientas de build.
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.
Procesos y prácticas para detectar, responder, resolver y aprender de incidentes de producción de forma estructurada y efectiva.
Disciplina enfocada en optimizar la productividad, satisfacción y efectividad de los desarrolladores mediante herramientas, procesos y entornos bien diseñados.