Saltar al contenido principal

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:

Repositorios GitHub (PRIVADOS):

🔧 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.