Consejos para migrar servicios en Amazon AWS

Cuando se trabaja con infraestructuras grandes, sobre todo cuando definimos una nueva infraestructura para un servicio ya existente, llega el momento de llevar a cabo el cambio final, y empezar a utilizar todos los servicios con el nuevo entorno.

Si vuestra infraestructura nueva está en Amazon AWS, estos sencillos consejos pueden hacer que vuestra migración sea más cómoda.

Usa los pesos de Route 53

El servicio DNS de Route 53 permite asignar pesos a las distintas entradas. Esto es muy útil para poder ir cambiando el tráfico poco a poco de las IPs antiguas a las nuevas, y ver como se comporta nuestra plataforma a medida que el tráfico aumenta.

Lo único que tenemos que hacer es crear dos entradas iguales, apuntando cada una al nuevo destino, y repartir el peso total (255) entre cada entrada. A medida que lo vayamos cambiando, Amazon dirigirá más tráfico al nuevo destino hasta completar el proceso.

“Calienta” los balanceadores ELB

La infraestructura de Amazon es reactiva ante los distintos incrementos o decrementos de tráfico que se van produciendo.

En los balanceadores de carga ELB, cuando el tráfico se incrementa de golpe, es normal que las IPs de estos balanceadores cambien, y la latencia disminuya aunque el tráfico aumente.

Esto parece indicar que Amazon detecta el aumento de carga y cambia a un ELB con más capacidad que pueda garantizar una respuesta adecuada para el nuevo tráfico.

Por eso, antes de migrar, es recomendable lanzar un alto número de peticiones al balanceador (o a toda la infraestructura) usando Jmeter o un programa similar, para que el balanceador detecte el cambio de tráfico y nos asigne nuevos balanceadores de más capacidad. Así estaremos más preparados para procesar el nuevo tráfico.

Carga la cache

Si tu nueva infraestructura tiene un sistema de cache distribuida como CloudFront o Fastly, podemos adelantarnos al cambio y mejorar el rendimiento de esta (mientras reducimos la carga de la plataforma) precargando contenido en ella.

Si esperamos que la mayor parte del tráfico venga de una zona concreta, al lanzar las peticiones desde esa zona el sistema pedirá y almacenará en su cache el resultado, por lo que al realizar el cambio no será necesario hacer las peticiones de nuevo.

Deja generados los contenidos estáticos

Si nuestra infraestructura está preparada para generar contenidos estáticos (por ejemplo recortes de imágenes con Lambda contra S3), dejar ya generados aquellos contenidos que esperamos van a ser utilizados evitará una carga innecesaria en los primeros momentos del cambio de plataforma.

Prevee el escalado

Salvo que nuestra plataforma sea totalmente serverless, lo normal es que tengamos previsto que las instancias de EC2 escalen (se activen nuevas instancias ante un aumento de carga).

Este proceso (dependiendo de su configuración), puede llevar varios minutos, durante los cuales el rendimiento de la plataforma puede reducirse, o incluso detenerse si el aumento de carga es muy alto.

Por eso, para la migración de plataforma es recomendable comenzar con una o dos instancias de más, que nos permitan evitar problemas si recibimos más carga de la esperada, o si hemos dimensionado por defecto nuestros recursos.

En resumen, prepárate para lo peor e intenta dejar todo generado o preparado antes de empezar, para que el cambio sea lo menos traumático posible.