Skip to content
Eric Robert edited this page Aug 8, 2013 · 35 revisions

RTBkit is an open-source software framework designed to make it easy to create real-time ad bidding systems. It is a real-time bidder framework designed for use on advertising exchanges such as the Rubicon Project, Nexage, AppNexus, The Google Ad Exchange and others. On February 19th 2013, Datacratic released RTBKit as a technology preview release. The primary intent was to allow its evaluation by partners such as ad exchanges, SSPs and data providers.

RTBKit is software that is used by production systems at Datacratic and we are very committed that feature-specification should be informed by production and end-user experience as well as engineering considerations around high-availability, reliability and performance guarantees. The following document represents a first-cut at a feature and documentation roadmap for the coming year. We fully expect that this list will change somewhat as RTBKit is adopted by a wider and diverse community of users. As such user feedback is, of course, most welcome.

Please refer to the Architecture document for a detailed description of the components mentioned in this page.

Milestones

Q1 2013 - Focus on API stability and documentation

A user of RTBkit must supply the following plugins: Exchange Connectors, Ad Server Connectors, Bidding Agents and Data Loggers. Exchange connectors are responsible for translating exchange-specific bid requests to standard internal bid requests and Ad Server connectors will normalize campaign events to standard internal events. The focus of this release is to make sure that our internal representation is general enough to support a wide variety of external-facing components such as exchanges and ad servers. Bidding Agents and Data Loggers are to a large extent internal-facing and should therefore be more stable.

Additionally, we intend to support a runnable demo which implements a fully-functional bidder given a user's credentials on a particular exchange such as the Rubicon Project or AppNexus.

Features

  • External API stability. We won't be able to commit to an unchanging ABI, but any changes required after this release will be small and incremental.
  • Exchange Connectors: C++ connectors for some popular exchanges such as the Rubicon Project and AppNexus
  • Fixed Price Bidding Agent: A fully functional bidding agent that will bid a fixed price.
  • Runnable Demo: Ability to run a fully functional bidder given a user's credentials on Rubicon Project or AppNexus.

Reference Material

  • System Architecture: Document describing the architecture of RTBKit, focusing on the core components and the interaction between them
  • Lifetime of a bid request; Document describing which components are involved as a bid request flows through the system
  • Banker Documentation: Document describing the design of the banker as well at its REST API and backend(Redis) data format
  • Graphite Keys: Description of all keys that are logged to Graphite by RTBKit's core components
  • ZooKeeper nodes: RTBKit uses ZooKeeper for service discovery. Document the hierarchy and type of nodes
  • Plugins API documentation for Exchange Connectors, Ad Server Connectors and Bidding Agents

Tutorials

  • How to write an exchange connector
  • How to write a bidding agent
  • How to write an augmentor
  • How to write a logger
  • How to set up a single node RTBkit installation with per-uid bidding (Redis-based)
  • How to integrate with an ad server

Q2 2013 - Focus on scalability, multiple data centers and language bindings

Features

  • Language Bindings(Java, Python)
  • Multiple data center support: Currently each data center needs to operate independently. This feature adds the ability to share budgets across data centers.

Documentation

  • Service Monitor Design: Document how the Service Monitor ensures that all components are healthy and stops bidding when any critical component fails.
  • Troubleshooting document

Tutorials

  • How to share budgets over multiple data centers
  • How to Implement a simple uniform spend pacer
  • How to set up a multi-router RTBKit for load balancing

Operations, Administration and Management

  • Basic UI
    • Exchange configuration
    • Banker introspection
    • Access to Graphite
    • Monitor status of all components
  • Single-node RTBKit AMI
  • Back-up scripts for Master Banker

Q3 & Q4 2013 - Focus on High-Availability

Features

  • High Availability for all core components: Currently high-availability is supported only for routers and bidding agents. We will support HA for augmentors, post-auction service and the master banker.
  • Standard augmentors: Augmentors add data to bid requests in the form of tags. We would like to be able to specify the tags in a standard format such as CSV or Excel files.
  • In-process augmentors: Currently augmentors exist as separate processes. In-process augmentors would run inside the router thereby speeding up the process
  • Standard Data loggers: We would like to supply data loggers that can write to CSV files or Kafka

Clone this wiki locally