Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ

Snowflake上でRを使う: RStudioセットアップとShinyアプリケーションのデプロイ

「Snowpark Container Servicesで解き放つ!データアプリケーションの魔法!」で発表した資料になります。

https://techplay.jp/event/934878

Tatsuya Koreeda

March 01, 2024
Tweet

More Decks by Tatsuya Koreeda

Other Decks in Science

Transcript

  1. Python と R それぞれの強み Python の強み ・ AI システムや Web

    アプリケーション、IoT 機器・ クラウド等と相性が良い ・機械学習・深層学習モデルが構築しやすい R の強み ・ 統計学の理論に基づいた結果を算出しやすい(例︓ 信頼区間、p 値など) ・可視化されるグラフがシンプルで美しい(個⼈的に)
  2. Rstudioをホストする戦略 Rstudio Server Rstudio がLinux上のWebサーバーをベースに動くRstudio。ブラウザからRstudioの利⽤が可能。 今回はRockerプロジェクトの公開しているimageをベースにSPCS上にホストしていきます。 RockerプロジェクトのDockerコンテナ • r-ver︓Rがインストールされたイメージでバージョンごとにタグが振られている(r-ver:latestのDockerfile) •

    rstudio︓r-verの上にRStudioをインストールしたイメージ(rstudio:latestのDockerfile) • tidyverse︓rstudioの上にtidyverseパッケージやdevtoolsパッケージなどをインストールしたイメージ(tidyverse:latestのDockerfile) • verse︓tidyverseの上にTinyTeXなどをインストールしたイメージ(verse:latestのDockerfile) • geospatial︓verseの上に各種Rパッケージをインストールしたイメージ(geospatial:latestのDockerfile)
  3. Spec ・containers. volumeMounts コンテナ内の特定のパスにボリュームをマウ ントする設定です。 ・volumes.source ボリュームのソースとして、Snowflakeのス テージを指定 ・volumes.uid, gid

    ボリュームの所有者のユーザーID, グループ ID。ステージ ボリュームにマウントされた ファイルにアクセスするために必要
  4.  R⾔語のためのWebアプリケーションフレームワーク。Pythonでいう streamlitのような位置づけです。  セットアップ: Rの知識があれば、Shinyアプリケーションを⽐較的簡単に作 成できますが、Streamlitと⽐べると若⼲複雑です。  コーディング: UIとサーバーのロジックを分けて書く必要があり、リアクテ

    ィブプログラミングの概念を理解しておく必要があります。  インタラクティビティ: ⾼度にインタラクティブなウェブアプリケーション を作成でき、カスタムUIコンポーネントを作成するオプションもあります。  カスタマイズ: HTML、CSS、JavaScriptを使⽤して⾼度にカスタマイズ可 能です。  デプロイ: Shiny ServerやShinyApps.ioを通じてアプリケーションを公開で きます。 shinyアプリケーション
  5. shiny と Streamlitの⽐較 Shiny (R⾔語) • ⽤途: インタラクティブなウェブアプリケーションを作成することができ、特に統 計的な分析やグラフィカルな表⽰に優れています。 •

    特徴: UIとサーバーコンポーネントを定義することでアプリケーションを構築しま す。Shinyアプリは、反応性が⾼く、ユーザーの⼊⼒に基づいてリアルタイムで結 果を更新できます。 Streamlit (Python⾔語) • ⽤途: データ分析や機械学習モデルのデモンストレーションに向いており、コード を最⼩限に抑えつつ迅速にプロトタイピングすることが可能です。 • 特徴: スクリプトのようにコードを書くだけで、インタラクティブなウェブアプリ を簡単に作成できます。コンポーネントは⾃動的にUIに変換されます。
  6.  サクッとコンピューティングリソースの変更が可能。CREATE COMPUTEの際に、 「INSTANCE_FAMILY」を変更するだけ  個⼈がクラウド解析環境をさっと⽤意できるところは◎  リソースを必要とする分析環境が欲しいときに便利  snowflake独⾃のOauth認証を使ってユーザー単位でコンテナにアクセスさせられる

     簡単なアプリをホストしたとき、snowflakeユーザーを払い出すだけでログイン認証が作れる  (Python以外にも)いろんな⾔語でアプリケーション開発やデータ操作ができるようになった SPCSの気に⼊っているところ
  7.  顧客向けのアプリで利⽤するにはコストがきつい(0.11クレジット/h [CPU_X64_XS])  snowflakeのエンタープライスエディションの場合、1ヶ⽉コンテナを動かす場合は  0.11 × 24(h)× 31(⽇)×

    4.3 ($) = 351.912 ドル  AWS Fargate で同じくらいのスペックを動かすのに、⼤体121.90ドル  顧客が利⽤するアプリケーションでの利⽤は難しそう  トランザクションを利⽤するならHybridテーブルとのセットが前提になりそう  アプリケーションのworkerに使うには物⾜りない︖やりようはありそう  サービス関数をコンピュートプールの起動無しでサーバレス課⾦にしてほしい  Lambda的なユースケースはストアドプロシージャで代⽤するしかない SPCSの微妙なところ