2017-12-09 59 views
5

Tôi đang xây dựng một loạt các ứng dụng web sáng bóng tương tác cho một dự án mà tôi đang cân nhắc chuyển thành Công ty. Nền tảng của tôi là về khoa học dữ liệu và tôi không có nhiều kinh nghiệm về mặt ứng dụng web/máy chủ, nhưng đây là những khía cạnh quan trọng để tôi cân nhắc với dự án của mình. Tôi hiện đang có một phiên bản Amazon Linux AMI EC2 với ShinyServer (miễn phí, mã nguồn mở) được cài đặt và hiện tôi đang lưu trữ các phiên bản ứng dụng web của mình ở đó. Cho đến nay mọi thứ đều hoạt động tốt, nhưng tôi chưa tạo liên kết công khai.Hiểu về khả năng mở rộng của các ứng dụng RShiny được lưu trữ trên ShinyServer

Câu hỏi đầu tiên của tôi là liệu có ai biết nếu có những hạn chế nhất định (giới hạn khả năng mở rộng, tích hợp với giới hạn cơ sở dữ liệu, giới hạn bảo mật/xác thực, v.v.) mà chắc chắn tôi sẽ sử dụng ứng dụng RShiny và ShinyServer? Tôi đã không nghe nói về nhiều ứng dụng web thành công, siêu phổ biến là ứng dụng sáng bóng được lưu trữ trên ShinyServer, nhưng cảm giác của tôi là ShinyServer chủ yếu được sử dụng để lưu trữ các ứng dụng RShiny được chia sẻ giữa một số ít người (tức là được chia sẻ giữa các nhóm thành viên của một công ty.) Theo chủ đề này - Does R-Server or Shiny Server create a new R process/instance for each user? - Tôi đặc biệt lo ngại rằng ứng dụng của tôi sẽ không thể xử lý hàng nghìn người dùng cùng lúc vì chỉ có 1 quy trình R được tạo cho ứng dụng bất kể # người dùng đồng thời của ứng dụng. Có 10-20 quy trình thông qua ShinyServer pro có lẽ không giải quyết được vấn đề hoặc nếu tôi có ý định mở rộng quy mô lớn hơn hàng trăm hoặc hàng nghìn người dùng. Tôi cũng nhận thấy rằng ShinyServer Pro sẽ cho tôi một số tiền không đáng kể $ 10K mỗi năm.

Câu hỏi thứ hai của tôi là liệu các ứng dụng RShiny có thể được triển khai bằng các công nghệ máy chủ khác, chẳng hạn như heroku. Tôi đi qua trang github này (https://github.com/virtualstaticvoid/heroku-buildpack-r/tree/heroku-16) nhưng chưa đào sâu vào nó. Tôi đã nói rằng heroku giúp bạn dễ dàng cập nhật bản phát hành cho các ứng dụng có mã trên github (git push heroku: master), trong số những thứ khác.

Câu hỏi thứ ba của tôi liên quan đến những cân nhắc cụ thể nhất định của tôi. Đặc biệt, tôi hiện đang làm việc trên một tập lệnh truy vấn dữ liệu từ một API và ghi dữ liệu đó vào cơ sở dữ liệu (chưa được thiết lập) của tôi. Đây là dữ liệu mà ứng dụng của tôi sử dụng và tôi muốn được cập nhật ứng dụng trong thời gian thực khi cập nhật cơ sở dữ liệu mà không yêu cầu người dùng làm mới trang web. Một người bạn của tôi đã đề xuất AJAX cho loại hành vi không đồng bộ này, và có vẻ như điều này có thể có trong R với một cái gì đó như thế này (https://github.com/daattali/advanced-shiny/tree/master/api-ajax).

Xin lỗi vì đây là câu hỏi được tải, nhưng tôi hy vọng nó không bị đóng cửa vì tôi nghĩ nó khá là giáo dục. Bất kỳ đề xuất/nguồn/chỉ cho tôi đi đúng hướng sẽ được đánh giá cao về điều này.

Trả lời

2

Canovice,

Tôi khuyên bạn nên xem các bài viết hỗ trợ RStudio/AWS sau đây.Để mở rộng quy mô một máy chủ sáng bóng, bạn sẽ cần phải nhìn vào cách sử dụng một cân bằng tải:

Shiny là một nền tảng tuyệt vời, hỗ trợ của họ là tuyệt vời. Tôi khuyên bạn nên gọi điện cho họ - họ chắc chắn sẽ giúp trả lời câu hỏi của bạn.

Điều đó nói rằng nếu kế hoạch của bạn là tạo ra một trang web mở rộng sẽ hỗ trợ hàng ngàn hoặc hàng trăm ngàn người sau đó cảm giác của tôi sẽ khuyên bạn nên bạn cũng xem xét và xem xét sử dụng D3.js kết hợp với react.js hoặc Angular.js, không quên đề cập đến node.js.

Cảm giác của tôi là bạn đang xem một cơ sở dữ liệu phụ trợ được kết nối với một công cụ logic và giao diện người dùng trực quan. Nếu bạn đang tìm kiếm một cái nhìn tổng quan tốt của việc sử dụng có một cái nhìn tại các trang web và git repo sau [A ít ngày nhưng hữu ích]:

Tôi hy vọng ở trên hướng bạn đi đúng hướng.

Các vấn đề liên quan