2017-12-09 140 views
5

Buduję serię interaktywnych, błyszczących aplikacji internetowych dla projektu, który zamierzam przekształcić w Firmę. Moje doświadczenie związane jest z danymi i nie mam dużego doświadczenia z zakresu aplikacji/serwera, ale są to ważne aspekty, które muszę rozważyć przy moim projekcie. Obecnie mam instancję Amazon Linux AMI EC2 z zainstalowanym ShinyServerem (free, open-source), a ja aktualnie hostuję tam wczesne wersje moich aplikacji internetowych. Jak dotąd wszystko działa dobrze, ale nie udostępniłem jeszcze linków do wiadomości publicznej.Zrozumienie skalowalności aplikacji RShiny hostowanych na ShinyServer

Moje pierwsze pytanie brzmi, czy ktoś wie, czy istnieją pewne ograniczenia (ograniczenia skalowalności, integracja z ograniczeniami bazy danych, ograniczenia bezpieczeństwa/uwierzytelniania itp.), Które nieuchronnie napotkam przy użyciu aplikacji RShiny i ShinyServer? Nie słyszałem o wielu udanych, super popularnych aplikacjach internetowych, które są błyszczącymi aplikacjami hostowanymi na ShinyServer, ale raczej czuję, że ShinyServer służy głównie do hostowania aplikacji RShiny, które są udostępniane tylko niewielkiej liczbie osób (tj. członkowie w firmie.). W tym wątku - Does R-Server or Shiny Server create a new R process/instance for each user? - Jestem szczególnie zaniepokojony tym, że moja aplikacja nie będzie w stanie obsłużyć tysięcy użytkowników jednocześnie, ponieważ dla aplikacji tworzony jest tylko proces 1 R, niezależnie od liczby równoczesnych użytkowników aplikacji. Posiadanie 10-20 procesów za pośrednictwem ShinyServer pro prawdopodobnie nie rozwiąże problemu, jeśli kiedykolwiek zamierzam osiągnąć skalę większą niż setki lub tysiące użytkowników. Zauważyłem też, że ShinyServer Pro będzie mnie kosztował nie mniej niż 10 000 $ rocznie.

Moje drugie pytanie dotyczy tego, czy aplikacje RShiny mogą być wdrażane przy użyciu innych technologii serwerowych, takich jak heroku. Natknąłem się na tę stronę github (https://github.com/virtualstaticvoid/heroku-buildpack-r/tree/heroku-16), ale jeszcze nie zagłębiłem się w nią zbyt głęboko. Powiedziano mi, że heroku ułatwia aktualizowanie wydań do aplikacji, których kod znajduje się na github (git push heroku: master), między innymi.

Moje trzecie pytanie dotyczy pewnych szczególnych kwestii. W szczególności pracuję obecnie nad skryptem, który wysyła zapytania do danych z interfejsu API i zapisuje te dane do (nie-jeszcze-konfiguracji) mojej bazy danych. To są dane, których używają moje aplikacje i chciałbym, aby aplikacje aktualizowały się w czasie rzeczywistym jako aktualizacje bazy danych, bez konieczności odświeżania strony internetowej. Mój kolega zasugerował AJAX dla tego typu asynchronicznego zachowania i wygląda na to, że może być to możliwe w R z czymś podobnym (https://github.com/daattali/advanced-shiny/tree/master/api-ajax).

Przepraszam, że jest to bardzo obciążone pytanie, ale mam nadzieję, że nie zostanie ono zamknięte, ponieważ uważam, że jest dość edukacyjne. Wszelkie sugestie/źródła/wskazujące mi we właściwym kierunku byłyby bardzo mile widziane.

Odpowiedz

2

Canovice,

ja polecam Ci spojrzeć na następujących artykułach wsparcia RStudio/AWS.Aby skalować błyszczącą serwer trzeba spojrzeć za pomocą równoważenia obciążenia:

Shiny jest doskonałą platformą, ich wsparcie jest fantastyczny. Zalecam, abyś zadzwonił - na pewno pomogą ci odpowiedzieć na twoje pytania.

To powiedziawszy, jeśli twój plan jest stworzenie skalowalnego stronę internetową, która będzie obsługiwać tysiące lub setki tysięcy ludzi, to moje poczucie byłoby polecić także przejrzeć i rozważyć użycie D3.js w połączeniu z react.js lub Angular.js, nie zapominając wspomnieć node.js.

Mam wrażenie, że patrzysz na bazę danych zaplecza połączoną z silnikiem logicznym i interfejsem wizualizacji. Jeśli szukasz dobrej przegląd wykorzystania spojrzeć na następującej stronie internetowej i git repo [trochę przestarzałe, ale przydatnych]:

Mam nadzieję, że powyższe wskazuje ci właściwy kierunek.