Tu agente no rompió producción. Tu pipeline sí.
Tu agente no rompió producción. Tu pipeline sí.
Muchos equipos utilizan agentes para abrir pull requests. Utilizan CI para verificar el linting, las pruebas y las compilaciones. Luego, un trabajo programado mueve el código de staging a producción. Esta configuración acaba fallando.
El problema no es un agente malicioso. El problema es un mal proceso. Has colapsado dos preguntas diferentes en un solo punto de control:
- ¿Pasó esto el CI?
- ¿Es esto seguro para que un humano lo vea ahora mismo?
No son lo mismo. El CI comprueba si el código funciona. No comprueba si una funcionalidad está lista para los clientes.
Si tu pipeline trata "merged" y "live" como lo mismo, tienes un problema. Te has sumado al despliegue continuo sin haberlo decidido.
Debes desacoplar estos dos eventos.
Puedes usar feature flags para lograr esto. Las feature flags son solo un booleano y una sentencia if. No necesitas herramientas costosas para empezar. Un simple valor de configuración o una variable de entorno funciona.
Mi configuración sigue estas reglas:
- Los PR se fusionan en main, pero main no es lo que permanece en vivo.
- Un paso de release separado promueve main a una rama de producción.
- Debo decir explícitamente "adelante". Sin trabajos cron ni temporizadores.
- El release espera a que la compilación esté sirviendo tráfico.
- Una comprobación automatizada accede a los endpoints clave para confirmar que el sitio funciona.
- Un humano realiza una comprobación manual final de los cambios.
Esto crea un punto de control. Un humano, una máquina y otro humano tienen la oportunidad de decir que no antes de que un usuario vea nada.
Si un error llega a un usuario, necesitas revertir rápido. Para ello, sigue el patrón "expand and contract" para las migraciones de bases de datos.
- Añade una nueva columna como nullable.
- Realiza el backfill de los datos.
- Escribe tanto en las columnas antiguas como en las nuevas.
- Lee de la nueva.
- Elimina la columna antigua solo en un release posterior.
Si te saltas esto, tu botón de revertir será inútil. Si una migración elimina una columna que el código antiguo necesita, no podrás hacer un rollback. Simplemente te quedarás con el sistema roto.
Un agente hace que estos errores ocurran más rápido. Elimina la fricción manual que solía ocultar tus malos procesos. La disciplina que omitiste nunca fue opcional. Simplemente estaba siendo cubierta por un humano que notaba un error antes de las 5:00 PM un viernes.
Saca al humano del bucle y la disciplina se vuelve obligatoria.
Fuente: https://dev.to/mattstratton/your-agent-didnt-break-prod-your-pipeline-did-4g9o
