Arquitectura Full-Stack de Alto Rendimiento: Next.js 15 App Router, Supabase RLS y Docker
Guía arquitectónica para construir plataformas web modernas de alto impacto combinando Server Components, Server Actions tipadas, políticas de seguridad a nivel de fila (RLS) en PostgreSQL y contenedores Docker multi-stage.
El Paradigma Moderno del Desarrollo Web
El desarrollo web ha evolucionado desde las arquitecturas SPA con pesadas capas de empaquetado en el cliente hacia modelos híbridos impulsados por el servidor. Con la llegada de Next.js 15 y React Server Components (RSC), es posible renderizar la mayor parte de la interfaz en el servidor sin despachar megabytes de JavaScript innecesarios al navegador.
Al combinar este frontend con Supabase (PostgreSQL administrado con autenticación y almacenamiento) y un despliegue contenerizado mediante Docker, se obtiene un stack productivo, seguro y fácilmente escalable.
1. Separación de Responsabilidades: RSC y Server Actions
En la arquitectura del App Router de Next.js 15:
- Server Components (Default): Se ejecutan exclusivamente en el servidor. Tienen acceso directo a la base de datos o APIs privadas y entregan HTML hidratado con cero impacto en el bundle del cliente.
- Client Components (`"use client"`): Reservados para nodos de la vista con interactividad (modales, formularios con estado en vivo, oyentes de eventos del DOM).
- Server Actions (`"use server"`): Funciones asíncronas tipadas que reemplazan los tradicionales endpoints REST POST/PUT/DELETE, integrándose nativamente con la revalidación de caché de Next.js (
revalidatePath).
2. Seguridad en la Capa de Datos: PostgreSQL Row Level Security (RLS)
Delegar la seguridad exclusivamente en la capa de aplicación (APIs en Node.js) suele derivar en vulnerabilidades si un endpoint omite una comprobación de permisos. Con Row Level Security (RLS) de PostgreSQL, la autorización se define a nivel de motor de base de datos:
Con estas dos políticas, cualquier cliente anónimo que intente consultar artículos en borrador recibirá un resultado vacío directo del motor de base de datos, garantizando aislamiento total.
3. Despliegue Contenerizado con Docker Multi-Stage
Para producción, un contenedor no debe incluir dependencias de desarrollo ni herramientas del compilador. El patrón Multi-Stage divide la construcción en etapas aisladas:
Ventajas de esta configuración:
- Reducción del tamaño de imagen: Pasa de ~1.2 GB a menos de 140 MB.
- Superficie de ataque mínima: Al ejecutarse con un usuario no root (
nextjs), se reducen riesgos de escalamiento de privilegios. - Inmutabilidad y portabilidad: El mismo contenedor probado localmente con
docker-composees el que corre en servidores cloud o VPS.
Conclusiones
Construir software moderno requiere equilibrio entre agilidad y solidez arquitectónica. La convergencia de Next.js 15 para la experiencia de usuario y rendimiento web, Supabase RLS para la integridad de datos y Docker para operaciones reproducibles conforma una base de grado industrial lista para proyectos de escala empresarial.