Un backend, varias marcas, ninguna fuga entre ellas
Una plataforma headless multi-tenant y las migraciones de WordPress a Astro que sirve.
- Rol
- Iniciativa mía; arquitectura y construcción
- Tiempo
- 4 meses
- Stack
- Next.js · Postgres · Prisma · Astro
- Equipo
- Yo, más un colaborador en uno de los sitios
Problema
Varias marcas vivían en instalaciones separadas de WordPress, lentas y difíciles de mantener consistentes. Necesitaban una sola fuente de verdad, sin que una marca viera nunca los datos de otra.
Restricciones
- El aislamiento tiene que sostenerse aunque el código de la aplicación esté mal.
- Los sitios tienen que seguir arriba cuando la API se cae.
- Salir de WordPress no puede costar tráfico de búsqueda.
Decisiones
- Impuse el aislamiento entre tenants en cuatro capas (un cliente con alcance que falla cerrado, prohibiciones en el lint, triggers de base de datos en cada relación y un test de guardia por relación), después de que las llaves foráneas compuestas rompieron decenas de tests con creaciones anidadas y las descarté.
- Congelé el contrato de la API para que solo crezca y copié el kit cliente byte por byte en cada sitio, con checksum y chequeos de deriva.
- Les di a los sitios un respaldo validado con la última copia buena y un canario de recuperación, así una página guardada en caché mientras la API estaba caída se cura sola.
- Armé las redirecciones desde cuatro fuentes (sitemaps, la Wayback Machine, el plugin viejo de redirecciones y Search Console) e hice que el script de migración fallara ante cualquier redirección que termine en un 404.
Resultado
Los sitios salieron de WordPress hacia una sola plataforma, más rápidos y con un solo lugar para cambiar contenido.
- LCP móvil 5,7 s → 1,7 s en uno de los sitios
- Best Practices 78 → 100
- Unos 4.300 tests unitarios y 400 de integración
Créditos
Uno de los sitios construidos sobre la plataforma tuvo otro colaborador.