DevOps para entorno de producción asegura autoscaling y genera un cambio cultural

Acerca de IMS

IMS, filial de Sony Pictures Television Networks, es la compañía líder en comunicación y mercado digital que crea alianzas con negocios de rápido desarrollo que buscan ampliar sus mercados. Ayuda a que las marcas anunciantes logren obtener nuevos niveles de atracción y a crecer mediante un ecosistema exclusivo de alianzas comerciales. Además, posee soluciones creativas y de contenido, servicios de administración e inversión en medios digitales.

El desafío

El sistema One fue creado por IMS para controlar la venta y el retorno de espacios publicitarios en diversos sitios y medios digitales. Con 3 aplicaciones y 16 micro servicios y sitios, los equipos de desarrollo encontraban problemas de escalabilidad y deploy de sus aplicaciones, además de dificultades con el banco de datos, que presentaba problemas de lentitud y demandas frecuentes de aumento de capacidad.

Los desarrolladores no tenían un ambiente estandarizado de desarrollo y, constantemente, las aplicaciones no funcionaban en QA o Producción debido a la ausencia de bibliotecas que estaban presentes en las computadoras de los desarrolladores y no eran declaradas en los paquetes de deploy a Producción y QA.

La solución

Después de entender el desafío de IMS, NubeliU Logicalis fue elegida como aliada de tecnología para implementar una estructura que atendiera los requisitos de la empresa. Para tal, se desarrolló una solución basada en los siguientes componentes:

  • AWS Elastic Beanstalk como ambiente de los sistemas;
  • AWS RDS;
  • AWS Elasticache para control de sesión de usuarios;
  • Gitlab para repositorio remoto de código;
  • Gitlab-CI para control del pipeline DevOps;
  • Logentries para almacenamiento y consulta de logs;
  • Docker.

En la primera etapa, se desarrollaron las definiciones en Terraform para crear la infraestructura de VPC y subnets, divididas en dos grandes VPCs distintas que no tenían comunicación una con la otra para los ambientes de QA y Producción.

En la segunda etapa, se crearon Dockerfiles para cada una de las aplicaciones, optimizados para garantizar un deploy rápido, una vez que la imagen del contenedor se crea dentro de cada instancia EC2 lanzada por Elastic Beanstalk.

Después, se crearon las aplicaciones y ambientes de AWS Elastic Beanstalk y sus definiciones y personalizaciones, almacenadas junto con el código de la aplicación, y con los procesos de CI/CD en el Gitlab-CI. Además, se crearon varias imágenes personalizadas, ya que había una falta de estandarización del framework de desarrollo y un aumento significativo en el tiempo de deploy de la aplicación, para que fueran las bases de cada uno de los componentes, presentando así una imagen con las herramientas de línea de comando de AWS, utilizadas durante el proceso de integración continua.

Cada ambiente de AWS Elastic Beanstalk posee su propio ELB, que permite accesos HTTP y HTTPS externos. Los accesos HTTP son redireccionados a HTTPS por la personalización de NginX distribuido en las instancias Amazon Linux de Elastic Beanstalk. Los certificados digitales para HTTPS son controlados por ACM y validados por DNS. El DNS del cliente no se encuentra en el Route53.

Algunos sistemas tienen sus sitios web totalmente almacenados en S3 y distribuidos por Cloudfront. Los sitios web estáticos son construidos también por el proceso de CI/CD y enviados a S3. Las VPCs y subnets, AWS RDS para la configuración, operación y escalabilidad de los bancos de datos en la nube. AWS Elasticache y Security Groups son gestionados por declaraciones de Terraform. Como servicio de soporte, los ambientes son evaluados todos los meses, y, en caso de ser necesario, sus versiones son actualizadas.

Además, para definir un ambiente de desarrollo basado en Docker, NubeliU Logicalis trabajó con los desarrolladores para definir la herramienta docker-compose y la mejor utilización del sistema de versionamiento de código, Gitlab, siguiendo las buenas prácticas del proceso conocido como Gitflow.

Como servicio de soporte, Logicalis evalúa los ambientes todos los meses usando el sistema MaaS, y, en caso de ser necesario, actualiza las versiones. De esta forma, la creación de nuevos ambientes y verificación de errores en deploys y en la aplicación es responsabilidad de Logicalis, además de ofrecer soporte a los desarrolladores de IMS para que sigan las mejores prácticas de mercado para la gestión de workflow del código.

Diagrama

Los beneficios

Gracias a la solución propuesta de autoscaling, de AWS Elastic Beanstalk, se hizo posible que las aplicaciones de IMS soportaran la carga estacional de accesos debido a eventos como Black Friday, que impulsan las compras en línea, sin la necesidad de preparar una infraestructura ociosa para tal. Con la utilización de RDS se resolvió la cuestión de escalabilidad, y se logró la automatización para dimensionar la capacidad del banco de datos de acuerdo con su utilización. También es posible replicar el banco de datos al hacer el cifrado de los datos críticos del ambiente de Q&A.

Considerando la adopción de servicios en nube de AWS, el equipo de Logicalis proporcionó al cliente ambientes altamente disponibles, seguros y confiables, puesto que se adoptaron las mejores prácticas de AWS IAM.

Además, hubo un cambio cultural en el proceso de versionamiento de código y en la forma como los desarrolladores preparan las aplicaciones. El uso del mismo ambiente de contenedores durante la fase de desarrollo evita que las bibliotecas preexistentes en las computadoras de los desarrolladores sean dejadas a un lado en las referencias de las configuraciones de deploy. Hubo también una facilidad de deploy en el ambiente de QA, lo que permitió ejecutar pruebas automatizadas y asegurar un deploy en producción libre de errores. El proyecto implementado por el equipo de Logicalis proporcionó una reducción del costo estimado al principio por el cliente y logró cumplir los propósitos iniciales.