会社になることを検討しているプロジェクトのために、一連のインタラクティブな光沢のあるWebアプリを構築しています。私のバックグラウンドはデータサイエンスであり、Webアプリ/サーバー側の経験はあまりありませんが、これらは私のプロジェクトで検討する重要な側面です。現在、ShinyServer(無料のオープンソース)がインストールされたAmazon Linux AMI EC2インスタンスがあり、現在、そこでWebアプリの初期バージョンをホストしています。これまでのところすべてが正常に機能していますが、リンクはまだ公開していません。
私の最初の質問はRShinyアプリとShinyServerの使用に必然的に遭遇する特定の制限(スケーラビリティの制限、データベースとの統合の制限、セキュリティ/認証の制限など)があるかどうか誰かが知っているかどうかです。 成功した超人気のウェブアプリがShinyServerでホストされている光沢のあるアプリであるとは聞いたことがありませんが、ShinyServerは主にRShinyアプリをホストするために使用されています。少数の人(つまり、会社のチームメンバー間で共有されます)。このスレッドごと--- R-ServerまたはShiny Serverはユーザーごとに新しいRプロセス/インスタンスを作成しますか? -アプリが数千人のユーザーを同時に処理できないことを特に懸念しています。 1 Rプロセスは、アプリの同時ユーザー数に関係なく、アプリ用に作成されます。 ShinyServer proを介して10〜20のプロセスを使用しても、数百または数千のユーザーを超えてスケーリングする場合でも、おそらく問題は解決しません。また、ShinyServerProが私に年間1万ドルを実行することにも気づきました。
2番目の質問は、RShinyアプリをHerokuなどの他のサーバーテクノロジを使用して展開できるかどうかです。このgithubページ( https://github.com/virtualstaticvoid/heroku-buildpack-r/tree/heroku-16 )に出くわしましたが、まだ深く掘り下げていません。 herokuを使用すると、コードがgithub(git Push heroku:master)にあるアプリのリリースを簡単に更新できると言われています。
私の3番目の質問には、私の特定の考慮事項が含まれます。特に、私は現在、APIからデータを照会し、そのデータを私の(まだセットアップされていない)データベースに書き込むスクリプトに取り組んでいます。これは私のアプリが使用するデータであり、ユーザーがWebページを更新しなくても、データベースの更新時にアプリをリアルタイムで更新することに関心があります。私の仲間は、このタイプの非同期動作に対してAJAXを提案しました。これは、Rで次のようなもので可能になる可能性があります( https://github.com/daattali/Advanced-shiny/tree/master/api-ajax )。
非常に多くの質問ですが、かなり教育的だと思うので、閉鎖されないことを願っています。どんな提案/情報源/私を正しい方向に向けることはこれに関して大いに感謝されるでしょう。
チャノヴィツェ、
以下のRStudio/AWSサポート記事をご覧になることをお勧めします。光沢のあるサーバーをスケーリングするには、ロードバランサーの使用を検討する必要があります。
RStudio
AWS
ブログ記事:
シャイニーは素晴らしいプラットフォームであり、彼らのサポートは素晴らしいです。私はあなたがそれらを鳴らすことをお勧めします-彼らはあなたの質問に答えるのを確実に助けるでしょう。
とはいえ、数千または数十万の人々をサポートするスケーラブルなWebサイトを作成する計画の場合は、 D3.js と組み合わせて使用することも検討および検討することをお勧めします react.js または Angular.js 、忘れずに node.js 。
私の感覚では、ロジックエンジンと視覚化フロントエンドに接続されたバックエンドデータベースを見ているということです。使用法の概要をお探しの場合は、次のWebページとgit repo [少し古いですが便利です]をご覧ください。
上記があなたを正しい方向に向けてくれることを願っています。
2番目の質問に関連するいくつかのメモを提供したいと思います:はい、前述の buildback を使用して、herokuに光沢のあるアプリケーションをデプロイできます。
私はあなたと同じような状況にあり(Shinyアプリケーションをスケーラブルな方法で提供するための可能な方法について自問しました)、「herokuの方法」を採用することにしました。
上記のビルドパックを使用してアプリをherokuにデプロイする場合、これらのヒントが役立つ場合があります。
Herokuは、アプリケーションの実行方法を「推測」しようとします。ただし、Procfile
という名前の特別なファイルをアプリケーションに追加して、アプリケーションに対して実行するプロセスコマンドを制御することもできます。私の場合、web: R -f ~/run.R --gui-none --no-save
を使用しました。これは、run.R
という名前のファイルがWebサーバープロセスのR
実行可能ファイルに渡されることを意味します。
HerokuのスタックはUbuntuに基づいています。追加のdebパッケージが必要な場合は、Aptfile
という名前の別の特別なファイルを作成し、そこにパッケージ名を追加すると、herokuが自動的にこれらをインストールします(RPostgreSQL
に必要でした)
init.R
という名前の別の特別なファイルを追加し、必要に応じて、つまりinstall.packages
などを使用して、必要に応じてすべてのR
パッケージをインストールできます。 。
実行例として、 here は、herokuとの互換性を含め、「フルスタック」の光沢のあるアプリがどのように見えるかを思い出すために自分で作成したおもちゃアプリケーションの例です。