Cómo escalar tu gestor de contenidos con Amazon Web Services

Nov 12 2018

 

Por Javier Díaz Parrilla y Antonio Miguel Pérez Rivera

 

Dentro del catálogo de servicios de infraestructura proporcionados por Amazon, podemos destacar el servicio de auto-escalado, que nos permite garantizar que el número de instancias disponibles es el correcto para controlar la carga de la aplicación.

 

Al usar este servicio, nuestras aplicaciones disfrutan de los siguientes beneficios:

 

•    Una mejor tolerancia a errores: Podemos detectar cuándo una instancia está en mal estado para reemplazarla por otra sana.

•    Una mejor disponibilidad: Permite responder a un aumento en la demanda de tráfico, introduciendo nuevas instancias.

•    Una mejor administración de coste: Permite aumentar y reducir de forma dinámica el número de instancias dando servicio.

 

Magnolia, por su parte, es distribuida en forma de dos tipos de aplicaciones web: Una instancia Author y “N” instancias Public. La instancia Author permite a los editores introducir el contenido, mientras que las instancias Public permiten proporcionar el contenido al usuario.

 

Un entorno productivo, por tanto, tendrá la siguiente morfología:

 

Al añadir una nueva instancia Public a este modelo, el contenido publicado almacenado en la instancia Author debe propagarse a la nueva instancia introducida. A este proceso se le denomina “sincronización de instancias”.

 

¿Cómo podemos configurar nuestros servicios de Amazon Web Services para que, a la hora de producirse un evento de autoescalado, se sincronice el contenido publicado de la instancia de Author con esta nueva máquina?

 

El esquema de la solución es el siguiente:

 

 

Los elementos que intervienen en el sistema son:

 

•    Un grupo de auto-escalado, encargado de levantar y parar las distintas instancias públicas que sean necesarias.

•    Un conjunto de topics SNS, que servirán como canales de comunicación entre el grupo de auto-escalado y las funciones Lambda.

•    Un conjunto de funciones Lambda (dos funciones Lambda encargadas, respectivamente, de dar de alta a la instancia recién creada como suscriptora de la instancia de Authoring y de dar de baja a esta instancia, según proceda; y una función Lambda encargada de realizar peticiones a la API de AWS y obtener las direcciones IP)

•    Un balanceador de carga, encargado de distribuir de forma equitativa la carga entre las distintas instancias públicas presentes en el sistema.

 

El funcionamiento del sistema, en caso de que el grupo de auto-escalado decida que es necesario levantar una nueva instancia EC2, es el siguiente:

1.     El grupo de auto-escalado levanta la instancia y, al hacerlo, envía un mensaje a través del topic SNS intermedio.

2.     La introducción de un mensaje nuevo en el topic disparará la ejecución de una función Lambda intermedia, que realizará las peticiones pertinentes a la API de AWS y trasladará la información obtenida al topic de lanzamiento.

3.     Este mensaje introducido en el topic de lanzamiento, a su vez, disparará la ejecución de una función Lambda encargada de dar de alta a la instancia Public recién creada como suscriptora de la instancia de Author.

4.     Tras esperar un minuto, arrancará la sincronización y se propagará el contenido publicado desde la instancia de Author hasta la instancia creada.

 

En caso de que el grupo de auto-escalado decida apagar una instancia, el funcionamiento será el siguiente:

1.     El grupo de auto-escalado para la instancia y, al hacerlo, envía un mensaje a través del topic SNS intermedio.

2.     La introducción de este mensaje en el topic intermedio, disparará la ejecución de una función Lambda intermedia, que realizará las peticiones a la API de AWS y trasladará la información obtenida al topic de parada.

3.     Este mensaje introducido en el topic de parada, a su vez, disparará la ejecución de una función Lambda que dará de baja a la instancia Public recién apagada como suscriptora de la instancia de Author.

 

Si quieres conocer más, echa un vistazo al webinar: https://bit.ly/2QCvewn

 

 

Javier Díaz Parrilla

Antonio Miguel Pérez Rivera


Comparte este artículo

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.