The system is an innovative augmented reality application that recognizes visual objects and enables consumers to find information about what they see on a TV screen, billboards, or anywhere else right in the moment. Users can simply scan an image and the system will provide all the information about advertised goods or services.
The legacy application API was outdated with a complicated business logic and bad user experience. In addition, the system transferred such data as a session ID and user credentials with each query, which posed security vulnerability. The customer needed a smart middleware that would connect the old API with today’s rich applications. Altoros was to suggest a scalable, high-load, and fast solution that would provide a quick search through a large database of different media content.
The legacy outdated API created a lot of challenges. To design a connector that would allow for integrating new applications with the system, the developers were to investigate the business logic of the solution and its architecture. Being developed long ago, the API featured slow complicated queries/calls. The team also had to solve a compatibility issue. The data is stored in the system in the JSON format and then converted to the XML format to be displayed to users. In addition, some data contained CDATA sections. They had to be shown but this feature was not supported by the JSON format.
To improve availability and performance of the system, the team suggested dividing the stored data into two groups and keep images separately from the text descriptions. The indexed text data is stored in a new database with a fast search. Altoros’s engineers also helped to set up and manage a computing cluster that was hosted in the Profitbricks virtual environment. This SaaS solution was selected because of its live vertical scaling feature.
Currently the system is being tested under different types of tasks to identify the maximum load it can deal with. If necessary, a number of improvements will be made to reach a response time of 1 second for 1,000 concurrent users.
Java Servlets, Mongo Java Driver, Jackson JSON Processor, Jackson FasterXML, HTTPUnit, XMLUnit
Client Platform/Application Server
Apache Tomcat 7
Ubuntu 12.04, Eclipse IDE, Jenkins