0

We currently have an architectural setup as described below. Our plan is to conduct a load test, but we face a challenge due to the high cost of real switches. We have two options: either build the architecture directly or create a simulation. However, our tasks must pass through a cloud server that only recognizes real switches. Unfortunately, this cloud server lacks a mechanism to recognize simulated or 'fake' switch signals.

At present, only a limited number of tasks are processed through this system, and all tests have been successful. However, we plan to transition this system into production in the future, adding more than 50,000 switches. Each task might require control over thousands of switches. We anticipate that problems may arise when the number of switches for a single task increases, potentially causing the lambda function to exceed its 15-minute time limit. We need to test this scenario, or possibly revise the architecture to improve load handling performance. The challenge here is the presence of a cloud server that we cannot control.

My question is, how can we conduct a load test for this type of architecture? We are responsible for building everything except the third-party cloud. We have already built and successfully tested the current setup, but we need to adapt it to handle a larger load in production. Before we do that, we need to test it and possibly modify the current architecture for better performance, while making as few changes as possible.

enter image description here

6
  • 2
    My opinion is that you cannot avoid some level of "testing in production". Find way to "ramp up" production, while observing performance. If you find something wrong, fix that and redeploy. With pre-production testing, you should only bother with identifiying worse-case scenarios as fine-grained performance testing will range from too expensive to practically impossible.
    – Euphoric
    Nov 6, 2023 at 5:59
  • it seems to me that the third party will have load tested their own system and be able to give you some numbers as to the expected response times. This will enable you to simulate their system and measure the expected performance for your part of the over all system
    – Ewan
    Nov 6, 2023 at 21:15
  • 50k in 900s is only 55 a second though, so I would have thought you would be ok. Evn though I dislike lambdas. why not make a permanent service?
    – Ewan
    Nov 6, 2023 at 21:18
  • @Ewan, I guess it is designed for peak concurrency. Using a standalone server also good, but code is already there.
    – Yiffany
    Nov 6, 2023 at 22:01
  • @Ewan, "50k in 900s is only 55 a second", what is that? function will processing 55 switch per sec. Thats a lot.
    – Yiffany
    Nov 6, 2023 at 22:04

1 Answer 1

1

However, our tasks must pass through a cloud server that only recognizes real switches. Unfortunately, this cloud server lacks a mechanism to recognize simulated or 'fake' switch signals.

In that case, your best option is to construct a "mock" for the entire third party service.

That may be a substantial amount of work, and it may be difficult to replicate the performance characteristics of the real service, but it also allows you to control "fault injection". You can simulate the third party being under load and taking longer to respond, for example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.