Cognition is Global Rev Gen's proprietary CMP (Campaign Management Platform) It has been custom built by us, for the customer to help them deliver value to our clients. All of the work Global Rev Gen does flows through, and is enhanced by this platform. It is the outcome of Global Rev Gen innovation and drives them to collaborate and innovate and inspires them to scale.
We started to build Cognition back in 2010 as a single page application to extend the single publishers subsystem of HasOffers online service ( http://www.hasoffers.com ), which the customer used at the moment to run its online digital campaigns. The support of additional subsystems was quickly adding up and the scope of already built subsystems was broadening, changing at the same pace as the workflow requirements of Global Rev Gen were maturing.
Above are just some of the third party integrations we built into Cognition during all these years of active development, improvement, polishing and optimization. During this time our project manager, graphical designers, UX engineer, HTML slicers, front end and back end developers, QAs, system administrator and document writer constantly worked to deliver Cognition features, on which Global Rev Gen now relies in their business critical operations.
Gen operators unparalleled view of both the entire picture on how their digital campaigns are doing and to be able to dig into the tiniest details, which are not covered by third party services. The major requirement was to enable Cognition availability globally for all the Global Rev Gen employees who work in Australia, Europe, Asia and travel around the whole world, which means that the service must have been optimized for global accessibility but to feature strong security to protect company’s proprietary information.
Cognition must have enabled efficient access and management of both organized and un-organized digital ad inventory (Organized inventory can be purchased via technology platforms, un-organized inventory requires humans to work with other humans). It must have been a data warehouse of thousands of global traffic sources, all categorized by digital channel, traffic type, quality and accessibility. Regional teams must be able to service local clients and work with global publishers efficiently and at scale.
In order to ensure availability as close as possible to 100% it was critical to choose the cloud hosting provider with reliable infrastructure, with presence of the data centers in different cities around the world. Reliable backup and restore procedures were also a MUST to prevent the critical data loss. It was likewise critical to ensure efficient UX/IU which would be both intuitive for the operators and at the same time would allow efficient data entry, retrieval, manipulation and control of the business indicators.
As proprietary platform Cognition requirements always closely matched castomer's workflow. That is why in order to get the requirement we worked in close cooperation both with the Global Rev Gen founders, managers and operators.
When we saw it necessary the requirements gathering was followed by the UX prototyping phase. To do the job we used Balsamiq Mockups and Invision services. The former allowed us to quickly outline the UX layouts based on the user requirements. The latter made it possible to convey to the customer our vision of the user interactions within the proposed layouts. Both services are available online and allow to instantaneously share the vision with customer and collect feedback.
After the UX/UI prototyping is done and approved by the customer the design is made up. During the Cognition lifecycle its design has undergone 3 major overhauls. In order to follow along the iterative approach the new design exists inside the application together with the previously implemented one. The new subsystems naturally pick the new design. The existing subsystems are refactored in order of priority which is set by the customer. Each design phase is based on the styling guidelines which were proposed and approved by the customer as a first effort of each major design overhaul.
Our infrastructure includes 3 types of the servers to produce the most efficient and reliable path from the implementation to production :
Development servers, where our developers and slicers initially interact to implement the functionality and make it ready for QA
Staging servers where QA is performed and where the functionality is being demonstrated to the customer. These servers are setup to match the configuration of the production servers.
Production servers are the servers where the live application is running, and where the changes become visible to the audience of the application.
Our development process features usage of the automated tests, which are produced during the implementation phase. The automated tests are further used during the deployment to development, staging and production servers.
Before the QA phase is starting the implementation is deployed to the staging server, where the main QA activities are performed. After QA activities are over and the customer approves the functionality on the staging server it is deployed to the production and tested there.
To ensure the project efficiency Amazon AWS was chosen as a hosting provider to hold the live application. Our installation features EC2 instance usage to run the application processes, S3 instance to store the assets, RDS to run the database and Glacier to store the project backups safely. Our DevOps engineer makes the deployment process using Capistrano. The latter allows us to make the deployment procedure accessible with a single command. Once triggered Capistrano script performs all the necessary plumbing to shutdown/startup the application processes, to deploy to master/slave servers, to run the database migrations and more.
When the application is live on the production server our job is not finished. We continue to monitor the application health, look for the critical updates to make sure the application infrastructure is up to date. Also we routinely check the validity of the backups by retrieving them and installing the application on the development instances based on the backed up data. In addition we continuously overview the libraries and frameworks updates - this leads to the upgrades of the libraries within the project to keep the technology stack up to date.
The backbone of the application is Ruby on Rails framework (of the version 4.2 at the time of writing).
As the HTTP server Apache is installed. Together with Phusion Passenger it serves the user requests. As a backend storage we are using the MySQL 5 server, with InnoDB engine. The choice of MySQL allows us to use the full power of relational database storage engine and to keep the resources footprint to run a storage engine to minimum. To manage the asynchronous back end long running tasks we currently use Resque library. And earlier implementations are based on the cron jobs.
The most recent developments are implemented with usage of AngularJS framework. We arranged separate single page application for each subsystem. Earlier developments are based on jQuery, jQuery UI and jQuery plugins stack. As already mentioned the front end layout and interactions are done with HAML, SASS and CoffeeScript to complement Ruby on Rails stack most efficiently.
As testing framework to implement the unit, functional and integration tests we use MiniTest. For the initial test data generation we utilize FactoryGirl as well as Faker gem. To add more useful methods and assertions we added up Capybara and Shoulda gems. For service integration testing we utilize webmock and vcr gems. Also for acceptance testing we use headless and selenium webdriver gems. Before the functions are going live we provide performance testing with SoapUI test automation framework.
From the time when we introduced the first implementation of Cognition to Global Rev Gen employees around the world it became the indispensable part of the company workflow, which tightly glues together separate services used for company operations. It quickly became a platform which allows the company employees to control the online digital campaigns at any stage - starting from the prospecting phase to the billing.
Constant monitoring and support of the service deployment allows us to keep it up and running 24x7, make the critical updates and upgrades well before they might become a bottleneck, and lets us implement the user requests in quick iterations, providing the balance between time to production, quality and costs.