Our goal was to build a marketplace where identification, payments and subscriptions went directly through mobile provider’s APIs. One of the main requirements was the ability of the platform to withstand high load of traffic, due to the fact that it was designed for an unlimited number of users. The tasks also included integration of mobile providers from around the world and therefore optimization of the code in accordance with the growing load.
Symfony was chosen as the main framework. However, as the system load increased, we made a decision to abandon Doctrine ORM in favor of faster direct queries to MySQL. Because of the Doctrine deadlock bug, we had to move the session from the database (where it was initially recorded for increased performance) into Redis. The client set strict standards for the size of images and other server files. Due to this, it was necessary to convert the images at the loading stage in the most efficient way to the smallest possible size in accordance with internal standards. All files were uploaded to the CDN to unload the server. Subscription was prolonged using CRON and Symfony commands.
Eventually, we built a system that could withstand a high load when uploading and downloading files. Due to the reduced size of images and other system files, pages loaded very quickly. After all, one of the main requirements was support of users with poor internet connection. As a result, our client has doubled the flow of users to the marketplace, and increased his profit.