Our client is a popular pizza delivery service. They have planned, developed and continued on improving their software solution that:
- accepts orders online via site or mobile app;
- integrates counters and transactions;
- queues orders for the pizza bakers;
- coordinates the couriers;
- manages deliveries;
- analyzes sales;
- performs dozens of operations that an average person won’t keep in mind simultaneously, but the system can.
They have employed PFLB to test the system and to tune its performance.
PFLB Team Was about to Accomplish the Following Tasks:
How Have We Managed It?
The system contains several applications that take care of the following business processes: accepting customer orders through the web-interface and mobile apps; accepting restaurant branch orders from call-center employees and shift managers; accounting the quality and the speed of executing the order.
During testing most of the load was coming from the site or mobile app users and the cashiers that take orders. The secondary load sources emulated the system workflow and influenced the business processes: the tracker (it controls the order execution), TV-board in the pizzerias (it requests information from the system) and the information screens.
We’ve written test cases containing script and emulator run schedule, as well as scripts that emulated user actions, retrieved the amount of current operations, their intensity and the number of virtual users performing them, recorded the test duration.
We’ve used the hardware resource monitoring that was employed in the client’s system that consisted of grafana + influxDB solution + telegraf(windows)/ exporter(*nix).
Based on the test results we’ve analyzed the system load criteria for different load levels, including overcoming the maximal performance. As the analysis result we’ve listed the critical areas requiring monitoring on production and the factors that decrease performance: the lack of hardware or system resources, the software architecture limits. We’ve also selected the most resource-greedy and longest operations to optimize.