惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
小众软件
小众软件
The Cloudflare Blog
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - 叶小钗
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Y
Y Combinator Blog
D
Docker
Microsoft Azure Blog
Microsoft Azure Blog

DigitalOcean Community Tutorials

It's Time to Break Up with Your Cloud: Why AI Teams are Switching We Built a Private-Document AI App to Test Platform Security. Here Is What We Could Actually Verify. PostgreSQL Explained: A Complete Beginner-to-Advanced Guide How To Install and Configure Postfix on Ubuntu How To Build a Web Application Using Flask in Python 3 Build AI Reading List with DigitalOcean Functions and Mistral How To Concatenate Strings in Python How to Allow MySQL Remote Access Securely How To Install and Use Docker on Rocky Linux How To Build a Multi-Agent AI System with Docker Agent DSPy Use Cases: Build Optimized LLM Pipelines How To Submit AJAX Forms with jQuery Build an AI-Powered GPU Fleet Optimizer with the DigitalOcean AI Platform ADK Monitor GPU Utilization in Real Time: A Complete Guide Reduce File Size of Images in Linux - CLI and GUI methods Reduce PDF File Size in Linux: Tools and Methods How To Set Up a Private Docker Registry on Ubuntu How To Troubleshoot Terraform: Errors and Fixes How to Use Go Modules Python Multiprocessing Example: Process, Pool & Queue Convert Class Components to Functional Components with React Hooks How To Install and Configure Ansible on Ubuntu LLM Tokenizers Simplified: BPE, SentencePiece, and More How To Monitor System Authentication Logs on Ubuntu How to Use Traceroute and MTR to Diagnose Network Issues How to Deploy Postgres to Kubernetes Cluster Importing Packages in Go: A Complete Guide Create RAID Arrays with mdadm on Ubuntu How To Make an HTTP Server in Go How To Set Up Time Synchronization on Ubuntu
Deploy ADX Business on DigitalOcean
Sri Charan Madhavapeddi, Derek Ding · 2026-06-10 · via DigitalOcean Community Tutorials

Introduction

Deploy ADX Business on DigitalOcean when you need regional control, predictable bandwidth pricing, and managed data services for programmatic ad exchange (ADX) workloads. The ad exchange industry drives digital advertising by automating the buying and selling of ad inventory through real-time auctions.

The ad exchange industry could not exist at its current scale without cloud computing. This guide explains ADX architecture, keeps the latency and cost numbers ADX teams plan around, and maps each layer to DigitalOcean products with links to official documentation.

Key takeaways

  • An ADX stack has three layers: SSP (sell side), ADX (auction core), and DSP/DMP (buy side). The user-facing path often targets ~150 ms total, with the full pipeline under 100 ms and internal ADX processing often under 20 ms.
  • Large exchanges scale to millions of QPS through horizontally scaled clusters, not single machines.
  • For many ADX deployments, network bandwidth accounts for about 30% to 40% of total cloud spend. At 1 PB of data transfer out (DTO), AWS list-tier egress is on the order of ~$50K per month using public tiered rates.
  • DigitalOcean bills outbound overage at $0.01 per GiB, pools included transfer at the team level, and charges no bandwidth fees for traffic to and from Managed Kafka and other managed databases.
  • Regional Load Balancers scale to 200 nodes without service interruption. Each additional HTTP node adds up to 10,000 requests per second (up to 2 million RPS aggregate at maximum node count, per DigitalOcean documentation).
  • Droplet autoscale pools, Premium Droplets with up to 10 Gbps networking, DOKS, Storage-Optimized Droplets with NVMe local SSD, and Spaces (no per-API-call fees) cover typical sell-side and buy-side ADX paths on DO.

Background: How ADX is deployed on cloud today

Ad exchanges sit between publishers and advertisers. Supply-side platforms (SSPs) offer inventory. Demand-side platforms (DSPs) submit bids. The exchange normalizes messages, runs the auction, and returns the winner.

An ADX system divides into three major layers: SSP / ADX / DSP.

Layer Full name Role
SSP Supply-side platform Publisher inventory and ad requests
ADX Ad exchange OpenRTB auction and routing
DSP Demand-side platform Bidder logic and campaign execution

ADX System Architecture

End-to-end request flow (user opens app or page)

When a user opens an app or page, the pipeline runs as follows:

  1. SSP sends request to ADX
  2. ADX builds bid request
  3. Fanout to multiple DSPs
  4. DSPs return bids
  5. ADX runs auction
  6. Winner selected
  7. Ad returned to user
  8. Impression or click logged

Performance targets for this path:

  • Total time budget: ~150 ms
  • Ultra-low latency: entire pipeline < 100 ms. Internal ADX processing is often < 20 ms
  • Massive scale: millions of QPS across horizontally scalable clusters
  • Data-driven decisions: every request involves real-time data lookup and ML inference
  • Global distribution: multi-region deployment (US / EU / APAC)

System architecture deep dive

Ingress and edge tier

