← Volver al Blog

Infraestructura y DevOps

Transición controlada de hosting compartido a contenedores con Astro y CI/CD: experiencia de E Tech Code

Lecciones y decisiones técnicas de E Tech Code al migrar cinco sitios estáticos de hosting compartido a contenedores Docker en un VPS, logrando despliegues independientes y mantenimiento sin impacto cruzado.

Transición controlada de hosting compartido a contenedores con Astro y CI/CD: experiencia de E Tech Code

La gestión de múltiples sitios web en un entorno de hosting compartido puede convertirse en un desafío conforme crecen las necesidades de autonomía, seguridad y mantenimiento. En E Tech Code, nos enfrentamos a la necesidad de migrar cinco sitios estáticos hacia una solución que permitiera despliegues independientes y un mantenimiento más controlado, sin que los cambios en un proyecto afectaran a los demás. Esta experiencia nos llevó a adoptar contenedores Docker en un VPS, con integración de Astro y automatización CI/CD, asegurando así un entorno más robusto y flexible. A continuación, detallamos el proceso, las decisiones técnicas y los aprendizajes clave de esta transición.

Limitaciones del hosting compartido y razones para migrar

El hosting compartido es una opción común para alojar varios sitios, pero presenta limitaciones importantes cuando se gestionan múltiples proyectos. En nuestro caso, los cinco sitios estáticos compartían recursos y configuraciones, lo que significaba que cualquier actualización, error o cambio en uno podía afectar la disponibilidad o el rendimiento de los demás. Además, la falta de aislamiento complicaba la implementación de despliegues independientes y la automatización de procesos.

Estas restricciones nos llevaron a buscar una alternativa que ofreciera mayor control y separación entre proyectos. El objetivo era evitar interrupciones cruzadas y facilitar el mantenimiento, permitiendo que cada sitio pudiera actualizarse o restaurarse sin impacto en los demás. Así, la migración a un VPS con contenedores Docker se presentó como la opción más adecuada para nuestras necesidades.

Decisión técnica: Docker y VPS para aislamiento y control

La elección de Docker respondió a la necesidad de encapsular cada sitio y sus dependencias en entornos independientes, evitando interferencias entre proyectos. Docker permite definir imágenes específicas para cada sitio, asegurando que las configuraciones y versiones de dependencias sean consistentes y reproducibles. El VPS, por su parte, proporciona la flexibilidad para gestionar estos contenedores y asignar recursos de manera centralizada, sin las restricciones de un entorno compartido tradicional.

Otras alternativas, como servidores dedicados para cada sitio o servicios de hosting especializados, fueron descartadas por su mayor costo y complejidad operativa. La combinación de Docker y VPS ofreció el equilibrio necesario entre control, aislamiento y eficiencia para la escala de nuestros proyectos.

Integración de Astro en la arquitectura de contenedores

Cada uno de los cinco sitios estáticos fue construido utilizando Astro, una herramienta moderna que facilita la generación de sitios rápidos y optimizados. Al contener cada sitio en Docker, pudimos definir imágenes independientes, lo que permitió mantener separadas las dependencias y configuraciones de cada proyecto.

Esta integración facilitó el despliegue y la actualización, ya que cualquier cambio en el código de un sitio se traduce en una nueva imagen que puede desplegarse de manera aislada, sin afectar a los demás. Astro, además, contribuyó a mantener una estructura sencilla y un rendimiento óptimo en cada sitio, alineándose con la necesidad de autonomía y facilidad de mantenimiento.

Automatización de despliegues con CI/CD y control por etiquetas

Para garantizar que los despliegues fueran controlados y no afectaran a otros proyectos, implementamos pipelines de integración y entrega continua (CI/CD) para cada repositorio. Un aspecto clave fue configurar los pipelines para que solo se ejecutaran cuando un commit incluyera la etiqueta [deploy]. Esto añadió una capa de control, evitando despliegues accidentales y permitiendo que las actualizaciones fueran planificadas y seguras.

La automatización mediante CI/CD redujo los riesgos operativos y facilitó la gestión de los despliegues, ya que cada sitio cuenta con su propio pipeline independiente. Así, un fallo en el despliegue de un sitio no impacta a los demás, y se mantiene la autonomía en el ciclo de vida de cada proyecto.

Desafíos, ajustes y aprendizajes durante la migración

Durante la migración, enfrentamos varios desafíos técnicos y organizativos. Uno de los principales fue la correcta configuración de los contenedores para evitar conflictos de puertos y asegurar que cada sitio estuviera expuesto de manera adecuada. También fue fundamental documentar detalladamente los procesos de despliegue y configuración, para facilitar el mantenimiento y la incorporación de nuevos miembros al equipo.

Un aprendizaje importante fue la necesidad de automatizar desde el inicio. Inicialmente, algunas tareas manuales retrasaron los despliegues y generaron riesgos de error humano. La implementación de la regla del commit con [deploy] y la mejora de los pipelines CI/CD permitieron superar estos obstáculos, haciendo el proceso más eficiente y seguro.

Recomendaciones prácticas y conclusiones

Para quienes consideran migrar de hosting compartido a una arquitectura basada en contenedores, recomendamos:

  • Analizar la cantidad y complejidad de los proyectos para determinar si la inversión en VPS y contenedores es adecuada.
  • Utilizar herramientas modernas como Astro para sitios estáticos, que simplifican la construcción y el despliegue.
  • Implementar pipelines CI/CD con controles explícitos, como el uso de etiquetas en los commits, para evitar despliegues no deseados.
  • Documentar exhaustivamente la configuración y los procesos, facilitando el mantenimiento y la escalabilidad.
  • Realizar pruebas en entornos controlados antes de migrar a producción, para identificar posibles conflictos o errores.

La experiencia de E Tech Code demuestra que, con decisiones técnicas claras y una automatización adecuada, es posible mejorar la estabilidad y autonomía de múltiples proyectos, logrando un mantenimiento más sencillo y despliegues independientes sin afectar la operación diaria.

Sigue explorando

Desarrollo de Producto

Decisiones para limitar el alcance de una app sin perder su esencia: experiencia práctica en E Tech Code

Automatización operativa

Medición precisa de interacciones en WhatsApp: errores comunes y soluciones efectivas