Stack moderno y probado. Diseñado para operación real.
Cada tecnología elegida por una razón concreta. Sin modas, sin sobre-ingeniería. Stack que cualquier equipo de 2 a 50 personas puede operar.
Stack por capas
Cada componente tiene un propósito claro y está justificado por la operación real de un ITSM/PSA.
Frontend
Renderizado híbrido para páginas de marketing estáticas y app dinámica en la misma base de código. SEO nativo, optimización automática de imágenes y code splitting.
Ecosistema masivo, componentes reutilizables, Server Components para reducir JavaScript en cliente y mejorar Core Web Vitals.
Backend
Seguridad incorporada (CSRF, XSS, SQL injection), ORM maduro con migraciones, panel de admin automático, autenticación y permisos listos para producción.
Serialización declarativa, paginación, filtros, throttling, autenticación por token y OpenAPI schema automático para documentación.
Datos
Transacciones ACID garantizadas, soporte nativo JSON/JSONB para datos flexibles, row-level security para multi-tenant, full-text search y extensiones como pg_trgm.
Latencia sub-milisegundo para cache de consultas frecuentes, store de sesiones distribuido, pub/sub para eventos en tiempo real y broker para colas de Celery.
Procesamiento
Procesamiento robusto en background: envío de emails, notificaciones webhooks, generación de informes, importaciones masivas y cálculos de SLA sin bloquear peticiones HTTP.
Scheduler integrado para tareas periódicas: verificación de SLAs vencidos, alertas de escalado, limpieza de sesiones expiradas, reportes diarios y backups automáticos.
Contenedores
Entorno idéntico en desarrollo y producción. Aislamiento de dependencias, imágenes optimizadas con multi-stage builds y seguridad por capas.
Definición declarativa de todos los servicios en un YAML. Usado internamente para gestionar el stack completo de la plataforma SaaS sin Kubernetes.
Diagrama por capas
Cómo se conectan los componentes desde el usuario hasta los datos.
Request → Response. El usuario espera el resultado. Incluye SSR, API calls y cache hit.
Fire-and-forget. Email, webhooks, reportes y SLA checks via Celery workers. El usuario no espera.
Flujo de petición
El camino de una solicitud desde el navegador hasta la base de datos — y el desvío para tareas asíncronas.
Camino síncrono: cada request pasa por todas las capas
Verificar SLAs vencidos y disparar alertas
Refrescar materialized views de KPIs
Limpiar sesiones expiradas de Redis
Enviar reporte de SLA del día anterior
Backup de PostgreSQL (pg_dump)
Rotación de logs y limpieza de temporales
Por qué este stack
Cada tecnología fue elegida con criterio. Estas son las razones técnicas que justifican cada decisión.
Next.js
- Rendimiento: SSR para contenido dinámico, SSG para páginas de marketing, ISR para actualización incremental sin rebuild completo.
- SEO: Meta tags dinámicos, sitemap automático, structured data y optimización de Core Web Vitals nativa.
- DX: App Router, Server Components, hot reload instantáneo y ecosistema de librerías compatible.
- Ecosistema: Middleware nativo, image optimization, internationalization y soporte para edge runtime.
Django
- Seguridad: Protección contra CSRF, XSS, SQL injection, clickjacking. Seguridad por defecto, no opcional.
- Batteries-included: Admin panel, ORM, migraciones, autenticación, permisos, señales y middleware incluidos.
- ORM maduro: QuerySets expresivos, lazy evaluation, prefetch_related/select_related para N+1, y migraciones reversibles.
- Comunidad: Documentación de referencia excelente, paquetes para cualquier necesidad y long-term support releases.
PostgreSQL
- Fiabilidad: ACID completo, WAL para crash recovery, PITR (Point-in-Time Recovery) y replicación nativa.
- Extensiones: pg_trgm para búsqueda fuzzy, pg_stat_statements para análisis de queries, row-level security para multi-tenant.
- Rendimiento: Indexación avanzada (GIN, GiST, partial), partitioning nativo y query planner inteligente.
- Flexibilidad: JSONB para datos semi-estructurados, custom types, y full-text search sin Elasticsearch.
Redis
- Velocidad: Operaciones en memoria con latencia <1ms para cache de sesiones, queries y datos frecuentes.
- Pub/Sub: Canales para eventos en tiempo real entre microservicios y notificaciones push.
- Session store: Compartido entre instancias de Django, escalable horizontalmente sin sticky sessions.
- Job queue: Broker nativo para Celery con soporte para prioridades, delays y reconocimiento de tareas.
Celery
- Asíncrono: Tareas pesadas (emails, PDFs, imports) fuera del request path. El usuario no espera.
- Scheduling: Celery Beat para jobs periódicos con definición en código, no en crontabs separados.
- Fiabilidad: Retry con backoff exponencial, dead letter queues, rate limiting y monitoreo con Flower.
- Escalado: Añadir workers sin tocar código. Distribución automática de carga entre procesos.
Docker
- Reproducibilidad: Misma imagen de desarrollo a producción. Sin «en mi máquina funciona».
- Aislamiento: Cada servicio en su contenedor con dependencias propias. Sin conflictos.
- Simplicidad: Contenedores para gestionar el stack completo. Sin orquestadores complejos.
- Seguridad: Imágenes base slim, usuarios no-root, scan de vulnerabilidades y rebuilds automatizados.
Adecuado para ITSM/PSA
No es un stack genérico. Cada decisión técnica responde a un requisito concreto de gestión de servicios TI y PSA.
Modelo multi-tenant
Separación completa de datos entre clientes con eficiencia operativa.
PostgreSQL Row-Level Security (RLS)
Cada tenant aísla sus datos a nivel de fila en la misma base de datos. Sin duplicated schemas, sin shards. Los queries del ORM de Django aplican automáticamente el filtro de tenant. Esto reduce coste de infraestructura y simplifica backups.
Seguimiento de SLA en tiempo real
Contadores de tiempo de respuesta y resolución por prioridad, actualizados al segundo.
Redis para contadores incrementales
Los timers de SLA se almacenan como claves Redis con TTL. Cada actualización es un INCR/DECR atómico. Si un ticket se pausa, el tiempo restante se serializa. La latencia es <1ms y no impacta a PostgreSQL. Celery Beat verifica vencimientos cada minuto.
Notificaciones en background
Emails de notificación, webhooks y alertas sin ralentizar la interfaz del usuario.
Celery workers dedicados
Cada acción que genera una notificación (ticket creado, SLA en riesgo, comentario público) encola una tarea en Celery. Los workers procesan con prioridad, retry automático y dead letter queue. El usuario recibe respuesta HTTP instantánea.
Marketing estático + app dinámica
Páginas de marketing con SEO perfecto junto a la aplicación operativa en tiempo real.
Next.js hybrid rendering
Las páginas de marketing (Inicio, Soluciones, Precios) se generan estáticamente con SSG en build time. El dashboard y las vistas operativas se sirven con SSR o CSR dinámico. Todo en el mismo dominio, mismo deploy, mismo código.
Consultas analíticas pesadas
Dashboards con métricas de SLA, tiempo por cliente y KPIs sin afectar la operación diaria.
PostgreSQL materialized views + Redis cache
Los reportes agregados se materializan en PostgreSQL y se refrescan con Celery Beat (cada 5 min). El resultado se cachea en Redis. El dashboard carga en <200ms sin tocar las tablas de operaciones.
Eventos entre módulos
Crear un ticket desde un cambio, actualizar SLA al reasignar, notificar al cliente al cerrar.
Django Signals + Redis Pub/Sub
Los signals de Django conectan lógica entre módulos (Service Desk → Contratos → Inventario). Para notificaciones entre usuarios en tiempo real se usa Redis Pub/Sub. Cada acción genera el efecto dominó correcto.
Qué cambia en la práctica
Arquitectura probada. Despliegue flexible.
Stack diseñado para operación real. Tú decides dónde ejecutarlo.