Actualizar Producción (Deploy de Cambios)
Sección titulada «Actualizar Producción (Deploy de Cambios)»Esta guía es para actualizar una aplicación que ya está en producción. Si es tu primer deploy, consulta la Guía de Despliegue a Producción.
🎯 Cuándo Hacer Deploy
Sección titulada «🎯 Cuándo Hacer Deploy»Haz deploy a producción cuando:
- ✅ El feature está completo y probado localmente
- ✅ El código está mergeado a
main(o la rama de producción) - ✅ Tests E2E pasando (si aplica)
- ✅ Code review aprobado
- ✅ No hay errores de compilación
Evita hacer deploy:
- ❌ Con código a medio implementar
- ❌ Con tests fallando
- ❌ Viernes en la tarde (por si surge un problema)
- ❌ Sin backup reciente de la DB (si hay migraciones)
⚡ Proceso Rápido (TL;DR)
Sección titulada «⚡ Proceso Rápido (TL;DR)»Si ya conoces el proceso, aquí está la versión corta:
# 1. Actualizar maingit checkout main && git pull origin main
# 2. Deploycd appwasp deploy fly deploy
# 3. Verificarflyctl logs -a talentbricksai📋 Checklist Pre-Deploy
Sección titulada «📋 Checklist Pre-Deploy»Antes de hacer deploy, verifica:
1. Estado del Código
Sección titulada «1. Estado del Código»# Asegúrate de estar en main actualizadogit checkout maingit pull origin main
# Verifica que no hay cambios pendientesgit status# Debe mostrar: "nothing to commit, working tree clean"
# Ver los últimos commits que se van a desplegargit log --oneline -102. Cambios en el Schema de Base de Datos
Sección titulada «2. Cambios en el Schema de Base de Datos»# Ver si hay cambios en schema.prisma desde el último deploygit diff <ultimo-deploy-commit> HEAD -- app/schema.prisma
# Si hay cambios, verifica las migracionesls -la app/migrations/⚠️ IMPORTANTE: Si hay cambios en schema.prisma:
- Las migraciones se ejecutarán automáticamente durante el deploy
- Asegúrate de tener un backup de la base de datos antes de continuar
- Considera hacer el deploy en horario de bajo tráfico
Cómo hacer backup de Neon:
# Instalar pg_dump si no lo tienes (macOS)brew install postgresql
# Hacer backuppg_dump "$(flyctl secrets list -a talentbricksai | grep DATABASE_URL | awk '{print $2}')" \ > backup-$(date +%Y%m%d-%H%M).sql3. Nuevas Variables de Entorno
Sección titulada «3. Nuevas Variables de Entorno»# Revisa si hay cambios en los archivos de ejemplogit diff <ultimo-deploy-commit> HEAD -- app/.env.server.example app/.env.client.exampleSi hay nuevas variables, configúralas en Fly:
# Ver secrets actualesflyctl secrets list -a talentbricksai
# Agregar nueva variableflyctl secrets set NUEVA_VARIABLE="valor" -a talentbricksai
# Para el cliente (si aplica)flyctl secrets set REACT_APP_NUEVA_VAR="valor" -a talentbricksai-client4. Verificación Local
Sección titulada «4. Verificación Local»cd app
# Asegúrate que compila sin erroreswasp build
# Si hay tests, córrelosnpm test🚀 Proceso de Deploy
Sección titulada «🚀 Proceso de Deploy»Paso 1: Posicionarse en el Directorio Correcto
Sección titulada «Paso 1: Posicionarse en el Directorio Correcto»cd appPaso 2: Ejecutar el Deploy
Sección titulada «Paso 2: Ejecutar el Deploy»wasp deploy fly deployEste comando hace todo automáticamente:
- ✅ Construye el servidor Node.js
- ✅ Construye el cliente React
- ✅ Ejecuta migraciones de base de datos (si hay cambios en schema.prisma)
- ✅ Despliega el servidor a
talentbricksai.fly.dev - ✅ Despliega el cliente a
talentbricksai-client.fly.dev - ✅ Reinicia las aplicaciones
Tiempo estimado: 3-5 minutos
Paso 3: Monitorear el Deploy
Sección titulada «Paso 3: Monitorear el Deploy»Mientras el deploy está en progreso, verás algo como:
==> Building image--> Building image done==> Pushing image to fly--> Pushing image done==> Creating release--> Release created==> Monitoring deployment 1 desired, 1 placed, 1 healthy, 0 unhealthy [health checks: 1 total, 1 passing]--> v23 deployed successfullySi ves “deployed successfully”, el deploy fue exitoso.
✅ Verificación Post-Deploy
Sección titulada «✅ Verificación Post-Deploy»Después del deploy, siempre verifica que todo funciona correctamente.
1. Verificar Status de las Apps
Sección titulada «1. Verificar Status de las Apps»# Estado del servidorflyctl status -a talentbricksai
# Estado del clienteflyctl status -a talentbricksai-client
# Ambos deben mostrar:# Status: running# Health Checks: passing2. Revisar Logs en Tiempo Real
Sección titulada «2. Revisar Logs en Tiempo Real»# Ver logs del servidor (presiona Ctrl+C para salir)flyctl logs -a talentbricksai -f
# En otra terminal, ver logs del clienteflyctl logs -a talentbricksai-client -fQué buscar en los logs:
- ✅ No debe haber errores rojos
- ✅ Migraciones deben completarse si las había
- ✅ “Server listening on port…” indica que el servidor arrancó
- ❌ Si ves “Error”, “Failed”, “Exception” → investiga inmediatamente
3. Verificar la Aplicación en el Navegador
Sección titulada «3. Verificar la Aplicación en el Navegador»Abre en tu navegador:
- Cliente: https://talentbricksai-client.fly.dev (o tu dominio custom)
- API: https://talentbricksai.fly.dev/api/health (debe retornar status 200)
Checklist funcional:
- La página carga sin errores
- Login funciona
- El feature que desplegaste está visible y funcional
- No hay errores en la consola del navegador (F12 → Console)
- Las integraciones críticas funcionan (Stripe, email, etc.)
4. Verificar Migraciones de Base de Datos
Sección titulada «4. Verificar Migraciones de Base de Datos»Si hubo cambios en schema.prisma:
# Conectar a la DB de producción (solo lectura)flyctl ssh console -a talentbricksai -C "npx prisma studio"
# O ejecuta una query directaflyctl ssh console -a talentbricksai -C "npx prisma db execute --stdin" <<< "SELECT * FROM _prisma_migrations ORDER BY finished_at DESC LIMIT 5;"Verifica que:
- La migración aparece en la tabla
_prisma_migrations - No hay migraciones con
rolled_back_at!= NULL - Las nuevas columnas/tablas existen
🔄 Rollback (Revertir un Deploy)
Sección titulada «🔄 Rollback (Revertir un Deploy)»Si el deploy causó problemas, puedes revertir al deploy anterior.
Opción 1: Rollback Automático de Fly.io
Sección titulada «Opción 1: Rollback Automático de Fly.io»# Ver historial de releasesflyctl releases -a talentbricksai
# Ejemplo de output:# VERSION STABLE TYPE STATUS DESCRIPTION# v24 true deploy successful Deploy from local# v23 false deploy successful Deploy from local# v22 false deploy successful Deploy from local
# Hacer rollback a la versión anteriorflyctl releases rollback v23 -a talentbricksai
# También para el cliente si es necesarioflyctl releases rollback v15 -a talentbricksai-clientOpción 2: Rollback con Git
Sección titulada «Opción 2: Rollback con Git»# 1. Revertir el commit problemáticogit revert <commit-hash-problematico>git push origin main
# 2. Redesplegarcd appwasp deploy fly deployOpción 3: Rollback de Migraciones de Base de Datos
Sección titulada «Opción 3: Rollback de Migraciones de Base de Datos»⚠️ PELIGROSO: Solo en casos extremos.
# Conectar a la DB de producciónflyctl ssh console -a talentbricksai
# Dentro de la máquina:cd /appnpx prisma migrate resolve --rolled-back <nombre-migracion>Mejor alternativa: Restaurar desde backup si hay problemas serios con la DB.
🐛 Troubleshooting
Sección titulada «🐛 Troubleshooting»Error: “No such app”
Sección titulada «Error: “No such app”»# Verifica que estás en el directorio correctopwd# Debe mostrar: .../app
# Verifica que las apps existenflyctl apps list
# Si no aparecen, revisa la configuracióncat fly-server.toml | grep appcat fly-client.toml | grep appError: “Database migration failed”
Sección titulada «Error: “Database migration failed”»# Ver qué migración fallóflyctl logs -a talentbricksai | grep -i migration
# Ver estado de migracionesflyctl ssh console -a talentbricksai -C "npx prisma migrate status"
# Si necesitas marcar una migración como aplicada manualmenteflyctl ssh console -a talentbricksai -C "npx prisma migrate resolve --applied <nombre-migracion>"Error: “Build failed”
Sección titulada «Error: “Build failed”»# Limpiar build anteriorcd appwasp clean
# Intentar build local primerowasp build
# Si falla localmente, arreglar antes de redesplegar# Si funciona localmente, reintentar deploywasp deploy fly deployError: “Health checks failing”
Sección titulada «Error: “Health checks failing”»# Ver logs detalladosflyctl logs -a talentbricksai
# Ver máquinasflyctl machines list -a talentbricksai
# Si una máquina está en estado "stopped", reiniciarflyctl apps restart talentbricksaiCliente no puede conectar al servidor
Sección titulada «Cliente no puede conectar al servidor»Problema: El cliente apunta a localhost en lugar del servidor de producción.
# Verificar REACT_APP_API_URL en el clienteflyctl ssh console -a talentbricksai-client -C "cat .env | grep API_URL"
# Debe ser:# REACT_APP_API_URL=https://talentbricksai.fly.dev
# Si está mal, el problema es que wasp deploy fly no configuró correctamente# Necesitas reconstruir el cliente con la variable correctaCambios no se reflejan en producción
Sección titulada «Cambios no se reflejan en producción»# 1. Verificar que el deploy fue exitosoflyctl releases -a talentbricksai
# 2. Hard refresh en el navegador# Mac: Cmd + Shift + R# Windows: Ctrl + Shift + R
# 3. Limpiar caché de Fly CDN (si aplica)flyctl apps restart talentbricksai-client
# 4. Verificar versión del código desplegadoflyctl ssh console -a talentbricksai -C "cat package.json | grep version"📊 Monitoreo Post-Deploy
Sección titulada «📊 Monitoreo Post-Deploy»Después de un deploy exitoso, monitorea la aplicación durante las siguientes 24 horas.
Métricas Clave
Sección titulada «Métricas Clave»# CPU y memoriaflyctl metrics -a talentbricksai
# Requests por minutoflyctl logs -a talentbricksai | grep "GET\|POST" | wc -l
# Errores en las últimas horasflyctl logs -a talentbricksai | grep -i "error" | tail -50Dashboard de Fly.io
Sección titulada «Dashboard de Fly.io»Visita: https://fly.io/dashboard/talentbricksai
Monitorea:
- CPU usage (debe estar < 80%)
- Memory usage (debe estar < 80%)
- Request latency (debe ser < 500ms)
- Error rate (debe ser < 1%)
Dashboard de Neon (Base de Datos)
Sección titulada «Dashboard de Neon (Base de Datos)»Visita: https://console.neon.tech
Monitorea:
- Active connections (debe ser estable)
- Query duration (debe ser < 100ms promedio)
- Storage usage (no debe crecer inesperadamente)
📝 Documentar el Deploy
Sección titulada «📝 Documentar el Deploy»Después de cada deploy importante, documenta:
- En IMPLEMENTATION.md (cambios técnicos):
## [2026-02-26] Deploy v24: Landing Page B2B
**Schema changes:**
- Added `DemoRequest` model for /teams landing page
**Features deployed:**
- B2B corporate landing page at /teams- Admin user management (create/edit/delete users)- Subscription validation system
**Migrations:**
- 20260226_add_demo_request_model- En changelog.md (cambios visibles al usuario):
## [26 Feb 2026] - Lanzamiento de TalentBricks para Equipos
### Nuevo
- 🏢 Landing page corporativa en /teams para empresas- 👥 Los administradores ahora pueden crear y editar usuarios desde el panel admin
### Mejorado
- ⚡ Validación de suscripciones más robusta⏱️ Frecuencia de Deploys
Sección titulada «⏱️ Frecuencia de Deploys»Recomendaciones
Sección titulada «Recomendaciones»- Features pequeños: Deploy inmediatamente después de merge a
main - Features grandes: Deploy después de testing exhaustivo
- Hotfixes críticos: Deploy inmediatamente (ej. bugs de seguridad)
- Migraciones de DB: Deploy en horario de bajo tráfico
Horarios Recomendados
Sección titulada «Horarios Recomendados»| Tipo de Deploy | Mejor Horario | Evitar |
|---|---|---|
| Features normales | Lunes-Jueves 10am-4pm | Viernes tarde, fines de semana |
| Hotfixes | Cualquier momento | - |
| Migraciones grandes | Martes-Miércoles 6am o 10pm (bajo tráfico) | Lunes, horas pico |
| Deploy mayor | Martes-Miércoles por la mañana | Viernes, lunes, fines de semana |
🎯 Mejores Prácticas
Sección titulada «🎯 Mejores Prácticas»1. Deploy Frecuente, Cambios Pequeños
Sección titulada «1. Deploy Frecuente, Cambios Pequeños»✅ Mejor: 5 deploys pequeños a la semana ❌ Evitar: 1 deploy gigante al mes
Por qué: Cambios pequeños son más fáciles de debuggear y revertir.
2. Siempre Monitorea los Logs
Sección titulada «2. Siempre Monitorea los Logs»# Deja esto corriendo durante los primeros 5 minutos post-deployflyctl logs -a talentbricksai -f3. Comunica los Deploys al Equipo
Sección titulada «3. Comunica los Deploys al Equipo»[Slack #deploys]🚀 Deploy v24 a producción- Landing page /teams- Admin user management- Migraciones: added DemoRequest model⏰ ETA: 5 min4. Ten un Plan de Rollback
Sección titulada «4. Ten un Plan de Rollback»Antes de cada deploy, pregúntate:
- ¿Qué hago si esto falla?
- ¿Puedo hacer rollback sin perder datos?
- ¿Hay cambios irreversibles en la DB?
5. No Hagas Deploys Grandes los Viernes
Sección titulada «5. No Hagas Deploys Grandes los Viernes»Si algo sale mal, tendrás que arreglarlo en fin de semana. Deploys grandes = martes o miércoles.
🔗 Enlaces Relacionados
Sección titulada «🔗 Enlaces Relacionados»- Despliegue a Producción (Primer Deploy)
- Workflow Desarrollo vs Producción
- Setup Local
- Database Schema
- Fly.io Docs - Deployments
- Wasp Docs - Deployment
✅ Checklist Final
Sección titulada «✅ Checklist Final»Antes de cerrar este documento, asegúrate de haber completado:
- Pre-deploy checklist completado
- Deploy ejecutado con éxito
- Logs revisados (sin errores)
- Aplicación verificada en el navegador
- Features nuevos probados en producción
- Migraciones verificadas (si aplica)
- Cambios documentados en IMPLEMENTATION.md y changelog.md
- Equipo notificado del deploy
- Monitoreo configurado para las próximas 24h
¿Problemas durante el deploy? Consulta la sección de Troubleshooting o contacta al equipo en Slack #tech-support.