En algunos casos las peticiones demoraban hasta mas de 1 segundo, esto debido a que la API estaba desplegada como una Vercel Function, esto me causaba muchos disgustos y decidí migrar a Docker y a un VPS privado.
El mal rendimiento también era debido a la base de datos, por esto mismo tome la decision de desplegar esta en PostgreSQL con Docker en el mismo VPS, esto tiene sus desventajas claro, pero así me aseguro un mejor rendimiento sin tener que invertir mucho dinero.
Gracias a hacer esta migración he aprendido sobre muchos temas, como ampliar mis conocimientos en Docker, el manejo de servidores, temas como nginx y temas de seguridad en los servidores.
Este ha sido uno de las mejores decisiones ya que el rendimiento del blog actualmente es muy bueno, pero me he encontrado con otros desafíos como actualizaciones en el código que actualmente hago a mano desde ssh
y temas de seguridad que antes no tenia con Vercel. Igualmente hay algunos servicios que aun tengo desplegados en Vercel como mi panel administrador y este va con muy buen rendimiento.
Para hacer el despliegue del blog el cual esta en Astro, tuve que hacer unos cambios con el adaptador, pase del de Vercel al de Node, este ultimo tiene un limitante el cual es que solo sirven rutas SSR. Para este proceso de despliegue utilice Docker con la siguiente configuración:
FROM node:lts AS base
WORKDIR /app
# By copying only the package.json and package-lock.json here, we ensure that the following `-deps` steps are independent of the source code.
# Therefore, the `-deps` steps will be skipped if only the source code changes.
COPY package.json package-lock.json ./
FROM base AS prod-deps
RUN npm install --omit=dev
FROM base AS build-deps
RUN npm install
FROM build-deps AS build
COPY . .
RUN npm run build
FROM base AS runtime
COPY --from=prod-deps /app/node_modules ./node_modules
COPY --from=build /app/dist ./dist
ENV HOST=0.0.0.0
ENV PORT=4321
EXPOSE 4321
CMD node ./dist/server/entry.mjs