I have hosted my dockerized shiny app on a shinyproxy server on a virtual machine (16G memory and 100G diskspace). The app is intended for over 20 concurrent users. To my knowledge, the way shinyproxy works is it creates one docker instance for each user. So in theory they should not interfere with each other.
My question is about how concurrent users consume server's memory and disk space.
To make the app more responsive, my app load all my data into memory. Does every instance has its own copy of the data? Say, if my data loaded is 100 mb. For 20 concurrent users, the server memory has to be at least 2GB just for data loading? If each docker instance is 1GB, then total memory on server needs to be at least 20GB for 20 concurrent users? Does it work that way?
What about shiny server pro? If I host my app on shiny server pro, instead of shinyproxy, does the app on server just load the data once and every users can access the data with their own sessions? Do users see their session slowing down when certain number of concurrent sessions opened?
I'm new to shiny app deployment. Appreciate it if anyone can clarify me on these concepts.