I'm developing StatSuite — an open-source suite of Shiny apps for ecological and biodiversity data analysis. The suite currently includes 6 apps:
StatFlow — introductory data analysis
StatDesign — study design
StatModels — linear models and GLMs
StatGeo — spatial analysis
StatOccu — occupancy models
StatMonitor — biodiversity monitoring
Each app has multiple analytical tabs, pedagogical content, interactive visualizations, and generates reproducible R code. I'm also packaging them with golem for distribution via GitHub and eventually CRAN.
I have two main use cases and I'm trying to figure out the best deployment strategy:
Teaching: workshops where 10–30 participants use one or more apps simultaneously for 4–8 hour sessions. Having the app go down due to active hour limits mid-session is simply not an option.
Independent use: researchers, students, and conservation practitioners using the apps on their own, potentially generating continuous traffic across multiple apps throughout the month.
With 6 apps and this type of usage pattern, free or basic plans on Connect Cloud would get exhausted quickly. I'm evaluating the Enhanced and Advanced plans but I'm not sure they're designed for this workload without becoming very expensive as the user base grows.
My questions:
Has anyone deployed a multi-app suite with continuous simultaneous users on Connect Cloud? How has it worked in practice?
Is there a plan without active hour limits, or a way to handle teaching sessions without risk of interruption?
Does Posit offer any academic or open-source pricing for projects like this?
For anyone who has considered self-hosted alternatives (Shiny Server on a VPS) — how do you weigh that against Connect Cloud for this type of use case?
Any experience or advice would be really appreciated. Thanks!
I don't have much experience on Connect Cloud, but my group have been using shinyapps.io for a similar use case for many years. If I remember correctly, we currently use the Standard plan.
Overall it has worked well, but workshops continue to be a challenge and how much of a challenge depends on how RAM-intensive your apps are. We have five instances of each app, so a total of 40 GB (8 GB x 5) for each URL, but that often isn't enough so we have to add more temporary copies for workshops and give different URLs to different participants. Adding extra instances isn't currently available on Connect Cloud (but is presumably coming soon?) so you are limited to 16 GB of RAM. Depending on your users, you could consider running locally, but that kind of defeats the object of Shiny! For one particularly RAM-hungry app, I spun up separate URLs for each participant to use in a workshop.
Active hour limits aren't actually enforced. Whether that will continue forever, I don't know.
Unfortunately not.
I've experimented a bit with alternatives like using Digital Ocean to run apps in Docker. The main limitation I encountered with this is that apps are always "on" and so you are paying for compute even if nobody is using it. There may be a way to manage this better. If your app is RAM-intensive, you still have the difficulty of managing this. I believe the most professional option would be to use ShinyProxy to manage everything but you'll see that this is considerably more complicated than using Connect Cloud and I haven't used it myself.
Have you looked at using shinylive? It doesn't work for all apps and has some disadvantages like taking longer to load, but it runs the app in the browser rather than on a server so you avoids any hosting difficulties.
On the code-side of things, if your apps have slow-running tasks, be sure to use ExtendedTask or else when one user is running, that instance will be blocked for every other user.
On top of Simon's suggestions: Given that you already took the effort of packaging your shiny apps with the golem framework and putting them on GitHub (although I admit, I couldn't find the repositories there), my recommendation would be to run the apps locally in your teaching scenario.
I would expect that your workshop participants have R installed on their laptops and could run a package install routine... Safe, more secure and robust i.m.o.
I develop and maintain a bunch of shiny apps for scientific purposes as well (i.e. eCerto App Repo). I deliberately offer these as packages and online apps to give users the freedom of choice. Hosting online (in my case on a dedicated Shiny-Server) is basically done to allow users to quickly test if the software suits their needs before local installation, which I would recommend for more intense use.