Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Shiny-Severあれこれ
2013/12/07
Japan.R 2013@ヤフー株式会社
和田 計也
サイバー系
サイバー系

はじめに

※この発表は個人の見
解であり、所属する組
織の公式見解ではあり
ません。
2013/12/07

2
サイバー系

自己紹介
u 和田 計也(@wdkz)
u 静岡県袋井市出身

u サイバー系企業でデータマイニングエンジニア職
u 最近はPCオーディオのベストソリューションを模索しています

u 長いことバイオ業界にいた
u バイ...
サイバー系

いきなりですが

u皆さん、Shiny使ってますか??
u プチBIツールとして
u BIツールで描画できないものとか

2013/12/07

4
サイバー系

Shinyとは?
u

Rのコーディングだけでブラウザ上で動く、まるで
javascriptで作ったような動的なアプリ(webページ)が
作れます!

u

実際に分析してる人ならこれがいかにキラーアプリかわか
ると思います。...
サイバー系

Shinyアプリの配布について
u

(後述する)Shiny-Serverを利用してサーバーにデプロイ

u

@hoxo_mさん作成のOpenShinyを利用してユーザに上手
いことShinyアプリを配布
u.Netで作ら...
サイバー系

Shiny-Server

uShiny-Server使ってますか??
u拠点が離れてたり
uユーザ多かったり
 すると配布が困りますよね...

2013/12/07

7
サイバー系

Shiny-Serverとは?
u

Shinyのサーバ版(ほぼnode.js)

u

Shinyアプリをサーバにデプロイしておけば、ユーザは
ブラウザから該当のurlにアクセスすれば使える

u

アプリ配布の問題解消し...
サイバー系

Shiny-Serverの憂鬱

uところが、複数ユーザ
の同時接続にめっちゃ
弱いという致命的な何
かがある
今やるの?
バカでしょ!!

2013/12/07

9
サイバー系

作者もわかってる
(Shiny-Mailing Listより)

テキスト

↓ここは大丈夫
Node.js
(Shiny-server)

R

↑ここがネック
2013/12/07

10
サイバー系

作者もわかってる・和訳
①Shiny-Server+Rを(複数のサーバで)プロセス起動
させて、その前にロードバランサーを立てて負荷分散する
Node.js

R

(Shiny-server)

Node.js

R

