Hi, I got a php/laravel solution. I am trying to do a load test for the transfers end point pointing to the sandbox.
I am noticing the response time from the transfer api call degrades significantly with a concurrent user base.
upto 20 concurrent users - > 2 seconds
20 to 50 users → 6 to 12 seconds
I tried using curl, guzzle, swagger sdk etc, and the result is the same. Tried with Keep-alive settings as well.
Questions
Is there a rate limiting on the transfers api?
Is this because Sandbox is slower ? will i see this perform better in production?
Rate Limiting on the Transfers API:
Yes, the Dwolla API enforces rate limits to ensure fair usage. You can refer to our API documentation for specifics. If you’re encountering throttling (e.g., HTTP 429 errors), ensure your application includes retry logic with exponential backoff to handle these gracefully.
Performance of Sandbox vs. Production:
The Sandbox environment is designed for functional testing and does not reflect the performance of Production. Production is optimized for higher concurrency and throughput, so you can expect better performance there. However, for load testing, I recommend using a mock server to simulate the Transfers API, as the Sandbox may not be ideal for benchmarking.
Other Aspects to Check:
Mock Server for Load Testing: Mock servers, like those from Postman or WireMock, allow you to safely simulate high-concurrency scenarios, rate limits, and custom response times in a controlled environment. These are especially useful for testing scalability and edge cases.
Retry and Error Handling: Include retry logic and monitor API response codes to handle rate limiting or errors during testing.
When to Use the Sandbox:
While a mock server is ideal for load testing, the Sandbox environment remains valuable for:
Validating integration logic and workflows, such as initiating transfers and handling callbacks.
Testing how your application handles real Dwolla API responses, including specific HTTP statuses and payloads.
Using a combination of mock server load testing and Sandbox functional validation will provide a robust approach to testing your integration. Hope this helps!