Guía de Deployment
🚀 Deployment en Railway (Recomendado)
Configuración Actual de Producción
Plataforma: Railway.app
Proyecto: Datalake Nerdistor
Estado: ✅ Desplegado y funcionando
URLs de Producción:
- Backend API: https://nerdistan-datalake-production.up.railway.app
- API Docs: https://nerdistan-datalake-production.up.railway.app/docs
- Frontend Dashboard: https://nerdistan-cdp-frontend-production.up.railway.app
- Health Check: https://nerdistan-datalake-production.up.railway.app/health
Repositorios GitHub (PRIVADOS):
- Backend: https://github.com/NomadaDigital01/nerdistan-datalake
- Frontend: https://github.com/NomadaDigital01/nerdistan-cdp-frontend
- Branch de Deploy:
feature/railway-deployment
🔧 Configuración Railway
1. Variables de Entorno Backend
# Railway PostgreSQL (Automático)
DATABASE_URL=[Railway PostgreSQL URL]
# API Configuration
PORT=8000
ENVIRONMENT=production
DEBUG=false
CORS_ORIGINS=["*"]
# Security
JWT_SECRET=[Generated JWT Secret]
# Integrations (Configurar según tenant)
VTEX_API_KEY=vtexappkey-account-key
VTEX_API_TOKEN=your-vtex-token
VTEX_ACCOUNT=your-account
VTEX_ENVIRONMENT=vtexcommercestable
2. Variables de Entorno Frontend
# API Connection
VITE_API_URL=https://nerdistan-datalake-production.up.railway.app
VITE_APP_NAME="Nerdistan CDP"
VITE_APP_ENV=production
# Features
VITE_ENABLE_ANALYTICS=true
VITE_ENABLE_REALTIME=true
🛠️ Comandos Railway CLI
Administración del Proyecto
# Vincular proyecto local
cd /path/to/nerdistan-datalake
railway link
# Seleccionar: Datalake Nerdistor
# Ver logs del backend
railway service
# Seleccionar: nerdistan-datalake
railway logs
# Ver logs del frontend
cd ../nerdistan-cdp-frontend
railway service
# Seleccionar: nerdistan-cdp-frontend
railway logs
# Variables de entorno
railway variables
# Redeploy manual
railway up
# Ver estado general
railway status
Gestión de Base de Datos
# Conectar a PostgreSQL
railway connect postgres
# Backup de base de datos
railway run pg_dump $DATABASE_URL > backup.sql
# Restore desde backup
railway run psql $DATABASE_URL < backup.sql
🗄️ Base de Datos
PostgreSQL en Railway
# Configuración automática
Host: postgres.railway.internal
Database: railway
Usuario: postgres
Password: [Automático en Railway]
Conexión: Via DATABASE_URL
Migración desde DigitalOcean (Legacy)
-- Conexión legacy (solo lectura)
Host: db-postgresql-nyc1-33151-do-user-22736056-0.i.db.ondigitalocean.com
Port: 25060
Database: nerdistan_prod
User: miguel
SSL: Required
Schema Setup
# Ejecutar migraciones iniciales
railway run python -c "
from 02_implementation.00_run_all import run_all_systems
run_all_systems()
"
# Verificar tables
railway run psql $DATABASE_URL -c "\dt"
🔄 CI/CD Pipeline
GitHub Actions (Automático)
# .github/workflows/railway-deploy.yml
name: Deploy to Railway
on:
push:
branches: [main, feature/railway-deployment]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: railway/railway-action@v1
with:
token: ${{ secrets.RAILWAY_TOKEN }}
service: nerdistan-datalake
Deploy Manual
# Backend deploy
cd nerdistan-datalake
git push origin feature/railway-deployment
railway up
# Frontend deploy
cd nerdistan-cdp-frontend
git push origin main
railway up
📊 Monitoreo y Salud
Health Checks
# Backend health
curl https://nerdistan-datalake-production.up.railway.app/health
# API status
curl https://nerdistan-datalake-production.up.railway.app/api/v2/health
# Database connection
curl https://nerdistan-datalake-production.up.railway.app/api/v2/db/health
Métricas de Railway
- CPU Usage: < 50%
- Memory Usage: < 80%
- Response Time: < 200ms
- Uptime: 99.9%
Logs y Debugging
# Ver logs en tiempo real
railway logs --follow
# Filtrar por servicio
railway logs --service nerdistan-datalake
# Logs con timestamp
railway logs --timestamps
# Descargar logs
railway logs > deployment.log
🔒 Seguridad
SSL/TLS
- ✅ HTTPS automático en Railway
- ✅ Certificados SSL gestionados
- ✅ HTTP/2 habilitado
Environment Variables
- ✅ Almacenamiento seguro en Railway
- ✅ No hardcoded en código
- ✅ Rotación periódica de secrets
Database Security
- ✅ Conexiones SSL requeridas
- ✅ Firewall configurado
- ✅ Backups automáticos diarios
🚨 Troubleshooting
Error de Deploy
# Ver logs del último deploy
railway logs --filter "deploy"
# Restart servicio
railway service restart
# Check variables
railway variables
Error de Base de Datos
# Test conexión
railway run python -c "
import psycopg2
import os
conn = psycopg2.connect(os.environ['DATABASE_URL'])
print('Database OK')
"
# Reset schema
railway run python 02_implementation/00_reset_schema.py
Error de API
# Test endpoints
curl -I https://nerdistan-datalake-production.up.railway.app/docs
# Check CORS
curl -H "Origin: https://nerdistan-cdp-frontend-production.up.railway.app" \
https://nerdistan-datalake-production.up.railway.app/api/v2/health
📈 Escalabilidad
Horizontal Scaling
# Escalar instancias (Railway Pro)
railway scale --replicas 3
# Auto-scaling config
railway config set RAILWAY_AUTOSCALE_MIN=1
railway config set RAILWAY_AUTOSCALE_MAX=5
Vertical Scaling
# Aumentar recursos
railway config set RAILWAY_MEMORY=2GB
railway config set RAILWAY_CPU=1000m
Database Scaling
# Upgrade PostgreSQL plan
railway addons:upgrade postgres --plan=pro
# Read replicas (futuro)
railway addons:create postgres-replica
🔮 Roadmap de Infrastructure
Q4 2024
- Redis para caching
- CDN para assets estáticos
- Monitoring con DataDog
- Alerts automáticos
Q1 2025
- Multi-región deployment
- Database read replicas
- CI/CD optimizado
- Load balancing
💡 Tip: Utiliza railway status regularmente para monitorear la salud de todos los servicios.