Saltar al contenido principal
Volver a todos los artículos
Gestión de Crisis5 min de lectura

Mi Mayor Error: Cómo Tumbé el Servicio a Todos Mis Clientes

Una historia personal sobre el peor error técnico de mi carrera que dejó a todos mis clientes sin servicio. Aprende del caos y descubre el manual de gestión de crisis que me salvó y me ayudó a reconstruir la confianza.

La confianza es frágil. Se tarda años en construir y segundos en destruir.

Eran las 10 de la mañana de un martes. Un día normal. Estaba desplegando una pequeña actualización, una de esas que haces casi en piloto automático. Un simple script para migrar unos datos en la base de datos. Lo había probado en mi entorno local, parecía funcionar. ¿Qué podía salir mal?

./deploy.sh production

Enter.

Cinco minutos después, mi Slack explotó. Los canales de alertas se volvieron rojos. PagerDuty no paraba de llamar. Y lo peor, los emails de soporte empezaron a llegar en avalancha: "No puedo iniciar sesión", "Mis datos han desaparecido", "¿Qué está pasando?".

El estómago se me encogió. El sudor frío. Lo sabía. Había sido yo.

El "simple script" tenía un bug. Una condición `WHERE` mal escrita que, en lugar de actualizar un puñado de registros, había puesto en `NULL` una columna crítica para todos los usuarios. Había, en efecto, borrado la conexión lógica de cada usuario con sus datos. Había tumbado el servicio para el 100% de mis clientes con una sola línea de código.

Gestionando el caos: Mi manual de supervivencia

Entrar en pánico no era una opción. En esos momentos, tu valor como fundador o líder técnico no se mide por no cometer errores, sino por cómo respondes a ellos. Esto es lo que hice, paso a paso.

1. Comunicación Inmediata: La honestidad es tu única aliada

Antes incluso de saber la causa exacta, lo primero fue comunicar. No te escondas. Tu silencio es peor que cualquier mala noticia.

* Página de Estado: Actualizamos nuestra página de estado a "Incidencia Grave - Investigando". * Twitter/Email: Publicamos un mensaje corto y directo: "Somos conscientes de una interrupción general del servicio que afecta a todos los usuarios. Nuestro equipo está trabajando con máxima prioridad para solucionarlo. Daremos actualizaciones en 15 minutos".

No especules. No mientas. Solo di que estás en ello.

2. Diagnóstico Rápido: ¿Qué demonios ha pasado?

Formamos una "sala de guerra" virtual (una llamada de Zoom que no se cortaría hasta que todo estuviera resuelto). El único objetivo: encontrar la causa raíz.

Revisamos los últimos despliegues. Ahí estaba mi script. Revisamos los logs de la base de datos. Vimos la consulta desastrosa ejecutándose. Bingo.

Identificar la causa es el 50% de la batalla. Te saca del modo pánico y te pone en modo solución.

3. La Solución: Backups, benditos backups

El código no era el problema principal, sino los datos corruptos. Un simple rollback del código no iba a funcionar. La única salida era restaurar la base de datos.

Aquí es donde tener una política de backups robusta y probada te salva la vida. No es solo tener backups, es saber que funcionan.

El proceso fue tenso: 1. Pusimos la aplicación en modo mantenimiento total para evitar más corrupción de datos. 2. Identificamos el último backup sano, hecho 15 minutos antes de mi desastre. 3. Iniciamos el proceso de restauración en un nuevo servidor de base de datos. 4. Una vez restaurado, apuntamos la aplicación a la nueva base de datos. 5. Hicimos pruebas internas exhaustivas para asegurar que todo funcionaba. 6. Volvimos a poner el servicio online.

En total, estuvimos caídos durante 90 minutos. Se sintieron como 90 años. Perdimos 15 minutos de datos de los clientes (los que se crearon entre el último backup y la caída). Doloroso, pero no catastrófico.

4. El Post-Mortem: Asumir la culpa y reconstruir la confianza

El servicio estaba de vuelta, pero el trabajo no había terminado. Ahora venía lo más difícil: la comunicación post-incidente.

Escribí personalmente un email a todos nuestros clientes y un post en nuestro blog. Sin excusas. Sin jerga corporativa.

El post-mortem incluía: * Resumen del impacto: "El servicio estuvo inaccesible durante 90 minutos y se perdieron los datos generados entre las 9:45 y las 10:00 AM". * Causa Raíz (explicada para humanos): "Desplegué un script con un error que corrompió una tabla fundamental de nuestra base de datos. Fue un error mío". Asumir la responsabilidad es clave. * Acciones para que no vuelva a pasar: Aquí es donde conviertes un desastre en una mejora. Nos comprometimos a: * Exigir revisión por pares para cualquier script que toque la base de datos de producción. * Implementar un entorno de *staging* idéntico a producción para probar estas migraciones. * Mejorar nuestros sistemas de alerta para detectar anomalías a nivel de datos más rápido.

La respuesta de los clientes fue increíble. En lugar de cancelaciones masivas, recibimos decenas de emails agradeciendo la transparencia. La gente no espera que seas perfecto, espera que seas honesto y responsable.

Las lecciones que me quedaron grabadas a fuego

Ese día aprendí más que en un año de MBA.

1. La humildad es un requisito. No importa cuánta experiencia tengas, siempre estás a una línea de código del desastre. El exceso de confianza es tu peor enemigo. 2. Los procesos no son burocracia, son tu red de seguridad. Las revisiones de código y los entornos de prueba no están para hacerte lento, están para salvarte de ti mismo. 3. Invierte en tus backups como si tu empresa dependiera de ellos. Porque lo hace. 4. En una crisis, la transparencia radical no es una opción, es la única estrategia.

Cometer ese error fue una de las peores experiencias profesionales de mi vida. Pero la forma en que lo gestionamos como equipo se convirtió en un pilar de nuestra cultura y, paradójicamente, fortaleció la relación con nuestros clientes. A veces, la forma en que te levantas de una caída dice más de ti que el hecho de no haberte caído.

Escrito por Samuel Moreno

Socio y Desarrollador en Sinergia Barcelona.