We collaborated with a U.S.-based ad-tech startup to design, build, and maintain a Demand-Side Platform (DSP) capable of handling a throughput of 30,000 ad requests per second with response times under 120ms. Through a scalable microservices architecture, multi-tenant SaaS platform and a robust data pipeline we enabled the client to diversify their business and successfully enter the DSP market within their expected timeframe.
Wir arbeiteten mit einem Ad-Tech-Startup aus den USA zusammen, um eine Demand-Side Platform (DSP) zu entwerfen, zu entwickeln und zu warten, die in der Lage ist, 30.000 Anfragen pro Sekunde mit einer Antwortzeit von unter 120 ms zu verarbeiten. Durch eine skalierbare Microservices-Architektur, eine Multi-Tenant-SaaS-Plattform und eine robuste Datenpipeline haben wir es dem Kunden ermöglicht, sein Geschäft zu diversifizieren und erfolgreich in den DSP-Markt einzutreten – innerhalb des erwarteten Zeitrahmens.
Our client was a U.S.-based startup with a successful ad-exchange business. Seeking to expand their offerings, they aimed to build a Demand-Side Platform (DSP) to serve ads across multiple ad exchanges. However, with their engineering team focused entirely on their existing ad-exchange, they needed a technology partner to help design, develop, and maintain the DSP.
Unser Kunde war ein US-Startup mit einem erfolgreichen Ad-Exchange-Geschäft. Um sein Angebot zu erweitern, wollte er eine Demand-Side Platform (DSP) entwickeln, um Anzeigen über mehrere Ad-Exchanges zu schalten. Da das Engineering-Team vollständig auf den bestehenden Ad-Exchange fokussiert war, benötigte der Kunde einen Technologiepartner, der die DSP entwerfen, entwickeln und warten konnte.
The client had two major requirements:
Capable of handling up to 30,000 requests per second.
Respond within the strict deadline of under 120ms, which is crucial to the success of real-time bidding.
The platform needed to onboard clients, allowing them to create ad campaigns, set a target audience and budget, and monitor campaign performance.
Der Kunde hatte zwei Hauptanforderungen:
Fähig, bis zu 30.000 Anfragen pro Sekunde zu verarbeiten.
Antwortzeit von unter 120 ms, was für den Erfolg des Echtzeit-Biddings entscheidend ist.
Die Plattform musste Kunden onboarden, ihnen ermöglichen, Werbekampagnen zu erstellen, Zielgruppen und Budgets festzulegen und die Kampagnenleistung zu überwachen.
The project posed several challenges, particularly in understanding the complexities of the ad-tech domain, where real-time bidding (RTB) must occur before a webpage loads. To meet this, a response time of under 120ms was required to place bids in time. Additionally, the technical complexity of ad-tech, including creative filtering, request multiplexing, and spend analysis, added to the challenge.
Das Projekt stellte mehrere Herausforderungen dar, insbesondere das Verständnis der Komplexität des Ad-Tech-Bereichs, in dem Echtzeit-Bidding (RTB) stattfinden muss, bevor eine Webseite geladen wird. Hierfür war eine Antwortzeit von unter 120 ms erforderlich, um rechtzeitig Gebote abzugeben. Darüber hinaus stellte die technische Komplexität von Ad-Tech, einschließlich der kreativen Filterung, der Multiplexierung von Anfragen und der Ausgabenanalyse, eine zusätzliche Herausforderung dar.
After an extensive domain analysis, the problem was divided into three key components: a horizontally scalable bidding stack, a multi-tenant web application, and a robust data pipeline.
Given the real-time nature of bidding, we decided to build the bidding stack in C++ for optimal performance. However, developing a bidding stack from scratch would take 4-6 months, which exceeded the client's timeline
To accelerate development, we leveraged an open-source project called RTBKit, which provided foundational components like spend analysis, creative filtering, and request multiplexing. This reduced our development timeline to under 3 months. We then built additional features around RTBKit, ensuring the system could handle 30K requests per second and place bids within the 120ms deadline. By integrating these components seamlessly, we created a highly efficient, horizontally scalable bidding infrastructure.
The client required a platform that could support multiple organizations, allowing them to create and manage their ad campaigns. Each organization needed data isolation and role-based access controls for different team members.
We designed a multi-tenant backend where each organization was allocated a separate database, ensuring complete data isolation. To provide flexibility, we implemented a role-based access control (RBAC) system that allowed the organization's admin to assign permissions to roles, rather than hardcoding roles into the system. This provided granular control over access to features, enabling organizations to run full-fledged ad campaigns across various ad inventories.
The ad-serving platform generated a significant volume of events, such as impressions, clicks, and conversions, which needed to be tracked in real-time. The system had to ensure accurate billing and reporting based on these events.
To handle the large volume of ad events, we implemented a Kafka-based data pipeline. Kafka was chosen after experimentation due to its early yet powerful capabilities for managing high-throughput event streaming. The pipeline funneled ad event data into the application, ensuring persistence and scalability. This allowed for real-time tracking of ad events, which was crucial for campaign performance reports and billing accuracy.
Nach einer umfassenden Analyse des Fachbereichs wurde das Problem in drei Hauptkomponenten unterteilt: einen horizontal skalierbaren Bidding-Stack, eine Multi-Tenant-Webanwendung und eine robuste Datenpipeline.
Angesichts der Echtzeit-Natur des Biddings entschieden wir uns, den Bidding-Stack in C++ zu entwickeln, um eine optimale Leistung zu gewährleisten. Die Entwicklung eines Bidding-Stacks von Grund auf hätte jedoch 4-6 Monate gedauert, was den Zeitplan des Kunden überschritt.
Um die Entwicklung zu beschleunigen, nutzten wir ein Open-Source-Projekt namens RTBKit, das grundlegende Komponenten wie Ausgabenanalyse, kreative Filterung und Anfragenmultiplexierung bot. Dies verkürzte unsere Entwicklungszeit auf unter 3 Monate. Wir fügten dann zusätzliche Funktionen um RTBKit herum hinzu, um sicherzustellen, dass das System 30.000 Anfragen pro Sekunde verarbeiten und Gebote innerhalb der 120-ms-Frist abgeben konnte. Durch die nahtlose Integration dieser Komponenten schufen wir eine hocheffiziente, horizontal skalierbare Bidding-Infrastruktur.
Der Kunde benötigte eine Plattform, die mehrere Organisationen unterstützen konnte und es ihnen ermöglichte, ihre Werbekampagnen zu erstellen und zu verwalten. Jede Organisation benötigte eine Datenisolation und rollenbasierte Zugriffskontrollen für verschiedene Teammitglieder.
Wir entwickelten ein Multi-Tenant-Backend, bei dem jeder Organisation eine separate Datenbank zugewiesen wurde, um vollständige Datenisolation zu gewährleisten. Um Flexibilität zu bieten, implementierten wir ein rollenbasiertes Zugriffskontrollsystem (RBAC), das es dem Administrator der Organisation ermöglichte, Berechtigungen für Rollen zuzuweisen, anstatt Rollen fest in das System zu programmieren. Dies bot eine granulare Kontrolle über den Zugriff auf Funktionen und ermöglichte es den Organisationen, vollwertige Werbekampagnen über verschiedene Ad-Inventare hinweg zu betreiben.
Die Ad-Serving-Plattform erzeugte eine erhebliche Menge an Ereignissen, wie z. B. Impressionen, Klicks und Conversions, die in Echtzeit verfolgt werden mussten. Das System musste eine genaue Abrechnung und Berichterstattung auf Basis dieser Ereignisse sicherstellen.
Um das große Volumen an Ad-Ereignissen zu bewältigen, implementierten wir eine auf Kafka basierende Datenpipeline. Kafka wurde nach Experimenten ausgewählt, da es trotz seiner frühen Phase leistungsstarke Fähigkeiten zur Verwaltung von hochvolumigen Ereignisströmen bot. Die Pipeline leitete Ad-Ereignisdaten in die Anwendung weiter und stellte dabei die Persistenz und Skalierbarkeit sicher. Dies ermöglichte die Echtzeitverfolgung von Ad-Ereignissen, was für Kampagnenleistungsberichte und Abrechnungsgenauigkeit entscheidend war.
The platform was built in 3-4 months, followed by a couple of months of extensive quality and performance testing, resulting in a timely General Availability (GA) release.
The DSP was able to process 30,000 ad requests per second with sub-120ms response times, meeting the critical real-time requirements of the ad-tech domain.
We delivered an end-to-end solution, from initial design and architecture to development, quality assurance, and performance testing.
Die Plattform wurde in 3-4 Monaten gebaut, gefolgt von einigen Monaten intensiver Qualitäts- und Leistungstests, was zu einer rechtzeitigen General Availability (GA)-Freigabe führte.
Die DSP war in der Lage, 30.000 Ad-Anfragen pro Sekunde mit Antwortzeiten unter 120 ms zu verarbeiten und erfüllte die kritischen Echtzeitanforderungen des Ad-Tech-Bereichs.
Wir lieferten eine End-to-End-Lösung, von der ersten Konzeption und Architektur über die Entwicklung, Qualitätssicherung und Leistungstests.
Coriolis helped the client realize their vision of building a cutting-edge DSP platform. By leveraging an open-source solution and implementing a scalable architecture, we enabled the client to enter the DSP market on schedule. The platform not only met real-time performance requirements but also provided a flexible and secure environment for businesses to run and monitor ad campaigns, ensuring the client's diversification strategy was a success.
Coriolis half dem Kunden, seine Vision einer hochmodernen DSP-Plattform zu verwirklichen. Durch die Nutzung einer Open-Source-Lösung und die Implementierung einer skalierbaren Architektur konnten wir dem Kunden den Markteintritt im DSP-Bereich rechtzeitig ermöglichen. Die Plattform erfüllte nicht nur die Echtzeitanforderungen, sondern bot auch eine flexible und sichere Umgebung für Unternehmen, um ihre Werbekampagnen durchzuführen und zu überwachen, was den Erfolg der Diversifizierungsstrategie des Kunden sicherstellte.