Sources:

  • SSPs (Supply-Side Platforms)
  • Publisher SDKs and web pages

Key components:

Characteristics:

  • Ultra-low latency
  • Extremely high throughput (millions of QPS)
  • Global edge deployment

ADX exchange core

ADX Exchange

The exchange core behaves like a high-frequency trading system for ads.

Core components:

  • Bid request builder: converts incoming requests into OpenRTB format
  • DSP router: selects which DSPs receive each request
  • Fanout engine: sends parallel bid requests to dozens or hundreds of DSPs
  • Timeout controller: enforces strict deadlines (typically 50 to 120 ms total)
  • Auction engine: runs first-price or second-price auctions

Technical characteristics:

  • Written in high-performance languages (C++, Go, Rust)
  • In-memory processing (avoid disk I/O on the hot path)
  • Lock-free or actor-based concurrency
  • Deterministic latency per hop

DSP and DMP tier

DSP/DMP

Core systems:

  • User profile system (DMP/CDP): tracks user behavior, IDs, and device graphs
  • Feature store: real-time features (interests, context, history)
  • Prediction models: CTR (click-through rate) and CVR (conversion rate)
  • Policy engines: frequency capping, brand safety, fraud filtering

For ML scoring on the buy side, teams often pair self-managed inference on CPU-Optimized or GPU Droplets with DigitalOcean Inference.

See Serverless vs Dedicated vs Batch Inference for serving mode tradeoffs.

Logging and data pipeline

Logging & Data Pipeline

Types of logs: impressions, clicks, conversions, bid logs.

Tech stack:

  • Messaging: Kafka (Managed Kafka on DO)
  • Stream processing: Flink or Spark
  • Storage: S3-compatible object storage (Spaces) or HDFS
  • OLAP: ClickHouse, StarRocks, ScyllaDB, Druid, BigQuery, or Redshift

Use cases: billing and revenue calculation, reporting dashboards, attribution modeling, ML training pipelines.

Data tiers:

Tier Examples on DigitalOcean
Real-time Redis, Valkey, Managed MySQL, Managed MongoDB
Streaming Managed Kafka + Flink on DOKS
Offline and reporting Spaces data lake, ClickHouse or StarRocks on Storage-Optimized Droplets

Deployment optimizations on DigitalOcean

DigitalOcean offers low-cost infrastructure, strong regional presence, and an ecosystem suited to ADX sell-side and buy-side workloads. The sample layout below reflects common ADX customer needs. Your sizing will vary by QPS, fanout, and logging volume.

Deployment Optimizations

Sell side (SSP / ADX ingress)

Global deployment in days: multiple datacenters on the U.S. East and West coasts, Southeast Asia (SGP), and Europe (FRA and AMS).

Below are key points to consider when deploying the sell side:

Low network bandwidth cost: network bandwidth takes about 30% to 40% of total billing for many ADX deployments. If an ADX stack moves 1 PB of DTO on AWS, list-tier egress pricing lands near ~$50K per month (about $57K at current published AWS tier rates for 1,000,000 GB of internet egress).

Based on AWS public tiered pricing for data transfer out to the internet:

Tier Rate
First 10 TB $0.09 per GB
Next 40 TB $0.085 per GB
Next 100 TB $0.07 per GB
Next 350 TB $0.06 per GB
Over 500 TB $0.05 per GB

On DigitalOcean, outbound transfer included with Droplet plans is pooled at the team level. When DTO stays within the pooled allowance, overage cost is $0. Additional outbound transfer is $0.01 per GiB (bandwidth billing). VPC traffic between resources in the same datacenter uses private networking.

Managed DNS: DigitalOcean DNS with auto-renew and free HTTPS certificate management on Load Balancers via Let’s Encrypt.

Load Balancer: scalable Regional Load Balancers scale to 200 LB nodes without service interruption (load balancer limits). Per load balancer pricing, each additional regional HTTP node adds up to 10,000 requests per second and 10,000 simultaneous connections. At the maximum 200-node configuration, that is up to 2 million HTTP requests per second aggregate across the load balancer (not per single node). DigitalOcean recommends running your own benchmarks because performance varies by protocol and payload.

Droplets: Droplet autoscale pools support auto-scaling to optimize cost under variable QPS.

Network bandwidth: 2 Gbps+ network bandwidth on many Droplet plans offers a strong cost-to-performance ratio for small and medium ADX customers.

Premium Droplets: Premium CPU Droplets deliver up to 10 Gbps public throughput and use current-generation Intel Xeon Scalable or AMD EPYC processors. Top-tier ADX customers use these plans to scale auction workloads toward millions of QPS.

DOKS: DigitalOcean Kubernetes is a managed native Kubernetes service that lets teams scale workloads in minutes.

Buy side (DSP / DMP / analytics)

Managed databases: MySQL, Kafka, MongoDB, and OpenSearch are widely used by ADX customers as operational stores and data lakes.

  • All supported engines offer storage autoscaling to prevent downtime from full disks (MySQL resize docs)
  • Point-in-time recovery (PITR) on MySQL guards against accidental deletes (MySQL features)
  • No-downtime cluster resize for compute and storage on managed MySQL
  • No network cost on Managed Kafka clusters (Kafka pricing)

