AWS Case Study: Real-Time Ad Serving Platform Migration

2025-05-20

Customer had a real-time search ads serving platform hosted on premise datacenter without horizontal and geographical scalability support and it became an obstacle for the further growth, including planned expansions to other geographical regions (from the USA to Europe). A decision was made to migrate the platform into AWS, which included modernisation of most of its components to support cloud hosting.

Share:

Services:

  • Data Integration, Analytics, and Activation
  • Cloud Strategy and Migration

Got a project?

Harness the power of your data with the help of our tailored data-centric expertise.

Contact us

Solution

All real-time adserving components, such as publishers traffic routing, ads selection, configuration UIs (Campaign manager, Reporting UI) and adserving data processing were migrated to AWS-based solutions over the course of ~2 years.

All components were not simply ported to the cloud but rewritten from scratch to be cloud-native. This enabled Infrastructure as Code solutions and dynamic scalability of the system.

Problem_2.png

Here are a few examples of how on-prem solutions became cloud-native:

  • On-prem MySQL with a custom proprietary synchronization solution was replaced with AWS RDS and standard AWS cross-AZ and cross-region replication mechanisms.
  • Vertica, which was used for analytics and reporting, was replaced with Databricks and ClickHouse. Corresponding reporting jobs from the legacy Azkaban scheduler were also migrated to Databricks.
  • Aerospike cluster that was used for near real-time caching and context exchange between components was replaced with AWS ElastiCache Redis. In the future, when master-master replication will be needed, we are considering using the Redis Cloud solution of AWS DynamoDB.
  • Custom keyword matching solution that depended on on-prem infrastructure was migrated to AWS Elasticsearch database. It allowed easy scalability of the system with greater durability and richer matching logic and configuration.
  • Self-managed Kafka and RabbitMQ were simply replaced by their AWS SaaS versions.
  • Ad serving components (click tracker, SSP, DSP, budget capping system, and all others) were completely rewritten from scratch to be cloud-ready and hosted in AWS EKS. Configuration management was switched to AWS Parameter Store and AWS Secret Manager. Baremetal balancers were replaced with AWS balancers and EKS ingress controllers. Monitoring and alerting were also modernized and migrated to DataDog.
  • Comprehensive capacity planning was done for the main system components to prepare the system for future scaling.

The main challenge of the migration was to keep the existing ad serving alive while we are migrating to the cloud. The system was gradually, feature by feature, component by component, migrated to the cloud, and during that migration, on-prem environments were connected with the cloud system with AWS Direct Connect.

Solution.png

Result

  • By migrating full serving to the cloud infrastructure, internal serving latency was reduced by 90%.
  • Modernized components got new fresh UX, backend components leveraged recent version of Java, Spring and other technologies
  • Cloud versions of all components enabled dynamic system resizing, which was a key step towards 10x system scalability and expansion business to other geographies. All those changes allowed the system to be ready to receive more traffic if needed
  • Infrastructure and search solution maintenance were greatly simplified after migrating from self-hosted and custom solutions to SaaS alternatives
  • On-prem storages and services were decommissioned: MySQL, Vertica, Aerospike, RabbitMQ (in progress), Self-managed Kafka