Project
Web-platform for displaying objects of the following categories on the map: restaurants, hotels, etc. This platform showed advertisement, tied to objects on the map.
Task
There was an outdated version of the system. It was difficult to find developers for the obsolete technology (ASP.NET). At the same time, it was important to start adding new functionality in the shortest possible time and bring them to the market.
An additional problem was slow operation of the system (loading of the pages took more than 10 seconds), users flooded support service with messages.
Also, the data in the system was incomplete, it was necessary to integrate with the new data providers. This, in turn, have led to point increase on the map by 2 times.
The time was limited
Solution
Instead of completely rewriting the system, we have decided to switch to a new technology (ASP.NET MVC) compatible with the old one(ASP.NET). By doing so, the old functionality could not be touched, because it worked, and new functionality could be implemented within the new architecture and technologies.
In order to increase the page load speed, we wanted to transfer the database to new more powerful servers.
For integration, new data providers (hotels.com), including more than 4 million objects on the map, were selected. This became critical, because the system have already worked very slow. There was an idea to add indexes to the database tables, which allow to speed up queries to the database in dozens of times without changing the capacity of the servers.
Next, it was planned to add new functionality and gradually transfer old code to a new architecture.
Implementation
We transferred the system into ASP.NET MVC in 4 days. The old functionality worked, moreover, we could finish the code using the new architecture.
We had to replace the map, as it turned out that the old version did not support some functions and it could not be used from a legal point of view. It took another 2 weeks.
Next, we took up the speed of loading pages. We analyzed the slow queries and found out that it is necessary to request not all the objects of the map, but to filter them in coordinates and categories (hotels, restaurants, etc.). During this, we built indexes on the database tables, query speed increased from 10 seconds to 0.6 seconds without changing the hardware.
This made it possible to add another 4 million points on the map. We wrote a part, which take data from hotels.com, and added another 4 million points. The speed of the request dropped to 1 second, which was still acceptable taking into account the millions of points on the map.
Results
- We transferred the system to modern technology within 4 days
- The number of users increased, and the number of calls to the support service fell to 2 per day after 3 weeks
- We added 4 million objects on the map
- We optimized the speed of loading pages from 10 seconds to 1 second without changing the hardware
- We updated the map to the latest version
- We implemented new functionality in a quiet mode during 7 months
- We added support for mobile devices
Team
- 4 Developers, 1 QA and 1 Project Manager