17 February 2012 in ExchangeWire EMEA 8 Comments

How "Real-Time" Is Your RTB Platform?

Brian O’Kelley is CEO of AppNexus. Here he discusses cache update cycles, how shorter cycles are critical for buyers using real-time platforms, and why traders should be placing greater importance on it.

Last week, Right Media posted a blog entry stating that it has “slashed” their cache update cycle to 45 minutes. This is a great excuse for the industry to take a closer look at trafficking update cycles and understand why they’re so important.

A real-time ad platform is built around a trafficking database which stores all the campaigns, creatives and other targeting information. It also has thousands of servers in multiple datacentres which store an efficient representation, or “cache”, of this database. The cache update cycle is the amount of time it takes for a change you make in the primary trafficking database – for instance, a new creative – to be syndicated out to each of the servers. When the change is out on every server, we consider the cache update complete.

A cache update cycle of 30 to 45 minutes doesn’t sound very long (and in fact, I think it’s better than the industry average). However, in the world of ad exchanges and real-time bidding, it’s an eternity. In the blog post Right Media says that it serves 11 billion transactions a day. We can assume this has a peak volume of around 200,000 transactions per second. That means that in the 45 minutes that a cache update cycle takes, around 550 million transactions will occur.

Let’s imagine a worst-case scenario (one that happens all too often): a trafficker puts a campaign live and forgets to apply targeting. He quickly realises his mistake and fixes it, but it’s too late: the change is already en-route to the servers. If we assume a $0.60 global CPM, this campaign could spend $324,000 before it’s possible to fix it. That’s a lot of money on the line every time a trafficker hits “submit”.

It’s a lot like driving a car: at slow speeds, you have a long time to react without consequences. At high speeds, you need the ability to make split-second changes or you’re in real trouble – and the consequences are potentially immense.

When Mike Nolet and I started AppNexus, we wanted to build the ad technology equivalent of a precision driving machine: an ad server that could get cache updates out to thousands of servers fast. The engineering challenge is, as our team likes to say, “non-trivial”. In fact, this was my favorite interview question for new hires in the first year or two of AppNexus: “How do you build an ad server that can do fast cache updates at scale?”

What we came up with was a fundamental re-thinking of how an ad platform works. In the old days, when I was the CTO of Right Media (I have no knowledge of how the system works today), to do a cache update we would copy the entire database to a file, send the file to every box, and have them load it into memory. The problem with this approach is that the bigger the file gets, the longer the process takes. It would take a super-human engineering feat to get these massive cache files out to all of the Right Media servers in just 45 minutes.

At AppNexus, we do things a bit differently. Instead of sending the whole file out to each box on every update cycle, we only push out the changes. This dramatically reduces the amount of data that we have to send out each cache cycle, and means that we can update our caches as frequently as we want to. At the moment, any change you make through AppNexus Console or the AppNexus API is live on every server in three minutes or less. I’m making this sound a lot easier than it is, but hey, it’s nice to be the CEO, not the CTO!

Let’s calculate the economic impact this has. AppNexus processes around 15 billion impressions a day, so at peak we do around 275,000 transactions per second. In the three minutes that it takes to do a cache update cycle, we see 50 million impressions, meaning that the worst case trafficking error would cost $30,000. It’s still a lot of money for a trafficking error, but to use my driving analogy, we just dinged our Lamborghini instead of totaling it.

It’s a shame that most of the companies in the RTB space aren’t talking about this issue. The Forrester DSP analysis didn’t include cache update cycle (though it did include its siblings, reporting update cycle and optimisation update cycle) as an evaluation criterion. I think this is a major oversight. The volume available to real-time bidders is doubling each year, and with it, the amount of risk buyers take with every trafficking update.

When driving on the RTB superhighway, you need a fast car – but you also need precision steering. Kudos to Right Media for making big investments here, and I hope the rest of the industry follows suit.

Brain O’Kelley will be speaking at the Ad Trader Conference, Hamburg on April 19. Get your ticket today!



Latest jobs on Exchangewire


  • Peter

    Nice piece Brian, practical, commonsensical advice we should all heed.

  • http://www.yuan-shuai.info/ Shuai Yuan

    Great article. I believe it’ll be a smasher if AppNexus could reveal and prove by data that not-real-time will give huge difference even with 45m update cycle. It’ll also be interesting to see who are benefiting from this.

  • http://twitter.com/KyleLussier Kyle Lussier

    Great article on this topic.  I am actually very surprised to see how slow these numbers are and I agree this issue is quite important.

    But I don’t understand why people are using any intermediary or replication steps at all.  This seems horribly broken to me.

    At tickle.me we actually directly inject changes straight into what is referred to here as the “traffic” structure … instantly.  Our platform directly changes bidder behavior after any change is made (with the exception of content approval blocks), so there is no intermediary steps to propagate anyway and the design scales.

  • Pingback: AppNexus CEO Talks Cache Update Cycles | AppNexus Tech Blog

  • http://twitter.com/paul_r_harrison Paul Harrison

    As you mentioned, one of the fundamental reasons for having fast cache updates is to prevent runaway campaigns.  We broke the problem down and attacked it using several approaches including only pushing out diffs, decentralizing budgeting and bidding, intelligent caching, and employing “circuit-breakers” (akin to those used in the financial markets) to automatically stop campaigns with trafficking mistakes from spending too much.

    Another key to making RTB “Real-Time” is how quickly audience targeting can be updated. In our view, the old way of rebuilding a cookie pool every time an advertiser wants to tweak an audience segment takes too much time and results in wasted ad spend.  To fix this problem, we built an infrastructure that promotes targeting and bidding at a “data element” level, and allows advertisers to turn on and off targeting elements, or just change bids on individual elements instantly…with the new targeting generally live in about 5 minutes. This provides both transparency into audience segments, and the ability to optimize them automatically on the fly.

    To use an example from search retargeting, if an advertiser sees that impressions served to users who have previously searched on the keyword “car rentals” are performing better than those served to users who searched on “cheap rental”, then the term “cheap rental” can be eliminated instantly from the audience targeting and the budget reallocated to more effective terms.

  • JSP

    Thank you for your precisions about your product Simpli.fi.
    But I’m sure I understand what you’re talking about: could you please precise if your solution to tweak targeting elements is quick in building different targeting elements, or if it’s quick in taking datas and in optimizing campaigns belonging to new targets?
    Thank you for your precision.

  • http://www.adgorithms.com/ real time bidding media buying

    There are many limitations, but also great opportunities in real time bidding. A great opportunity is to change bids immediately after a new competitor comes in, or an old one disappears. Also, it handles traffic spikes due to click fraud very effectively.

  • http://twitter.com/GrapeshotRTB Grapeshot

    Grapeshot’s cache actually updates every fifteen minutes. Lean code.