Scalability and Performance of RShiny app on an EC2 instance


#1

I made a long-winded post on this topic last week on stackoverflow - https://stackoverflow.com/questions/47725234/understanding-the-scalability-of-rshiny-apps-hosted-on-shinyserver - to which I got a really helpful response. I’m pretty excited that, with the help of a lot of stackoverflow posts, I’ve got an initial version of my app up - http://ec2-52-7-0-194.compute-1.amazonaws.com:3838/ec2-user/NBAApp/. With that said, if I want to scale beyond hundreds / thousands of users, there is a good chance I will have to convert my app into a more traditional Javascript app. Until then, I have more specific questions now on the scalability of RShiny / ShinyServer hosted on an EC2 instance:

I started off with a t2.micro instance (Amazon Linux AMI), although I am currently using a t2.large instance, since I was having some installation difficulties with the micro. Will having a more powerful instance improve the performance (less lag, can handle more users) of my application? R is single threaded, and I only have a single EC2 instance with the open-source ShinyServer (so only 1 R process, not many), and I’d like my app to be able to withstand and perform well having 50-500 people using it for now.

Rather than using a more powerful instance, or paying $10K for shiny server pro, could I simply set up a large number of instances each with open-source shiny server, each with my app, and use an ELB to balance traffic between them? I don’t have the budget for shiny server pro.

Thanks in advance for any help on this. Scaling shiny apps beyond a small number of co-workers looking at your app is something I haven’t seen much content for, and I’m hoping I can understand a bit better how I can scale my app a bit, as long as it’s still an RShiny app.