Cómo migrar un sitio web sin interrumpir el servicio

La tarea de migrar un sitio web no es particularmente sencilla.

Obviamente, no todos los sitios tienen la misma infraestructura, con lo cual, lo que te voy a contar no necesariamente aplica a tu caso, pero espero que te lleves algunas ideas que puedan ayudarte.

Voy a suponer por el momento que tu sitio tiene los componentes típicos:

  1. Una base de datos
  2. Un paquete de código

El hecho de que tu sitio esté online significa que existe, al menos, un servidor donde está alojado.

Y por último, hay un par de componentes muy importantes si el sitio es accesible para todo público:

  1. Un dominio
  2. Una serie de registros de DNS

Supongamos que el servidor donde está la base de datos no es el mismo que donde reside la aplicación, es decir, lo que querés hacer en principio es migrar tu código a algún otro servidor (dentro o fuera del hosting actual).

Mi recomendación es que antes de migrar hagas un relevamiento detallado de qué infraestructura estás usando (y, esperablemente, está funcionando):

  • ¿Qué versión de PHP estás usando? ¿Qué paquetes tiene instalado?
  • ¿Qué tipo de webserver? ¿Qué versión?
  • ¿Qué motor de base de datos? ¿Qué versión?
  • ¿Qué permisos tienen los directorios de la aplicación?
  • Etc…

Una vez tengas claro este panorama, lo siguiente es armar un plan de pruebas básico que permita detectar rápidamente si algo no quedó 100% bien durante el traspaso.

No hay que hacer mucho acá, sólo saber cuáles son las funcionalidades críticas del sitio y qué experimentos permitirán determinar que están ok.

La estrategia general va a ser clonar tu sitio actual y, por un tiempo lo más breve posible, tener el original y el clon conviviendo lo más armoniosamente que se pueda… y luego matar al clon.

Por qué migrar de servidor

Empecemos pensando en qué razones tendrías para migrar de servidor.

Se me ocurren varias:

  • Conseguiste uno más barato
  • El hosting actual no te da el soporte que necesitás
  • El hardware te quedó chico

O, como le ocurrió a un cliente mío recientemente, el tráfico te superó y tenés que implementar balanceo de carga.

Cómo migrar el código de tu sitio

Migrar el código suele ser la parte más fácil.

Si lo tenés versionado simplemente se trata de hacer un checkout (o un git clone o similar) en tu nuevo servidor.

Si no lo tenés versionado vas a necesitar subirlo de alguna forma… ftp, scp, rsync… la que prefieras.

Una vez tengas el código presente en tu nuevo servidor te va a tocar modificar las configuraciones para dejar andando.

Algo a lo que tenés que prestar atención es que el usuario de tu aplicación esté habilitado para realizar consultas desde la nueva IP (Al menos en el caso de MySQL esto puede ser un problema).

Cómo migrar la configuración de tu sitio

Nuevamente, esto dependerá en gran medida de cómo lo tengas montado actualmente.

Lo ideal sería que la dependencia respecto del webserver sea mínima para evitar problemas de incompatibilidades.

Por ejemplo, algo que suele hacerse con los sitios montados sobre Apache es usar el archivo .htaccess… claramente, si vas a migrar hacia un servidor con NginX la cosa se va a complicar.

Si la configuración no está versionada vas a tener que asegurarte de que el hosting de destino tenga la misma configuración (idealmente) o que las configuraciones del nuevo servidor sean compatibles con tu aplicación.

Cómo migrar un dominio a un nuevo servidor

Acá se trata de cambiar los registros de DNS para que apunten a la IP del nuevo servidor.

En tu servidor de nombres vas a encontrar un registro tipo A que apunta a la IP de tu servidor actual (Y tal vez encuentres uno tipo AAAA con la dirección IPv6).

Cuando cambies ese valor cada vez que alguien escriba http://tusitio.com ingresará al servidor que responda a la nueva IP.

El problema es que los cambios de DNS no son inmediatos (Pueden tomar hasta 48 hs!).

Y otro pequeño problema es cómo probar todo antes de darle al botón rojo.

Un truco que podés usar es hacer el cambio en forma local antes de tocar los DNS.

El tema es simple: tu computadora tiene una serie de definiciones de nombres en un archivo y esa definición toma prioridad sobre cualquier otra información que se encuentre en Internet (Por un tema de optimización principalmente).

Ese archivo está en /etc/hosts si usás Linux o similar o en C:\Windows\System32\drivers\etc\hosts si usás Windows.

Se ve más o menos así:

Lo que podés hacer es agregar una línea tipo:

XX.YY.ZZ.WW     tusitio.com

Y a partir de ahí, cualquier petición que hagas, no importa si es a través de un navegador, cURL o lo que fuera, va a ir a la IP XX.YY.ZZ.WW (No importa lo que diga el DNS).

Una vez hayas hecho todas las pruebas y tengas confianza en que todo está en su lugar podrás efectivizar el cambio de los DNS.

Por precaución te recomiendo no dar de baja el hosting original por un tiempo prudencial (Una semana, un mes… depende qué tan conservador quieras ser) pero claramente la prueba de fuego llegará cuando lo hagas 🙂

En conclusión: no es una magia oculta pero para no tener sorpresas desagradables más vale dedicar algo de tiempo a planificar la mudanza.

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.