Docker Compose vs Kubernetes: cuándo tu equipo realmente necesita cambiar



"¿Ya necesitamos Kubernetes?" es casi siempre la pregunta equivocada. La correcta es: ¿cuántos servicios, cuántos servidores y a cuántas personas les suena el teléfono de guardia? Esos tres números dicen más que cualquier charla abstracta sobre "necesitar orquestación".

Los umbrales que de verdad importan

CodeCeibe corre en un único VPS con Compose: Django, Postgres 17, Redis, un worker de analítica, un worker de la cola de posts programados y nginx -- seis servicios, un servidor, una persona de guardia. Mover eso a Kubernetes hoy añadiría un control plane, un cluster de etcd y un árbol de YAML que mantener, sin ningún beneficio operativo. La tabla de abajo son las señales que de verdad vigilamos, no una checklist genérica.

SeñalCompose sigue bienHora de mirar Kubernetes
Servicios8 o menos en un servidor10+ servicios, varios equipos dueños de piezas distintas
Servidores1 (quizás un standby)3+ servidores que necesitan un scheduler que decida dónde correr
Equipo de guardia1-3 personas que conocen el stack de memoria4+ ingenieros rotando, nadie quiere aprender "pregúntale a Alvaro" como proceso de despliegue
DesplieguesPocas veces por semana, un corte breve es aceptable10+ veces al día, los rolling updates sin downtime son un requisito, no un extra
Patrón de cargaMás o menos plano, dimensionas los contenedores una vezPicos de tráfico lo bastante fuertes como para necesitar escalar de 2 a 12 réplicas automáticamente
Umbral entre Docker Compose y KubernetesDocker Compose1 servidor8 servicios o menosequipo de 1 a 3 personas1 persona de guardiadocker compose up -ddespliegues varias veces por semanaKubernetes3+ servidores / nodos10+ servicios4+ ingenieros en rotacionguardia 24/7necesita autoscaling y rollouts controlados10+ despliegues al diael cambio

Cómo se ve justo antes de haberlo cruzado

La señal no es una epifanía filosófica, es un script. Si ya estás escribiendo algo así, ya te quedaste corto con Compose y todavía no lo admites:

for host in web01 web02 web03; do
  ssh deploy@$host "cd /srv/app && docker compose pull && docker compose up -d --no-deps app"
  sleep 15
  curl -sf https://$host/healthz || { echo "rollback en $host"; break; }
done

Eso es una versión artesanal, secuencial y sin rollback de lo que un Deployment de Kubernetes da gratis con readinessProbe y maxUnavailable: 0. Cuando ya estás escribiendo bucles de SSH para simular rolling updates entre servidores, el orquestador sale más barato que el bash.

Lo que realmente cambia después del salto

  • Alguien tiene que ser dueño del cluster en sí -- actualizar nodos, el plugin de CNI, rotar certificados. Eso es un trabajo a tiempo parcial con 3 nodos, y uno real pasados los 10.
  • Tu artefacto de despliegue pasa de un docker-compose.yml que cualquiera lee en 30 segundos a un chart de Helm o un montón de manifiestos que necesita su propio proceso de revisión.
  • Ganas autoscaling real, rolling updates con checks de salud y un scheduler que reparte la carga entre servidores -- cosas que Compose de verdad no puede hacer, porque nunca se diseñó para eso.

La respuesta honesta para la mayoría de equipos chicos

Si sois menos de 3 personas y menos de 10 servicios en un servidor, no migréis. Arreglad el dolor real en su lugar -- normalmente es "los despliegues cortan el servicio" (se resuelve con un contenedor azul/verde y un swap del upstream de nginx) o "solo yo sé desplegar" (se resuelve con un runbook documentado, no con un scheduler). Kubernetes resuelve problemas de escala, y crea uno nuevo -- un segundo sistema que operar -- que todavía no tenéis.

Dejar un comentario

Los comentarios anónimos se publican tras ser revisados.