Storage-Optimized Droplets: NVMe local SSD on Storage-Optimized plans delivers 200K+ IOPS in customer benchmarks for ClickHouse and other analytics workloads. DigitalOcean does not publish a fixed IOPS SLA. Run your own disk benchmarks before production cutover.

High-performance Spaces: Spaces supports StarRocks, Doris, Flink, and other S3-compatible data lake workloads. Spaces does not charge API call fees. Subscriptions include 250 GiB storage and 1,024 GiB outbound transfer per month.

Example: Regional load balancer and autoscale pool

These snippets follow DigitalOcean documentation. Replace regions, tags, and IDs with your values. Install doctl and run doctl auth init first.

Create a regional HTTP load balancer in nyc3 for Droplets tagged adx-auction:

doctl compute load-balancer create \
  --name adx-nyc3-lb \
  --region nyc3 \
  --size-unit 3 \
  --tag adx-auction \
  --forwarding-rules entry_protocol:http,entry_port:80,target_protocol:http,target_port:8080 \
  --health-check protocol:http,port:8080,path:/health

Create an autoscale pool for auction workers (autoscale pool API):

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
  -d '{
    "name": "adx-auction-pool",
    "config": {
      "min_instances": 2,
      "max_instances": 20,
      "target_cpu_utilization": 0.6,
      "cooldown_minutes": 5
    },
    "droplet_template": {
      "size": "c-8",
      "region": "nyc3",
      "image": "ubuntu-24-04-x64",
      "tags": ["adx-auction"],
      "ssh_keys": ["YOUR_SSH_KEY_ID"],
      "vpc_uuid": "YOUR_VPC_UUID",
      "user_data": "#cloud-config\nruncmd:\n  - systemctl start adx-auction\n"
    }
  }' \
  "https://api.digitalocean.com/v2/droplets/autoscale"

Provision Managed Kafka for impression and bid logs (Kafka create docs):

doctl databases create adx-kafka-nyc3 \
  --engine kafka \
  --region nyc3 \
  --size db-s-2vcpu-4gb \
  --num-nodes 3

FAQs

1. What is an ad exchange system?

An ad exchange system is a technology platform where publishers and advertisers buy and sell ad space through automated real-time auctions. Supply-side platforms offer inventory, demand-side platforms submit bids, and the exchange matches buyers and sellers using protocols such as OpenRTB. On DigitalOcean, the exchange core typically runs on CPU-Optimized Droplets or DOKS behind Regional Load Balancers.

2. How does an ad exchange work in programmatic advertising?

When a user loads a page, the SSP sends an ad opportunity to the exchange. The exchange builds a bid request, fans it out to eligible DSPs in parallel, collects bids within a timeout window (often 50 to 120 ms), runs an auction, and returns the winning ad. The full user-facing path targets ~150 ms, with the pipeline under 100 ms and internal ADX work often under 20 ms.

3. What latency budget does a real-time bidding ad exchange need?

RTB stacks target the < 100 ms pipeline budget described above, with internal ADX processing often under 20 ms so DSP round trips use the remaining window. Exchanges colocate ingress, auction, and cache tiers in the same region, keep state in memory, and avoid disk I/O on the hot path. Measure p95 and p99 from load balancer health checks before you add more DSP fanout.

4. Why does outbound bandwidth pricing matter for ADX deployments?

Bid requests, responses, and tracking pixels all generate egress. For many ADX teams, bandwidth is 30% to 40% of total cloud spend. At 1 PB of DTO, AWS list-tier pricing is on the order of ~$50K per month. DigitalOcean pools included outbound transfer and charges $0.01 per GiB for overage (bandwidth billing). Managed database traffic does not count against bandwidth billing.

5. Can you deploy a production ad exchange on DigitalOcean?

Yes. DigitalOcean provides multi-region Droplets, Regional Load Balancers (up to 200 nodes, 10,000 RPS per HTTP node), Droplet autoscale pools, Managed Kafka/MySQL/MongoDB/OpenSearch, Spaces, and VPC networking. Start in one region, load-test against your millions of QPS target, then expand to SGP, FRA, and AMS as metrics allow.

Conclusion

You now have a map of ADX components (SSP, exchange core, DSP/DMP, and logging pipeline) and the technical requirements to run them on cloud infrastructure: ~150 ms user budgets, < 100 ms pipelines, < 20 ms internal ADX targets, and millions of QPS at scale.

On DigitalOcean, sell-side teams focus on bandwidth cost (the 30% to 40% line item and $0.01/GiB overage model), Regional Load Balancers, and autoscale pools. Buy-side teams focus on managed databases, 200K+ IOPS Storage-Optimized analytics nodes, and Spaces for the data lake. Validate every capacity number against your own benchmarks before production launch.

Next steps

Creative CommonsThis work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 4.0 International License.