Load Testing with Cyrex Swarm
27 May 2021
When it comes to load testing, you’ve only got a few options. Do it yourself, hire a company to do it for you, or skip it and hope it works out.
The first one costs significant development time and resources. The second costs resources and is limited by the number of virtual machines they can run. And the third, well, is a recipe for a bad time. With Cyrex, we offer a nearly limitless headless solution deployed on a cloud provider to meet whatever user needs you’re expecting and more.
What is Load Testing?
We actually discussed load testing in our previous blog 'Cyrex Load Testing: Is Your Game Ready for Success'. Here, you can deep dive into the whys, what’s, and how’s of our load testing service.
To give a quick summary, load testing is a test scenario in which you see how much your servers can take before struggling or crashing. This can often be done by stress testing, which is effectively a controlled Direct Denial of Service (DDoS) attack. A flooding of packets sent en masse to push a server to the limit.
A load test is more about resilience, discovering not just where a system struggles but also how it handles incoming traffic. The main difference is a load test simulates user behaviour, rather than just a flood of connections.
When would you do a Load Test?
The answer to this links into the ‘do it yourself’ load testing option. The main time to really do a load test is just before launch. Once the game or application is ready to go, you have to prepare for the inevitable flood of users upon launch. They’re also done before large events or before releasing new content.
Should the developers or IT staff look to handle load testing personally, it requires an investment of development time and resources. While creating virtual machines to conduct the testing isn’t difficult, the process of coding each machines’ interaction is extremely tough for time and resources.
In addition, on launch day, you need to ensure your servers scale correctly with the required usage. At Cyrex, we offer dynamic load testing which includes the scalability and growth potential of your servers. The value of this is knowing that your server can go from zero players to one hundred thousand in half an hour. And if you don’t reach one hundred thousand, you aren’t stuck paying for unused server capacity.
What’s different about Cyrex’ Load Testing?
Firstly, the tool we use. Like our proprietary tool, the Cyrex Protoceptor, which emulates a Man in the Middle attack we have developed our own unique tool for load testing. The Cyrex Swarm, a fully headless solution that can be deployed at any scale on a cloud service. While Cyrex Swarm is capable of testing any application, it works best with game clients.
Many load tests use similar methods, a semi-headless solution in which the game is mostly rendered except for graphics. But this still requires a tremendous amount of RAM and CPU. Instead, Cyrex Swarm can integrate networking services related to common frameworks, such as Unreal Engine Networking, Photon Bolt, and any custom protocol. This ensures a tight overlap between security and load testing. In addition, due to the network integration, we are running no visual client – ensuring that the load required on our end is reduced significantly.
How does Cyrex Swarm work?
Simply put, it’s a fully headless solution that interacts directly with your service on any scale you require. More in-depth, it saves you time and resources. Aside from the RAM and CPU requirements to run a significant load test, it also requires developers to code for the interactions you need tested. This will take a chunk of time to do, all while counting down to launch.
The Swarm allows us to create small scripts for each and every protocol required. They are lightweight scripts that talk directly to the server. Everything from user/player movements and interactions, to authentication, purchases, and searches. The lightweight nature means we can deploy any number of them on a large scale.
The issue with a lot of load tests is meeting bottlenecks. The main one will always be the network, and therefore we use entirely cloud-based testing. On our current cloud provider, each virtual machine has its own IP and network interface. Using this, we can deploy one thousand virtual users on a single virtual machine. Each interacting as users would, giving a realistic result of load testing. We can grow and expand to any size you may need and leave the bottleneck forgotten in the wind.
We see too many games and applications which crash on their big launch. As soon as the rush of users eager to access begins, time and time again it all shuts down. Proper load testing can help you withstand that day one rush. The launch is a key time for most, and a bad launch can mean losing valuable time and user faith.