如何衡量部署 Shiny 应用程序的所有方式的可扩展性?

Kmn*_*sE2 4 r shiny

有几种部署 Shiny 应用程序的方法:

使用 Heroku使用 ShinyProxy、Traefik 和 Docker SwarmShinyapps.ioShiny Server用闪亮.semantic 替换 Shiny UI

众所周知,ShinyServer 非常昂贵,而且 Shinyapps.io 不可扩展: 在此输入图像描述

文章

但比较所有的方法,如何衡量哪种方法更具成本效益?

da1*_*1an 5

我使用表中列出的三种方法托管应用程序。根据成本=时间+金钱:

  1. shinyapps.io:迄今为止最便宜的,只要它满足您的需求。
  2. shiny-server:设置时间较长,需要服务器,但限制较少。
  3. ShinyProxy:设置时间更长,需要服务器,有 Docker 经验,非常有能力。

最具成本效益的选项将是此列表中满足您所有需求的第一个选项:(1)shinyapps.io,(2)shiny-server(免费),(3)ShinyProxy,(4)Shiny-server Pro 。

内存: Shiny-server 可以在同一应用程序的多个实例之间共享内存,而 ShinyProxy 应用程序的每个实例都是完全独立的。如果使用 ShinyProxy 与 Shiny-server 托管,则需要大量内存的应用程序的许多实例会更快地耗尽服务器资源。

CPU:同一应用程序的多个实例将共享 Shiny-server 中的相同 R 实例和处理器线程。当使用 Shiny-server 托管时,许多并发用户可能会遇到计算量大的应用程序速度变慢的情况。在 ShinyProxy 中,每个用户都将获得自己的 Docker 容器/应用程序,这些容器/应用程序可以分布在多个处理器之间,支持更好地扩展计算密集型应用程序。

身份验证:仅 ShinyProxy(或 Shiny-server Pro)支持身份验证

Shiny-server Pro:(付费)允许您在CPU和内存之间进行优化,提供身份验证、用户监控等,但包括订阅费用。

实际测量/测试应用程序的可扩展性:使用闪亮的负载测试(有关更多详细信息,请参阅https://rstudio.github.io/shinyloadtest/)。