(Shi...
サイバー系

孫さん風

やりま
しょう
2013/12/07

12
サイバー系

②node.jsの後ろに複数Rプロセスの場合
u

Shiny-Serverのコード(Node.js)に手を入れる必要あり

u

近いうちに@mtknnktmさんがどこかできっと発表してくれます!

R
Node.js
(S...
サイバー系

①ロードバランサー的なの使う場合
u

nginxのリバースプロキシを使う
u

version1.3.13からwebsocketのリバースプロキシ対応
になったのでShiny-Serverでも使える
Node.js
(Shi...
サイバー系

①ロードバランサー的な
u

Shiny-ServerとRのサーバを用意(Ubuntuの場合)
#Rのインストール

これ

sudo apt-get update
sudo apt-get install r-base

No...
サイバー系

①ロードバランサー的な
u

nginxのリバースプロキシ用のサーバを用意(Ubuntuの場合)
これ

設定ファイルの中身

upstream app {
  server aaa.aaa.aaa.aaa:3838;
  se...
サイバー系

できた
Shiny-Server+Rを(複数のサーバで)プロセス起動さ
せて、その前にロードバランサーを立てて負荷分散する

Node.js
(Shiny-server)

Node.js
(Shiny-server)

Node...
サイバー系

ついでに(Basic)認証も
nginxのサーバに認証機能を持たせる
これ

設定ファイルの中身

upstream app {
  server aaa.aaa.aaa.aaa:3838;
  server bbb.bbb.bb...
サイバー系

ついでに(Basic)認証も_Shiny-Server側
Shiny-Server+Rのサーバは認証を通ったnginxから
のみアクセスを受け付けるようにする
これ

#Shiny-Serverの設定
sudo vi /etc/s...
サイバー系

その後
u

commercial versionだってー!!

node.jsの後ろに複数Rプロセス的な

2013/12/07

20
サイバー系

その後のその後
2013/11中旬にProのBetaサイトオープン

で、いくらなの?

なお、RStudio Server Proは1サーバ
あと数週間で価格出るって!!

2013/12/07

$9,995/yearの模様
...
サイバー系

その後のその後のその後(2013/12/04)
価格キター

同時接続10で $9,995/server/year
100で$24,995/server/year

2013/12/07

22
サイバー系

その後のその後のその後(2013/12/04)

認証

スケーリング

モニタリング

2013/12/07

23
サイバー系

最後にスケーリングの設定を紹介(Pro)
u

フリーのは1アプリ1Rプロセスなんだけど、
Proは1アプリ複数Rプロセス使える

1アプリあた
り利用するR
プロセス数の
MAX
1Rプロセスあたり接続する数
1RプロセスのC...
Upcoming SlideShare
Loading in …5
×

Shiny-Serverあれこれ

15,881 views

Published on

JapanR 2013での発表資料です。Shiny-Serverに関することとか

Published in: Education
  • Be the first to comment

Shiny-Serverあれこれ

  1. 1. Shiny-Severあれこれ 2013/12/07 Japan.R 2013@ヤフー株式会社 和田 計也 サイバー系
  2. 2. サイバー系 はじめに ※この発表は個人の見 解であり、所属する組 織の公式見解ではあり ません。 2013/12/07 2
  3. 3. サイバー系 自己紹介 u 和田 計也(@wdkz) u 静岡県袋井市出身 u サイバー系企業でデータマイニングエンジニア職 u 最近はPCオーディオのベストソリューションを模索しています u 長いことバイオ業界にいた u バイオマーカ探索してたり u 枯草菌の研究してたり 2013/12/07 3
  4. 4. サイバー系 いきなりですが u皆さん、Shiny使ってますか?? u プチBIツールとして u BIツールで描画できないものとか 2013/12/07 4
  5. 5. サイバー系 Shinyとは? u Rのコーディングだけでブラウザ上で動く、まるで javascriptで作ったような動的なアプリ(webページ)が 作れます! u 実際に分析してる人ならこれがいかにキラーアプリかわか ると思います。 詳細はここら辺 参考にして下さい 2013/12/07 5
  6. 6. サイバー系 Shinyアプリの配布について u (後述する)Shiny-Serverを利用してサーバーにデプロイ u @hoxo_mさん作成のOpenShinyを利用してユーザに上手 いことShinyアプリを配布 u.Netで作られてるのでWindowsマシン限定→弊社は断念 u(Mono使ってMacOSXでも動くといいなぁ) 2013/12/07 6
  7. 7. サイバー系 Shiny-Server uShiny-Server使ってますか?? u拠点が離れてたり uユーザ多かったり  すると配布が困りますよね... 2013/12/07 7
  8. 8. サイバー系 Shiny-Serverとは? u Shinyのサーバ版(ほぼnode.js) u Shinyアプリをサーバにデプロイしておけば、ユーザは ブラウザから該当のurlにアクセスすれば使える u アプリ配布の問題解消したね!! 2013/12/07 8
  9. 9. サイバー系 Shiny-Serverの憂鬱 uところが、複数ユーザ の同時接続にめっちゃ 弱いという致命的な何 かがある 今やるの? バカでしょ!! 2013/12/07 9
  10. 10. サイバー系 作者もわかってる (Shiny-Mailing Listより) テキスト ↓ここは大丈夫 Node.js (Shiny-server) R ↑ここがネック 2013/12/07 10
  11. 11. サイバー系 作者もわかってる・和訳 ①Shiny-Server+Rを(複数のサーバで)プロセス起動 させて、その前にロードバランサーを立てて負荷分散する Node.js R (Shiny-server) Node.js R (Shiny-server) ロードバランサー Node.js R (Shiny-server) ②Shiny-Serverの後ろに複数Rプロセス起動させる R Node.js (Shiny-server) R R 2013/12/07 11
  12. 12. サイバー系 孫さん風 やりま しょう 2013/12/07 12
  13. 13. サイバー系 ②node.jsの後ろに複数Rプロセスの場合 u Shiny-Serverのコード(Node.js)に手を入れる必要あり u 近いうちに@mtknnktmさんがどこかできっと発表してくれます! R Node.js (Shiny-server) R R この人 2013/12/07 13
  14. 14. サイバー系 ①ロードバランサー的なの使う場合 u nginxのリバースプロキシを使う u version1.3.13からwebsocketのリバースプロキシ対応 になったのでShiny-Serverでも使える Node.js (Shiny-server) Node.js (Shiny-server) Node.js (Shiny-server) R R R ・処理性能 ・高い並行性 ・メモリ使用量の小ささ が特長のオープンソースのWebサーバ (Apache HTTP Serverみたいなの) 2013/12/07 14
  15. 15. サイバー系 ①ロードバランサー的な u Shiny-ServerとRのサーバを用意(Ubuntuの場合) #Rのインストール これ sudo apt-get update sudo apt-get install r-base Node.js (Shiny-server) #shinyライブラリのインストール R sudo su -         -c "R -e "install.packages('shiny', repos='http://cran.rstudio.com/')"" #shiny-serverのインストール sudo apt-get install gdebi-core wget http://download3.rstudio.org/ubuntu-12.04/x86_64/shiny-server-0.4.0.8amd64.deb sudo gdebi shiny-server-0.4.0.8-amd64.deb #ここに好きな名前でフォルダ作成してファイル(server.R, ui.R)を入れる /srv/shiny-server/ 今回の例だと、このShiny-Server+Rサーバを3台 用意する。AWSだったら環境構築後にAMIを保存 #confファイルはデフォルトのまま して、そのイメージを指定してインスタンス起動 すれば良いから楽 2013/12/07 15
  16. 16. サイバー系 ①ロードバランサー的な u nginxのリバースプロキシ用のサーバを用意(Ubuntuの場合) これ 設定ファイルの中身 upstream app {   server aaa.aaa.aaa.aaa:3838;   server bbb.bbb.bbb.bbb:3838; server ccc.ccc.ccc.ccc:3838; } #nginxのインストール server{ listen 80; sudo apt-get install nginx server_name yyy.yyy.yyy.yyy; #設定 location / { sudo vi /etc/nginx/conf.d/ virtual.conf proxy_pass http://app; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; #起動 proxy_set_header Connection "upgrade"; } sudo start nginx & } 2013/12/07 16
  17. 17. サイバー系 できた Shiny-Server+Rを(複数のサーバで)プロセス起動さ せて、その前にロードバランサーを立てて負荷分散する Node.js (Shiny-server) Node.js (Shiny-server) Node.js (Shiny-server) R http://aaa.aaa.aaa.aaa:3838/your_app_name R http://bbb.bbb.bbb.bbb:3838/your_app_name R http://ccc.ccc.ccc.ccc:3838/your_app_name http://yyy.yyy.yyy.yyy/your_app_name 2013/12/07 17
  18. 18. サイバー系 ついでに(Basic)認証も nginxのサーバに認証機能を持たせる これ 設定ファイルの中身 upstream app {   server aaa.aaa.aaa.aaa:3838;   server bbb.bbb.bbb.bbb:3838; server ccc.ccc.ccc.ccc:3838; } #設定 sudo vi /etc/nginx/conf.d/ virtual.conf server{ listen 80; server_name yyy.yyy.yyy.yyy; #Apache付属のhtpasswdコマンドで location / { #パスワードファイル作成 auth_basic "Restricted"; htpasswd -c /etc/nginx/.htpasswd wdkz New password:入力(不可視) auth_basic_user_file "/etc/nginx/.htpasswd"; Re-type new password:再入力(不可視) proxy_http_version 1.1; proxy_pass http://app; proxy_set_header Upgrade $http_upgrade; #起動 proxy_set_header Connection "upgrade"; } sudo start nginx & } 2013/12/07 18
  19. 19. サイバー系 ついでに(Basic)認証も_Shiny-Server側 Shiny-Server+Rのサーバは認証を通ったnginxから のみアクセスを受け付けるようにする これ #Shiny-Serverの設定 sudo vi /etc/shiny-server/shiny-server.conf Node.js (Shiny-server) #起動 R sudo shiny-server & run_as shiny; nginxのIP server {   listen 3838 yyy.yyy.yyy.yyy; 設定ファイルの中身 2013/12/07   location / {     site_dir /srv/shiny-server;     log_dir /var/log/shiny-server;     directory_index on;   } } 19
  20. 20. サイバー系 その後 u commercial versionだってー!! node.jsの後ろに複数Rプロセス的な 2013/12/07 20
  21. 21. サイバー系 その後のその後 2013/11中旬にProのBetaサイトオープン で、いくらなの? なお、RStudio Server Proは1サーバ あと数週間で価格出るって!! 2013/12/07 $9,995/yearの模様 21
  22. 22. サイバー系 その後のその後のその後(2013/12/04) 価格キター 同時接続10で $9,995/server/year 100で$24,995/server/year 2013/12/07 22
  23. 23. サイバー系 その後のその後のその後(2013/12/04) 認証 スケーリング モニタリング 2013/12/07 23
  24. 24. サイバー系 最後にスケーリングの設定を紹介(Pro) u フリーのは1アプリ1Rプロセスなんだけど、 Proは1アプリ複数Rプロセス使える 1アプリあた り利用するR プロセス数の MAX 1Rプロセスあたり接続する数 1RプロセスのCPU使用率がこ れ(x100)以上になったら、新 規にRプロセス起動するよ 2013/12/07 24

×