Ambiente de pruebas bajo demanda con DevOps en AWS

Acerca de Pareto

Pareto SA, empresa argentina de préstamos personales 100% online, tiene el compromiso de desarrollar soluciones rápidas y efectivas para las necesidades de las personas. Al tener todos los procesos completamente online, sin perder la calidad humana y la respuesta empática a sus clientes, ofrece respuestas inmediatas y procesos sencillos.

El desafío

La compañía es la responsable de la producción de la aplicación móvil ¡GetAppa!, que permite hacer pagos online en varias tiendas de centros de compras en Argentina usando el celular del comprador. La aplicación móvil de este producto consulta varias APIs ya instaladas y funcionando en la plataforma de AWS.

Sin embargo, su deploy era ejecutado por una herramienta especializada en su propia tecnología, o sea, poseían su propio proceso de CI/CD, sin utilizar las herramientas de DevOps de AWS. Debido al aumento de demanda, la idea de mantener un ambiente de QA para pruebas automatizadas y manuales, con RDS y ElasticSearch, resultó ser una solución cara.

La compañía deseaba tener un entorno de QA que funcionara según la demanda y que no estuviera las 24 horas activo – o sea, con los mismos componentes, pero en menor escala. Para tal, necesitaban entender y diseñar todo el proceso, ya que los servicios como RDS, ElasticSearch y Elasticache no se pueden desconectar y reiniciar solamente cuando se utilizan.

La solución

Tras entender la demanda de Pareto, NubeliU Logicalis fue elegida como aliada de tecnología para gestionar las cuentas de AWS en conjunto con su fábrica de software. Además, tiene la responsabilidad de crear un proyecto de ambiente de pruebas según la demanda, desde un comando o página accesible a los desarrolladores. Se utilizaron los siguientes servicios de AWS:

  • EC2 para APIs;
  • Elasticache para control de sesión de usuario;
  • RDS para los bancos de datos relacionales;
  • AWS ElasticSearch clúster para velocidad en las consultas;
  • VPC y subnets para cada ambiente (QA y Producción);
  • ALB con certificados digitales para HTTPS controlados por ACM;
  • Route53 para control de DNS de sus dominios.

Al concluir el trabajo, el desarrollador tiene que ser capaz de lanzar el ambiente de pruebas y utilizarlo para probar las modificaciones realizadas en el producto. Este ambiente contiene EIPs previamente registrados en la herramienta de deploy de la fábrica de software y los datos del RDS son restaurados durante el lanzamiento del ambiente.

La solución presentada utiliza tareas de Cloudformation para construir todo el ambiente en el que se probará la aplicación, utilizando una VPC para ejecutar los servicios aisladamente, en un ambiente confiable y seguro, con subnets y Security Groups previamente construidos, con EIP asignados y registrados en la herramienta de instalación del sistema del cliente. Además, al iniciar las tareas de Cloudformation, se activarán las funciones Lambda por un script y ejecutarán el restore de uno de los backups del RDS (típicamente el del día anterior). A pedido del cliente, el ambiente solo se destruye mediante otro comando, ejecutado manualmente.

Diagrama

Los beneficios

Con la solución propuesta, al preparar las tareas de Cloudformation, el proceso de IaC queda configurado para la posible creación de un ambiente de disaster recovery. Además, se espera una reducción de costo del 75 % para el ambiente, mientras que el deploy de versiones estables y sin bugs tendrá un uptime de alrededor de 5 nueves, lo que impone a los ambientes una característica de alta disponibilidad de servicios gestionados. Con la adopción de los servicios en la nube de AWS, el cliente tendrá en sus manos una aplicación más segura y confiable para la ejecución de los servicios, considerando el uso de AWS IAM. Además, a través de la arquitectura diseñada por el equipo de Logicalis, el cliente recibió un proyecto con costo inferior al estimado inicialmente.