A client sought our help with an uncompleted, but already problem-ridden project. We started troubleshooting the design flaws to get the system up and running.
When we began our work, the system essentially consisted of a Cloud developed in Ruby. This is a large system designed to manage the real estate database, interaction with subagents, developers, as well as large volumes of supporting information that together compose a full cycle of real estate agency operations. The system also included a website running on Bitrix software and containing all relevant information on real estate, a mobile app and a set of scripts that provide parsing of information retrieved from developers and used for database provisioning.
The first stumbling block was that a database that uses a Bitrix-based data structure cannot be operationally efficient, especially with such large volumes of data and complex selection algorithms that are required for real estate search.
For instance, to optimize the website search function, we had to opt out of ORM provided by Bitrix in favour of direct queries, which increased search output productivity 20-fold. We then added a cache layer on top of the structure to enable higher-speed request retrieval.
Bitrix-based API was used for data handling inside the Cloud, with the result that the system performance, despite caching of query results, left much to be desired. To fix this flaw,
we proposed a data migration scheme that transfers data to the cloud. We are currently moving data from Bitrix into our database and writing a new API for it. Preliminary productivity assessments have shown a 20-fold increase, and an even further increase is expected during additional testing upon work completion.
After that, the mobile app and parsers will be switched over to the new API – thus providing a single centralized data storage location.
Another problem with the service is parsing the files that are being sent by developers. These are, in general, various XLS files containing data in different formats. The main pain point here is that this format is constantly changing. At the moment we are designing an intellectual parser that will enable prompt response to such changes with minimal effort. Agency staff members will be able to make changes into the parsing algorithm without exterior help from programmers.
We have also linked the system up with the API of Mango VoIP provider. All incoming calls are recorded in the system and relevant statistics is available for further analysis.