Saltar al contenido

Cómo mover instancias de Drupal en AWS

En nuestro blog post de hoy te contamos cómo hemos conseguido mover con éxito instancias de Drupal a Amazon Web Services para lograr una mayor seguridad y escalabilidad en un ecommerce de un importante cliente retail.

Nuestro cliente

Nuestro cliente es una multinacional, minorista de moda de lujo, con miles de empleados ubicados en diferentes países.

Sus necesidades

En la colección de requisitos iniales se nos indicaron las siguientes necesidades: 

  • Construcción de su portal interno con Drupal 8.7
  • Contar con un «staging environment»
  • Tener un «live environment»
  • Acceder a los servidores del front (servidores web) a través de ssh
  • Ganar estabilidad y escalabilidad
  • Hacer que el entorno sea seguro y protegido
  • Enfoque en la plataforma

Además también se especificaron requerimientos PHP / Drupal tales como:

  • PHP common (meta-package name: php7.2-common)
  • MySQL (package name: php7.2-mysql)
  • XML (php7.2-xml)
  • GD image library (php7.2-gd)
  • JSON (php7.2-json)
  • cURL (php7.2-curl)
  • Mbstring (php7.2-mbstring)
  • Zip (php7.2-zip)
  • FPM (php7.2-fpm)
  • Composer
  • Drush
  • Nodejs
  • GIT (just for Staging)

Nuestra propuesta basada en Drupal

Nuestra propuesta se ha basado en la idea de proporcionar Drupal como PaaS- Plataforma como un servicio, para que el cliente se centre sólo en el verdadero negocio principal: el portal interno. El resultado de este approach es que nuestro cliente se olvide de las limitaciones y problemas de infraestructura y se centre en Drupal.

La forma más efectiva de tener Drupal como una PaaS es AWS Elastic Beanstalk.

Configuración de Beanstalk

Nuestra propuesta ha sido considerar el siguiente setup de Beanstalk:

ServicioCantidadDescripción
AWS Elastic Beanstalk2Elastic Bean PHP for live
Elastic Bean PHP for staging
Amazon EC232 web servers on T2.Medium instances for live
1 web server on T2.Medium instance for staging
Amazon RDS2Multi A-Z configuration, RDS db.T3.Medium MySQL with 20 GBs for live
Multi A-Z configuration, RDS db.T3.Medium MySQL with 20 GBs for staging
Elastic Load Balancer1High availability for production (estimating 50 GBs per month)
Amazon Elastic File System250 Gbs for live
50 Gbs for staging
Autoscaling1Autoscaling service

Actividades

A continuación os mostramos una lista de las principales macroactividades que llevamos a cabo para tener una adecuada puesta en escena de Drupal / live environment en AWS.

  • Lanzamiento de un instancia DB en Amazon RDS
  • Lanzamiento de un Elastic Beanstalk Environment
  • Configuración de Ajustes de Seguridad y Environment Properties
  • Configuración y Deploy the Application
  • Instalación Drupal
  • Actualización configuración Drupal y eliminación de Accesos Restringidos
  • Cleanup
  • Habilitar el Elastic Beanstalk Command Line Interface (EB CLI)
  • Instalación de los módulos PHP necesarios
  • Configuración del custom domain name
  • Habilitar https

Drupal en Beanstalk

Tener una aplicación que funciona como un PaaS en Elastic Beans necesita un pequeño cambio en los procedimientos habituales de mantenimiento. De hecho, con los Elastic Beans cada vez que se necesita actualizar la aplicación – en este caso Drupal – tenemos dos opciones

  • crear y subir a la consola de Elastic Beanstalk un archivo zip con las correcciones necesarias.
  • usar la línea de comando (EB CLI) para crear, configurar y desplegar.

Teniendo en cuenta el conjunto de habilidades de nuestro equipo, decidimos apostar por la última opción.

Los resultados

Aplicación

El portal de Drupal está funcionando sin problemas desde que se ha proporcionado como PaaS.

Escalabilidad y estabilidad

El cliente ya no se enfrenta al problema que solía tener con el pico de acceso, ya que el servicio es auto-escalable. El portal es estable y las limitaciones de infraestructura ya no son un problema. 

Seguridad

Toda la infraestructura es totalmente segura gracias a las normas de seguridad del AWS. Los roles de acceso están bien definidos y las políticas son restrictivas pero flexibles. Por supuesto, como mejores prácticas, Drupal debe ser actualizado constantemente de acuerdo a sus correcciones de seguridad.

Foco en Drupal

Ahora el cliente es libre de centrarse en el desarrollo de nuevas características para su portal interno olvidándose de las limitaciones de infraestructura.