We conducted a comprehensive audit of the code together with the client's developers. The load testing carried out allowed us to identify the most challenging and difficult-to-scale parts of the architecture. As a result, we achieved the following outcomes:
- Identified that minimal modifications in the auxiliary software code would enable us to use a unified approach for scaling all of the client's architectural subsystems.
- Fragmented the client's monolithic architecture into 7 independent subsystems with horizontal scaling and a significant margin for linear growth.
- Added horizontally scalable caching based on memcached in the most loaded subsystems, which allowed serving more clients with less power consumption.
- Covered the new architecture with comprehensive monitoring, enabling proactive responses to emerging issues in the infrastructure.
- Prepared and implemented a migration plan with the phased creation of 3 independent geographically distributed clusters in the client's presence regions. In the new implementation, the clusters could operate independently of each other, acting as geo-redundancies in the event of a disaster.
We accompanied the project for a year after the implementation began, successfully servicing an audience that grew fourfold. Optimizations in the most problematic areas also increased the project's profitability by 8%. The new, modular architecture allows for adding new servers to the clusters as the load increases. Without our intervention, the client would have been forced to halt the development of their product due to scaling problems.