High performance Web-Tracking Script (Pixel and JS based).
There is no need for a backend. We only need a new and better script that cares about the tracking.
We need the development of a high performance Tracking Script that is able to track user access to a set of websites. There is NO NEED for a full blown set of features (like for example display size recognition and so on) but it HAS TO BE SCALEABLE and needs an outstanding PERFORMANCE.
In Detail we need following standard functions for a web tracking script:
1.) A small JS based Tracking Code that switches between SSL and non SSL on clients site (browser). The js file will be loaded from the tracking server.
2.) A pixel based Tracking Code. The js pixel will be loaded from the tracking server.
3.) Both Tracking Codes need variables to push the websites ID as well as some further Information to the tracking servers. Variables are the following: website ID, ignore flag, campaign code, user id, viewed sites (has to be splitted by _; user can enter anything he likes/free text), handling id.
4.) We also need the remote ip-adress as well as the ip´s in the xforward header (proxies).
5.) Session handling is needed and should be enabled/disabled according to the configuration for each single websites and the session itself has to be handled for each website id (this is important because the tracking script runs on one dedicated domain. There has to be done some cookie handling (write a cookie if config allows that for the website ID, delete it when it is there but no longer allowed)
6.) If session handling per cookie is switched of it has to be done based on the website id and the ip address of the visitor. Session lifetime is 30 minutes. All accesses from the ip are considered as one visit within 30 minutes after the last click in this case.
As well as following special functions (from our point of view)
7.) A service on the server site that writes the log details to a MySQL Database periodically and using until that a memcache to realize the high performance. Only valid website id´s should be tracked. All valid website id´s are available in a mysql table and are subject to changes every 15 minutes. The service should be able to run on a stateless active/active cluster what means that requests are routed to one random server of that. To make it more convenient there is one big database behind those. But you still have to take care about the distributed cached tracking information. There should be an easy way to extend the cluster with a new server (simple script deployment).
8.) Some special ip-adresses (list a) have to be ignored. The list is available in a database table and changes periodically (once a day). For a better performance it might be a good to load them in a memcache.
9.) For some other special ip-adresses (list b) some details should not be written to the database but thrown away. The list is available in a database table and changes periodically (once every two weeks). For a better performance it might be a good to load them in a memcache.
10.) We prefer PHP (most) as well as Java but we are open for other platform suggestions. If you like to use sth. else than PHP or Java, please get in ask first to clarify that the platform is ok for us. We will provide a Linux Test-Cluster. The script has to be installed on this and we will make the final tests on this one as well as one deployment test.
11.) Unit tests have to be delivered for testing that the variables are correctly received on the server site, that the caching and the stateless cluster usage works as well as that the data is written correctly to the database.
12.) Source code documentation and a small developer manual have to be provided.
13.) Performance measurement has to be done and we need some stats that allow us to calculate what load is possible per server.
Script has to be delivers within three weeks after it was awarded.
Please feel free to ask questions.