I'm currently working on a architectural design for the testing of a product that's estimated to have over 100k simultaneous user hits. For the product specification, I'm including continuous integration and continuous delivery practices by using cloud CI services as Travis.
Now, I want to also stress/performance test the product against a simulated 100k simultaneous requests scenario. At first glance, a [not so] quick solution would include setting up an entire testing environment (outside Travis, of course), literally replicating the production environment, and using a dedicated system to spawn 100k separate processes, hitting the application running on the testing environment, and collecting reports.
Now, this approach feels very basic and very close to a bad practice (specially because I came up with this while I wrote this post). There is probably a standard design or solution (maybe even as a service) to solve this. Also, I don't see how would this fit on a CI pipeline.
I also want to add that covering this non-functional requirement (app should handle simultaneous 100k users) looks like it's probably solved by a good infrastructure, rather than code. Probably what I'd be needing to work with are load balancers and server providers that would let me scale the resources horizontally. However, even though this is DevOps, I want to run performance tests on it.
So how can I perform performance/load test for 100k users adding it to my CI pipeline?