Blog de Amazon Web Services (AWS)
Arquitecturas en la nube altamente escalables: la experiencia de Adkomo
Por Frédéric Deschamps, Fundador y CEO, Adkomo. Reda Benzekri, Director de Tecnología, Adkomo. Daniel Neri, Solutions Architect, Amazon Web Services. Marta de Esteban Belzuz, Territory Manager, Amazon Web Services
El desafío
Adkomo es una agencia de publicidad digital global con sede en Barcelona. La empresa ofrece soluciones de adquisición de usuarios, generación de leads y branding para cientos de anunciantes y agencias. A medida que nuestro negocio crecía, empezamos a experimentar problemas con nuestra arquitectura monolítica. “Empezamos a tener problemas de fiabilidad, como re-direccionamientos y tiempos de espera lentos.”, dice Frédéric Deschamps, fundador y CEO de Adkomo. “Para un usuario de Internet, incluso unos pocos segundos de retraso pueden tener un impacto negativo. Si Adkomo no puede redirigir a un usuario casi instantáneamente a la página de un cliente, el usuario reducirá el flujo de actividad y el compromiso se verá perjudicado”. Además de tener más fiabilidad, Adkomo necesitaba más escalabilidad, especialmente para respaldar el rápido crecimiento de la empresa (casi del 100%) y las nuevas soluciones que se estaban desarrollando. La arquitectura monolítica de su incipiente infraestructura tecnológica no tenía la capacidad de escalar verticalmente y menos horizontalmente.
De la arquitectura monolítica a los microservicios
Reda Benzekri, director de tecnología de Adkomo, trabajó con su equipo para empezar a dividir las aplicaciones en microservicios más pequeños y con funcionalidades más especificas utilizando un patrón de arquitectura denominado Domain Driven Design (DDD): “Decidimos optimizar nuestra estructura de código para mejorar el rendimiento y la escalabilidad”.
La solución
El procesamiento de 20 millones de eventos al día requiere motores informáticos potentes y redes de baja latencia. Para reducir el tiempo de acceso, el procesamiento (entre 30 y 60 ms) y la redirección instantánea, el tráfico entrante del sitio web pasa a través de Elastic Load Balancing (ELB) utilizando el algoritmo Round-Robin antes de redirigir a los servicios NGINX y PHP-FPM, que se ejecutan en instancias Amazon Elastic Compute Cloud (EC2) con sistema operativo Debian y de tipo C5d, optimizadas para cargas de computación intensivas, perfectas para aplicaciones que requieren el acceso a almacenamiento local de alta velocidad y baja latencia (p.e. codificación de video, manipulación de imágenes, etc.). Los ELB redirigen el tráfico a nuestros servicios frontend y backend, y distribuyen la carga en todas las instancias EC2 dentro del grupo de auto escalado, lo que mejora nuestra capacidad para responder a solicitudes imprevistas y tener la flexibilidad necesaria en nuestra infraestructura.
Además, los datos publicitarios de Adkomo se almacenan en memoria caché (2500 keys = 17 Gb/24h) a través del servicio gestionado Amazon Elasticache con motor Redis para absorber el trafico de sola lectura dirigido las bases de datos PostgreSQL de Amazon RDS con el objetivo de reducir la latencia del sistema. En detalle, las políticas que se implementan en los nodos de ElastiCache permiten eliminar todos los datos almacenados en caché después de 24 horas, con el fin de tener los datos más actualizados y para que la capa informática pueda recuperar la información necesaria más rápido.
Para el web hosting, Adkomo utiliza el servicio de almacenamiento de objetos de AWS con “11 nueves” de durabilidad, Amazon Simple Storage Service (S3) con el objetivo de hospedar contenido estático y distribuirlo a sus usuarios en todo el mundo por medio de la red de distribución de contenidos (CDN) a baja latencia y completamente gestionada, Amazon CloudFront, y sus – al día de hoy – 225 puntos de presencia (PoP) globales interconectados mediante la red troncal de AWS.
En términos de seguridad y conformidad, toda la infraestructura está aislada mediante Amazon Virtual Private Cloud (VPC), y toda la capa de almacenamiento y lógica se encuentra dentro de subredes privadas para proteger el acceso externo a los recursos. La VPC está ubicada en París, Francia, para cumplir con el Reglamento general de protección de datos (RGPD). Como herramientas de seguridad, se emplean los firewall virtuales nativos de AWS (Security Group y Network Access Control Lists) para regular el trafico de salida y de entrada en cada interfaz de red y subred, además de AWS Shield para la defensa perimetral contra ataques DDoS y AWS Identity and Access Management (IAM) para la administración segura de los accesos a todos los servicios de la plataforma. En fin, para el monitoreo de todos los recursos en la nube, Adkomo emplea el servicio de monitorización serverless Amazon CloudWatch, y el servicio de logging y auditoría Amazon CloudTrail, manteniendo bajo control la arquitectura a través de su sistema de alarmas y dashboard.
A continuación, el esquema de alto nivel de la arquitectura de la aplicación web de Adkomo:
Figura 1 – Arquitectura de la aplicación web de Adkomo
Conclusión
Por qué confiar en Amazon Web Services
Antes de seleccionar Amazon Web Services, Adkomo evaluó varios proveedores de nube. Después de analizar algunos de los principales aspirantes, Adkomo concluyó que AWS era la plataforma más completa (según la oferta de servicios – 175+), rentable, fiable, segura, escalable y de alto rendimiento. En sus palabras:
“AWS nos permite administrar el volumen de tráfico proveniente de todos nuestros socios. Ahora podemos ofrecer fácilmente más de 20 millones de clics al día y dejar de experimentar el tipo de inaccesibilidad que sufríamos con nuestra arquitectura anterior. ¡Ahora podemos seguir innovando y escalando a un ritmo más rápido!” – Reda Benzekri, CTO.
Sobre los autores
Frédéric Deschamps es el CEO de Adkomo, agencia de Performance Marketing especializada en adquisición de usuarios a través de los canales de Movil, Email Marketing, Display, Native Ads, y Social. | |
Daniel Neri es Arquitecto de Soluciones de AWS en Iberia. Trabaja con clientes en el sector de PyMEs y cubre distintas tecnologías con foco en redes de telecomunicaciones. | |
Marta de Esteban Belzuz es Account Manager de AWS en Iberia. Se dedica a ayudar a los clientes a acelerar sus negocios y su proceso de transformación digital en la nube de AWS. |