We use separate apps for creating, configuring and monitoring the experiments and for applying the experiments and collecting data on the website. These are called “Dashboard” and “Tracking”. They are both written in PHP. Symfony is the base for our Dashboard system, while the Tracking has a proprietary minimal-footprint framework, since performance is critical for this system.
For storing data, we use both relational (Percona) and noSQL (MongoDB) systems, depending on the data which is being stored and the read/write ratio for it.
We also use caching systems such as Redis and a caching strategy resembling the fractal index concept.
For async processing we use queues and workers, with RabbitMQ at the core of the system.
Finally, for the Machine Learning module, both training and prediction we use Prediction.io, with custom-written algorithms.
For DevOps needs, such as monitoring/alerting, logging and deployment we use industry-standard tools such as Grafana, Kibana, Elastic Search and Jenkins.