This virtual meetup covered several topics related to RTBkit:
1. The developer spotlight featured Nicolas Emiliani, the RTB dev team lead at Motrixi, discussing getting an RTBKit installation running.
2. Attendees learned about Motrixi's traffic which includes up to 40k queries per second from US and Canada connected to several exchanges.
3. The meetup discussed isolating the RTBKit stack using a reverse proxy, important kernel parameters, and transitioning to HTTP interfaces for RTBkit 2.0.
3. Getting an RTBKit installation running.
More info here : http://datacratic.com/site/blog/tales-rtbkit-adventure
Nicolas Emiliani, RTB dev. team Tech Leader at Motrixi.
4. A little about our traffic :
We are a mobile centered DSP
We are connected to Nexage, Rubicon, Mopub and more recently to ADX
We take up to 40k qps in peak hours from US and Canada
5. Life on the Amazon (not the rain forest)
Create a VPC (or you will regret it, I promise)
Create all your production nodes inside that VPC
Be smart about security : do not expose your nodes
unnecessarily to the internet.
Use a VPN software (ie: OpenVPN) to access the
nodes safely inside your VPC.
6. Isolating the RTBKit stack (BR loop)
Chose an HTTP reverse proxy (we use NGINX)
Set up the proxy as a gateway to your RTBKit installation, we use elastic
IP s on the NGINX nodes and allow incoming traffic only for the used
HTTP ports. Elastic IPS are cool and they will let you do all sort of handy
things.
You can use the proxy as a load balancer if you have more than one
node
You can use the proxy to automatically reply with 204s to the exchanges
in case you need to work on your installation
You can use the proxy to clone the traffic and send it to a staging or
development environment (we recently cracked how to do this with
NGINX)
8. Isolating the RTBKit PAL
As with the BR loop use a reverse proxy with an Elastic IP
9. Type of nodes
Different responsibilities → Different nodes → Easier scaling
10. Kernel parameters
fs.file-max=300000 : RTBKit likes to chew up your file descriptors.
net.ipv4.tcp_tw_reuse=1 : allow reusing sockets in TIME_WAIT state for
new connections.
net.ipv4.tcp_fin_timeout=15 Close connections in the TCP FIN timeout
state in 15 seconds ( default 60 )
Tweaking this parameters will prevent crashes due to exceptions related to
too many open file descriptors.
11. Use the APIs, Luke
Banker API : comes in handy when implementing pacing strategies thus
keeping logic simple in agents.
Agent Configuration Service API : is useful to implement agent
configuration related APIs as the Agent Gateway
(https://github.com/nemiliani/agent_gateway).
12. Things that will help you out
All our processes run under a watchdog, currently we are using monit
Zabbix is your friend, particularly when things go wrong.
Don't ever forget about Graphite. RTBKit is a huge black box otherwise.
Always keep an eye on your metrics. Yous should be doing it right now!,
no, really!
22. How long?
● Platform-deps fork is almost completed
o Should be released in a week or two
o Work done by Michael
● Currently re-writing our agents in golang
o Will iron-out kinks in the bidder interface
o Should be done in a month or two
23. More Than a Bidder
A Brief Introduction to an RTB Stack
26. You need an RTB Solution
Requirement Provided by RTBkit?
Reliable, high-performance core bidder system Yes
Online Impression / Click / Conversion matching Yes
Pacing No
Logging Customer has to set up and manage logs
Monitoring and Alerting Some support for Carbon and Graphite
24-7 operations and support No
Capacity planning and system evolution No
Campaign management UI integrated with the bidder No
Seats on exchanges / integration with exchanges No
ETL for campaign reporting and bidding agents No