【发布时间】:2018-05-23 08:11:41
【问题描述】:
我正在为我正在考虑转变为公司的项目构建一系列交互式闪亮网络应用程序。我的背景是数据科学,我在 Web 应用程序/服务器方面没有很多经验,但这些都是我在项目中需要考虑的重要方面。我目前有一个安装了 ShinyServer(免费、开源)的 Amazon Linux AMI EC2 实例,并且我目前正在那里托管我的 Web 应用程序的早期版本。到目前为止一切正常,但我还没有公开链接。
我的第一个问题是 是否有人知道我在使用 RShiny 应用程序和 ShinyServer 时是否会不可避免地遇到某些限制(可扩展性限制、与数据库的集成限制、安全/身份验证限制等)? 我还没有听说过很多成功的、超级流行的 Web 应用程序是托管在 ShinyServer 上的闪亮应用程序,但我的感觉是,ShinyServer 主要用于托管仅在少数人之间共享的 RShiny 应用程序(即在公司的团队成员之间共享。)。根据这个线程 - Does R-Server or Shiny Server create a new R process/instance for each user? - 我特别担心我的应用程序将无法同时处理数千个用户,因为无论应用程序的并发用户数如何,只为应用程序创建了 1 个 R 进程。如果我打算扩展超过数百或数千个用户,那么通过 ShinyServer pro 拥有 10-20 个进程可能也无法解决问题。我还注意到,ShinyServer Pro 每年会给我带来不那么微不足道的 1 万美元。
我的第二个问题是是否可以使用其他服务器技术(例如 Heroku)部署 RShiny 应用程序。我遇到了这个 github 页面(https://github.com/virtualstaticvoid/heroku-buildpack-r/tree/heroku-16),但还没有深入研究它。有人告诉我,heroku 可以轻松更新代码在 github (git push heroku:master) 上的应用程序的版本。
我的第三个问题涉及我的某些具体考虑。特别是,我目前正在编写一个脚本,该脚本从 API 查询数据并将该数据写入我的(尚未设置的)数据库。这是我的应用程序使用的数据,我有兴趣让应用程序在数据库更新时实时更新,而不需要用户刷新网页。我的一个朋友为这种类型的异步行为建议了 AJAX,看起来在 R 中这可能是可能的(https://github.com/daattali/advanced-shiny/tree/master/api-ajax)。
很抱歉,这是一个如此繁重的问题,但我希望它不会被关闭,因为我认为它具有相当的教育意义。任何建议/来源/指出我正确的方向将不胜感激。
【问题讨论】:
标签: r web-applications shiny shiny-server