1 / 10

our Architecture

our Architecture. We wanted to analyse and compare our solution to other Market solutions We decided to use OpenX as base Adserver ! We wanted to perform mass testing with at least 3 millions of delivery a day That’s why we made this three tiers evolution .

dustin
Download Presentation

our Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. our Architecture • Wewanted to analyse and compare our solution to otherMarket solutions • Wedecidedto use OpenX as base Adserver ! • Wewanted to perform mass testingwithat least 3 millions of delivery a day • That’swhywe made thisthree tiers evolution.

  2. OpenX Server Front-End Cluster NOT INCLUDE IN OPEN SOURCE CODE Logrotate : Daily Openxrought logs imps & clicks Filer Reverse proxy New Daily planification Revenu Optimisation Back End Applications OpenX BDD OpenXAdmin

  3. Functionalities

  4. New ajsprocess • As wewanted to modifyeachday the planification and wewanted to base this planification on a differentmethodthan the currentajswemodifieditaccording to the followingalgorithm.

  5. PerfomancecampaignwithOpenX2.8Planification Phase 0 : standard Campaign'C' withoutanyoptimisation Banner - nom - taille - nom Campaign - nom - prix, modèle - capping - zones Targeting Channels T Targeting Channel : - nom - (var/val) 1..* C B T

  6. Our usagewith a segmentation by Targeting channel HH_JourContinuous PageIdSymbol var8 Symbol var9 Our Back End solutionSymbol var10 Symbol Phase 1: Targetingchannelinit Campaign'C' still not optimised Campaign - nom - prix, modèle - capping - zones Banner - nom - taille - nom Targeting Channels Ch_1 T C Ch_2 B Ch_n T Insert in Database

  7. Our usagestep 2 1.1;1;80 1.2;1;60 1.3;1;20 1.4;1;50 1.5;1;6 … Phase 2: Planification Campaign'C' optimised Planif files from the day before C Banner - nom - taille - nom Campaign - nom - prix, modèle - capping - zones Targeting Channels Ch_1 T Ch_2 B (Priority=1) Ch_n Ch_i Ch_j T B (Priority=127) T Ch_k Ch_l

  8. standard .ajs delivery process Ad Tag http://[URL_OpenxFront]]/www/delivery/ajs.php?zoneid=1&var8=1&var9=1&var10=1&u=id=7503090376|8=1|9=1|10=1| Use cached ZoneInfo^1& Zonelinkedadinfos^1 (allowable ads for this zone) If cache not created create cache for ZoneInfo^1 &Zonelinkedadinfos^1 Select the ad selection process:Pluginif zone connected to AdMarket, function _adSelectelsewhere this cached files will store ads in arrays xAds, lAds, eAds: 1. connected to zone 1 2. managed in different array xAds, etc.. according to priority value (-1 for exclusive, >0 && <1 for contract, 0 for remnant,..) Go throught Ads list according to the following order: 1. xAds(exclusives campaign : priority = -1 ) 2. Ads (contractual campaign) priority 10 … 11. Ads (contractual campaign) priority 1 12. lAds(remnant campaign: priority = 0 ) 13 eAds(ecpm priority based campaign: priority =-2) delete non eligible Ads according limitations (channels,..) • According to Ad category (xAds, Ads, lAds), recalculation of priority • if delivery based on priority: priority = priority x priority_factor • - if delivery based on eCPM): test eCPM, and non eligible ad priority set yo 0 Select the Ad

  9. Restriction of current .ajs process Ad Tag http://[URL_OpenxFront]]/www/delivery/ajs.php?zoneid=1&var8=1&var9=1&var10=1&u=id=7503090376|8=1|9=1|10=1| first algorithm restriction: Cache size [ nb campaigns * nb formats ad * nb segments} Use cached ZoneInfo^1& Zonelinkedadinfos^1 (allowable ads for this zone) If cache not created create cache for ZoneInfo^1 &Zonelinkedadinfos^1 Select the ad selection process:Pluginif zone connected to AdMarket, function _adSelectelsewhere Go through Ads list according to the following order: 1. xAds(exclusive campaign : priority = -1 ) 2. Ads (contractual campaign) priority 10 … 11. Ads (contractual campaign) priority 1 12. lAds(remnant campaign: priority = 0 ) 13 eAds(ecpm priority based campaign: priority =-2) second algorithm restriction: we have to go through each ads and limitation before to define priority and select Ad delete non eligible Ads according limitations (channels,..) • According to Ad category (xAds, Ads, lAds), recalculation of priority • if delivery based on priority: priority = priority x priority_factor • - if delivery based on eCPM): test eCPM, and non eligible ad priority set yo 0 third algorithm restriction: Only contractual Ads use priority. And this priority needs to be dynamically recalculate each time. Select the Ad

  10. New Delivery http://[URL_OpenxFront]]/www/delivery/ajs.php?zoneid=1&var8=1&var9=1&var10=1&u=id=7503090376|8=1|9=1|10=1| Use cached file according to Channel and channelIddefined in u parameter If cache not created or expired Generate Cache Channel This cached file will store in an array all the Channels witch content “segmentation” tag and will associate to a channelId the limitation description (Regexp on u parameter). Use cahced file ZoneInfo^1 &Zonelinkedadinfos^1^1 (eligible list of ads for zone 1 and channelId1) If cache not created or expired Generate cache(ZoneInfo^1, Zonelinkedadinfos^1^1) Select the ad selection process:Pluginif zone connected to AdMarket, function _adSelectelsewhere this cached file will store in the array pAds all Ads witch: 1. have been associated with zone 1 2. has a limitation on channelId1 3. has a banner with the pattern "____" Go through Ads list according to the following order: 1. pAds (campaigns from ZonelinkedINfos^1^1) 2. xAds (exclusives campaign : priority = -1 3. Ads contractual campaign) priority 10 … 12. lAds (remnant campaign: priority = 0 ) 13 eAds (ecpm priority based campaign: priority =-2) Recalculate Ads priority in pAds array according to the following formula: = (bannerWeight* campaignWeight)/ sum of all priorities Select Ad

More Related