Cuando empecé a trabajar en el lanzamiento de una web app quería probar algo nuevo: desplegar dos microservicios con una estrategia conectada. Un repositorio para backend que incluye API e Infraestructura como Código y otro repositorio para frontend con una aplicación Next.js. La idea fue crear una CodePipeline para el backend que aprovisionara Amplify y referenciara el repositorio del frontend, de modo que al hacer commit Amplify detectara los cambios y alojara el sitio.

Al principio cometí errores de concepto. Pensé que el frontend era solo Next.js y que podía usar next export para convertir todo a archivos estáticos porque Amplify ofrece un hosting estático muy sencillo. Configuré la exportación estática, la compilación terminó con éxito y el despliegue fue rapidísimo. Pero al abrir el sitio descubrí problemas graves: las rutas dinámicas no funcionaban, las rutas de API faltaban y las páginas con server side rendering dejaron de comportarse correctamente. Fue mi primer recordatorio de que la estrategia de despliegue importa tanto como conseguir que algo funcione.

Después de mucha lectura y pruebas encontré la solución en el modo standalone de Next.js. En lugar de exportar HTML estático, este modo empaqueta un bundle mínimo de servidor Node que permite SSR, rutas dinámicas y endpoints de API junto con contenido estático. Al desplegar en Amplify con este enfoque todo empezó a funcionar: páginas SSR, rutas dinámicas, rutas API y contenido híbrido estático y dinámico.

Mi estrategia de despliegue quedó así: la pipeline del backend despliega la infraestructura y crea la app de Amplify referenciando el repositorio del frontend. El repositorio del frontend contiene la configuración de build y el modo standalone de Next.js, mientras que Amplify se encarga de construir y desplegar automáticamente en cada commit. De este modo backend y frontend permanecen desacoplados como microservicios pero se integran inteligentemente en el flujo mediante IaC.

Lecciones aprendidas: no forzar exportaciones estáticas en aplicaciones que necesitan SSR o APIs porque se rompen funcionalidades clave; el modo standalone es la opción adecuada para Next.js en Amplify cuando hay mezcla de estático y dinámico; mantener pipelines separadas para backend y frontend es sano, pero hay que conectarlas con IaC para lograr integraciones reproducibles. Una buena estrategia de despliegue evita horas de debugging futuro.

En Q2BSTUDIO, empresa especializada en desarrollo de software y aplicaciones a medida, aplicamos estas buenas prácticas cuando diseñamos soluciones cloud escalables y seguras. Ofrecemos servicios de software a medida, inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure para acompañar cada proyecto desde la arquitectura hasta el delivery. Si buscas desarrollar una aplicación empresarial robusta y escalable podemos ayudarte a implementar pipelines y arquitecturas que soporten microservicios y despliegues automatizados, explorando además servicios de aplicaciones a medida y software a medida y opciones avanzadas en servicios cloud AWS y Azure.

También integramos inteligencia artificial y análisis con Power BI para convertir datos en decisiones, ofrecemos servicios de ciberseguridad y pentesting para proteger los despliegues y desarrollamos agentes IA y soluciones de ia para empresas que automatizan procesos y mejoran la operativa. Si te interesa optimizar tu pipeline o diseñar una arquitectura que conecte backend y frontend como microservicios, en Q2BSTUDIO tenemos la experiencia para hacerlo realidad.

Reflexión final: mi primer despliegue de microservicios conectando backend y frontend fue un aprendizaje valioso. Empecé confundido, probé un enfoque equivocado y aprendí que la elección del modo de compilación y la estrategia de integración marcan la diferencia. Hoy la pipeline funciona de forma estable entre entornos Dev y Prod y la verdadera ganancia fue aprender a diseñar una estrategia de despliegue que conecte servicios de forma correcta y sostenible.