320 likes | 609 Views
Ad Serving Flow and Serving Architecture. Kris Fortney | Global Client Tech Support November 2011. Agenda. HTTP and Fiddler UI Ad serving flow Serving architecture Viewing an ad and its files with fiddler. HTTP requests and responses. Animation if needed Is “Fade - very fast”.
E N D
Ad Serving Flow and Serving Architecture Kris Fortney | Global Client Tech Support November 2011
Agenda • HTTP and Fiddler UI • Ad serving flow • Serving architecture • Viewing an ad and its files with fiddler
HTTP requests and responses Animation if needed Is “Fade - very fast” • Requests are sent from the browser • Responses are sent form the server
HTTP response codes Animation if needed Is “Fade - very fast” • After the browser receives a request a response code is returned indicating the status of the request
HTTP sniffer: Fiddler UI Animation if needed Is “Fade - very fast” Requests Sessions Responses
HTTP sniffer: Sessions Animation if needed Is “Fade - very fast”
Request – What is sent to the server Animation if needed Is “Fade - very fast”
Response – What comes back from the server Animation if needed Is “Fade - very fast”
Servers, Ad Files, and Ad Flow where, what, when?
Rich Media Ad Flow – Serving • The publisher’s page is consisted of a publisher ad server call, which should retrieve an appropriate ad tag (hopefully ours…)
Rich Media Ad Flow – Serving • Now we have a page with our tags: <script src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=rb&c=22&pli=&PluID=0&w=730&h=90&ord=[timestamp]"></script> <noscript> <a href="http://bs.serving-sys.com/BurstingPipe/BannerRedirect.asp?FlightID=1252012&Page=&PluID=0&Pos=5233" target="_blank"><imgsrc="http://bs.serving-sys.com/BurstingPipe/BannerSource.asp?FlightID=1252012&Page=&PluID=0&Pos=5233" border=0 width=300 height=250></a> </noscript>
Rich Media Ad Flow – Bursting Servers • We have ~90 Bursting Servers residing in 8 Data Centers around the world, ready to “take the call” Netherlands/Amsterdam Japan LA NY/NJ China Singapore
Rich Media Ad Flow – Serving • “The Chosen One”: • Selects an Ad for the Placement • Counts an Impression • Returns a JS Response to Initiate the • Ad Display
Rich Media Ad Flow – Serving • The initial server response consists of: • varebPtcl = "http://"; • varebBigS = "ds.serving-sys-dev4.com/BurstingCachedScripts/"; • varebResourcePath = "ds.serving-sys-dev4.com/BurstingRes//"; • varebRand = new String(Math.random()); • ebRand = ebRand.substr(ebRand.indexOf(".") + 1); • ebBigS = ebPtcl + ebBigS; • ebResourcePath = ebPtcl + ebResourcePath; • gEbUT = ""; • gEbUT = "tp_PlacementID%3D549668%24%24tp_AdID%3D954807%24%24"; • varebO = new Object(); • ebO.pi = 0; • ebO.d = 0; • ebO.sms = "ds.serving-sys-dev4.com/BurstingScript/"; • ebO.bs = "bs.serving-sys-dev4.com"; • ebO.p = ""; • ebO.tn = "Banner"; • ebO.bt = 5; • ebO.bv = 14.000000; • ebO.plt = 9; • ebO.ut = gEbUT; • ebO.w = 300; • ebO.h = 250; • ebO.pli = 549668; • ebO.ai = 954807; • ebO.ci = 63210; • ebO.au = "Site-23204/Type-11/954807_27015f25-9794-45b0-b3ce-9807bf80a98b.js"; • ebO.fvp = "Res/"; • ebO.dlm = 1; • ebO.oo = 0; • ebO.fvp += "Dev4/"; • ebO.pv = "_4_5_0"; • ebBv = "_2_4_4"; • ebO.rpv = "_2_5_1"; • ebO.wv = "_3_0_1"; • ebO.ta = "-1"; • ebO.abp = "Site-15871/Type-20/955962/47c79cde-8024-4dc0-83cf-86aed89cfaae/"; • ebO.dg = "11905"; • varebIfrm = ("" == "1"); • varebSrc = ebBigS + "eb" + ebO.tn + "" + ebBv + ".js"; • document.write("<scr" + "iptsrc=" + ebSrc + "></scr" + "ipt>"); • varebDSGID = 16512; • /* RichSupported */ • Initializing General Variables (DS base path, Detected Browser etc.)
Rich Media Ad Flow – Serving • The Server response consists of: • varebPtcl = "http://"; • varebBigS = "ds.serving-sys-dev4.com/BurstingCachedScripts/"; • varebResourcePath = "ds.serving-sys-dev4.com/BurstingRes//"; • varebRand = new String(Math.random()); • ebRand = ebRand.substr(ebRand.indexOf(".") + 1); • ebBigS = ebPtcl + ebBigS; • ebResourcePath = ebPtcl + ebResourcePath; • gEbUT = ""; • gEbUT = "tp_PlacementID%3D549668%24%24tp_AdID%3D954807%24%24"; • varebO = new Object(); • ebO.pi = 0; • ebO.d = 0; • ebO.sms = "ds.serving-sys-dev4.com/BurstingScript/"; • ebO.bs = "bs.serving-sys-dev4.com"; • ebO.p = ""; • ebO.tn = "Banner"; • ebO.bt = 5; • ebO.bv = 14.000000; • ebO.plt = 9; • ebO.ut = gEbUT; • ebO.w = 300; • ebO.h = 250; • ebO.pli = 549668; • ebO.ai = 954807; • ebO.ci = 63210; • ebO.au = "Site-23204/Type-11/954807_27015f25-9794-45b0-b3ce-9807bf80a98b.js"; • ebO.fvp = "Res/"; • ebO.dlm = 1; • ebO.oo = 0; • ebO.fvp += "Dev4/"; • ebO.pv = "_4_5_0"; • ebBv = "_2_4_4"; • ebO.rpv = "_2_5_1"; • ebO.wv = "_3_0_1"; • ebO.ta = "-1"; • ebO.abp = "Site-15871/Type-20/955962/47c79cde-8024-4dc0-83cf-86aed89cfaae/"; • ebO.dg = "11905"; • varebIfrm = ("" == "1"); • varebSrc = ebBigS + "eb" + ebO.tn + "" + ebBv + ".js"; • document.write("<scr" + "iptsrc=" + ebSrc + "></scr" + "ipt>"); • varebDSGID = 16512; • /* RichSupported */ • Initializing Ad-specific Variables (e.g. AdJS path)
Rich Media Ad Flow – Serving • The Server response consists of: • varebPtcl = "http://"; • varebBigS = "ds.serving-sys-dev4.com/BurstingCachedScripts/"; • varebResourcePath = "ds.serving-sys-dev4.com/BurstingRes//"; • varebRand = new String(Math.random()); • ebRand = ebRand.substr(ebRand.indexOf(".") + 1); • ebBigS = ebPtcl + ebBigS; • ebResourcePath = ebPtcl + ebResourcePath; • gEbUT = ""; • gEbUT = "tp_PlacementID%3D549668%24%24tp_AdID%3D954807%24%24"; • varebO = new Object(); • ebO.pi = 0; • ebO.d = 0; • ebO.sms = "ds.serving-sys-dev4.com/BurstingScript/"; • ebO.bs = "bs.serving-sys-dev4.com"; • ebO.p = ""; • ebO.tn = "Banner"; • ebO.bt = 5; • ebO.bv = 14.000000; • ebO.plt = 9; • ebO.ut = gEbUT; • ebO.w = 300; • ebO.h = 250; • ebO.pli = 549668; • ebO.ai = 954807; • ebO.ci = 63210; • ebO.au = "Site-23204/Type-11/954807_27015f25-9794-45b0-b3ce-9807bf80a98b.js"; • ebO.fvp = "Res/"; • ebO.dlm = 1; • ebO.oo = 0; • ebO.fvp += "Dev4/"; • ebO.pv = "_4_5_0"; • ebBv = "_2_4_4"; • ebO.rpv = "_2_5_1"; • ebO.wv = "_3_0_1"; • ebO.ta = "-1"; • ebO.abp = "Site-15871/Type-20/955962/47c79cde-8024-4dc0-83cf-86aed89cfaae/"; • ebO.dg = "11905"; • varebIfrm = ("" == "1"); • varebSrc = ebBigS + "eb" + ebO.tn + "" + ebBv + ".js"; • document.write("<scr" + "iptsrc=" + ebSrc + "></scr" + "ipt>"); • varebDSGID = 16512; • /* RichSupported */ • Loading the Necessary Client Script + Version (e.g. ebBanner_2_2_5.js)
Rich Media Ad Flow – Serving • Since the response is not cached and expensive, the ad configuration is almost entirely in the Ad .js (which is cached). • However, the extra round trip is something we might prevent in the future.
Rich Media Ad Flow – Serving • The Client Code Loads all the Necessary Assets: • Ad Configuration File (AdJS) • Creative Assets (SWF) • Additional Assets (FLV, F4V, SWF, MP3 etc.) • All the Files are in one place • So, how do we take care of redundancy and globalization? File Server
Rich Media Ad Flow – Serving • The Assets are downloaded from our Display Servers, which is actually an “origin” of a Content Delivery Network (CDN): Akamai. • This way, only 5% of the traffic is reaching our origin DS. File Server (Display Server)
MediaMind servers for Ad Serving • Two main serving systems for ad serving • Bursting Server bs.serving-sys.com Takes information from the ad tag Talks to the database Decides which ad to show Knows where all the assets are • Display Servers ds.serving-sys.com Hold all the files an ad needs to display Assets and scripts Part of a large content distribution network – Akamai
Ad tag – What gets passed to the Bursting Server • data is passed via the URL’s querystring • http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=rb&c=22&ifl=$$/default/eb/$$&pli=754211&PluID=0&ai=1358143&t=1&w=300&h=250&ucm=0&ord=%time%
What static files are delivered from the Display Servers? Animation if needed Is “Fade - very fast”
BS Decision Call Yes Something to display Yes count impression no Display blank Report to 3rd party BS response Set ad parameters Yes Show banner Load js files ebBanner / ebExpBanner.js Sufficient plug-ins Ad.js Default image No Rich banner ad flow Animation if needed Is “Fade - very fast” User views a web site With eyeblaster script tags
Rich Media Ad Flow – Serving • Finally, the Ad is shown!
Rich Media Ad Flow – Serving • Interactions from the Ad are constantly reported to our Bursting Servers. ‘Timer Interactions’ (e.g. AdDuration, DwellTime) are reported only when the ad is closed. User Interacts with the Ad Server Logs Interaction Client Generates Reports
Rich Media Ad Flow – Serving • The main interactions we track are: • “Counter” Interactions • Click • Video Progress • Video Pause/Mute/Replay • Video Fullscreen Start/End • Dwell Once • Visibility (Above/Below the Fold) • “Timer” Interactions • Ad Duration • Dwell Time • Video Playing Duration • In addition, we support custom counter/timer interactions reported by the creative.
Rich Media Ad Flow – Serving • Examples of interactions tracking: • “Counter” Interactions: • http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=int&iv=2&int=954807~~0~~11905~^ebUniqueDwell~0~0~01020^ebRichFlashPlayed~0~0~01020^ebVideoUnmuted~0~0~00010^ebAboveTheFold~0~0~01020&OptOut=0&ebRandom=0.23478155699558556&flv=10.3183&wmpv=0&res=16 • Click: • http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=brd&Page=&PluID=0&Pos=3932768984232098&EyeblasterID=954807&dg=11905&di=0 • “Timer” Interactions: • http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=int&iv=2&int=954807~~0~~11905~^ebAdDuration~68~0~01020^ebIntDuration~5~0~01020^ebDwellTime~64~0~01020^ebAboveTheFoldDuration~67~0~01020&OptOut=0&ebRandom=0.14506820333190262&flv=10.3183&wmpv=0&res=16
Servers, Ad Files and Ad Flow viewing in fiddler
What can we see using fiddler? Animation if needed Is “Fade - very fast” • What files do we serve? • Where are they served from? • How to see what the server is returning • What other information is delivered? • How big are the files?
Viewing an ad with Fiddler Animation if needed Is “Fade - very fast” • How many calls are made to the Bursting Server? • How many calls are made to the Display Servers? What kind of files are needed to support the ad? http://demo.eyeblaster.com/kris/training/sessiontwo/boredwithUSA.htm
Fiddler: How To Tips Animation if needed Is “Fade - very fast” • Remove all encoding Why? • Disable Caching Exceptions? • How to save a fiddler session • How to clear the session window • How to search for EB code quickly