General question about performance of Dash apps for a larger user base

Hi community,

I’ve been working with Dash for quite a while and like its functions (e.g., callbacks) to make a (dashboard) web app very dynamic and end user friendly.

The use case I’m now working on is more like a chat app since recent examples also have shown that one could use dash for that.

Now I’m wondering if Dash is (still) a good option for such a use case when multiple users (>200 but less than <1k) interact with the dash “chat” app at once. Reason for this concern is that the browser calls my dash server every time I interact with one of my UI elements (e.g., buttons) that I make “dynamic” with callbacks.

I’m aware of tweaks like working with client-side callbacks instead or using multiple workers with uvicorn. However, I’m not sure if I can convert every callback to a client-side callback and if having e.g., 4 workers would be enough to stand such a traffic.

Therefore, I am interested in your opinions and ideas! :slight_smile:

I don’t think it’s possible to answer that question, beyond saying that because Dash is a stateless system like most other web apps, resources can be estimated in much the same way as for any other web app. Having said that, it doesn’t seem easy to find good online material on this. A starting point could be https://www.redhat.com/architect/estimate-cloud-application-resource-needs

It’s also fair to say, I think, that Dash apps can be quite heavy on data transfer and server resources if developed in the standard way using server-side callbacks together with dcc.Store to store state, and you’re right to think of moving as much processing as you can to clientside callbacks