Today’s ad platforms have evolved greatly from those of a decade ago and have gained much complexity. GDPR, CMP, Header Bidding, ad-blockers, timeouts, viewability. Gone are the days of simple AdSense or AdManager implementations that required less than 10 lines of JavaScript code and a single report to keep up to date on impressions and revenue. Today’s publishers must include and keep track of so much more to stay competitive and maintain regulatory compliance. The complexity in ad stack has resulted in more choice, much better quality and higher revenues and performance for advertisers, publishers and consumers. But to take advantage of all the opportunities publishers had to develop the expertise in how to operate with things like client-side header bidding using Prebid.js and integrations with a CMP or even handle responsive ad layout. For many publishers this has been difficult and hard earned. I myself invested hard earned months figuring out how to optimize yield and rectifying bugs found in nascent platforms.
I kept all this complexity in mind when building Bidscape. I wanted Bidscape to provide speed, reliability, correctness, and debugging ability in an integrated way.
Speed
To get the fastest performance one must use a globally distributed CDN and limit file size, number of requests and use good caching headers. To keep our customers’ flexibility, we limit caching to 5 minutes and server our customers ad code from our globally distributed CDN. We keep the entire configuration including prebid.js core and bidAdapters in a single file to limit round trips.
Reliability
Use the fewest possible points of failure between the user and your content. Our users ad configurations are saved and uploaded to our CDN. Once this file is on our CDN we no longer have any servers in the critical path. We only need our CDN provider to be available. In the event of failure of our infrastructure which is hosted on a different provider, our CDN continues on serving our customers’ ads. All other services are out of band. We don’t want them to go down, obviously but we keep our customers safe if and when they do. We are even prepared for our CDN being down by maintaining our own infrastructure that we can fail-over to at DNS level.
Correctness
Minimize external dependencies. Rely only on widely compatible browser APIs and use only what you really need keep your footprint small and any opportunity for failure low. Leverage patterns such as functional programming and immutability. Finally, test extensively.
Debugging
We have a really great logging library for our JavaScript code that we use on all our sites. It uses a static flag to turn logging on or off greatly reducing the logging cost when the console is disabled. Try it out on a Bidscape.it enabled site (you can enable yours by signing up at https://app.bidscape.it/register) by adding G0.log.level=DEBUG into the query string of any URL to see how detailed our log information is in the JavaScript console.
The approach we’ve taken is built to optimize for what our customers need. A consistent and reliable way for their sites to be profitable by serving their ads.