Benchmarks
- Same-worker environment is great to benchmark RabbitMQ-induced latency for the worker receiving the task and the result being ingested by the worker
- Task ingestion time
- Task object base size isn't a benchmark but it's a good metric
- Calculating how network issues will affect performance is good but not very realistic since backends don't have a lot of network issues. However - it's quite common for companies to use services like RDS, so we can try to check what kind of latency using RDS with a VM in AWS induces and how that affects ingestion.
- Figuring out how many tasks need to be produced per second for RabbitMQ and Postgres to blow up.
- Figuring out encoding and decoding times when the task object enters and leaves the publisher, the worker, and the relay. Also for each language.
Tools
There are a lot of tools here, but we should focus on the Python ones first.
- Celery
- Using RabbitMQ
- Using Redis
- Hatchet
Others:
Things to keep in mind
- Perhaps we can shoot these guys a message before we publish the results to check if we are properly testing these tools?
- Tools like Hatchet rely on various services and connections — perhaps we could try to measure how each application scales with RTT similar to how protocols like TCP and TLS care very wary of scaling with number of round trips?
def function():
return ""
Benchmarks
Tools
There are a lot of tools here, but we should focus on the Python ones first.
Others:
Things to keep in mind