Vývoj a nasadenie Shiny aplikácií v jazyku R 150 150 cleandata

Vývoj a nasadenie Shiny aplikácií v jazyku R

Shiny aplikácie umožňujú interaktívnu analýzu dát a vizualizácie v reálnom čase. Shiny, ako súčasť R ekosystému, ponúka flexibilitu a široké možnosti prispôsobenia, čo ho robí atraktívnou alternatívou k tradičným BI nástrojom. V článku jej výhody a nevýhody voči klasickým BI riešeniam, ako sú Power BI alebo Tableau. Zároveň sa pozriem na výzvy spojené s nasadením a údržbou takýchto aplikácií v produkčnom prostredí aj ukážkou reálnej aplikácie.

shiny_app

Úvod

Analyzovanie dát a vytváranie predikčných modelov sú dôležitými krokmi v rámci dátovej analýzy a data science workflow-u. Avšak, tento proces sa nekončí len analýzou samotnou. Konečným krokom je komunikovanie výsledkov. Či už ide o prezentovanie kľúčových zistení alebo o výstup v podobe dátového produktu, je nevyhnutné tieto výsledky efektívne odkomunikovať koncovým užívateľom a stakeholderom.

Existuje mnoho nástrojov, ktoré môžu byť použité na túto komunikáciu – od základných tabuliek a grafov v Exceli, cez prezentácie v PowerPointe, až po použitie pokročilejších dashboardových nástrojov ako PowerBI a Tableau. Pre špecifické potreby a väčšiu flexibilitu však môže byť nevyhnutné vytvoriť vlastné webové aplikácie, ktoré umožnia interaktívnu prácu s dátami. Jedným z nástrojov, ktorý umožňuje vytvárať takéto custom webové aplikácie, je Shiny v R (a aktuálne už aj Shiny v Pythone).

Čo je R Shiny

Shiny je framework od spoločnosti Posit (pôvodne R Studio), ktorý umožňuje vytvárať interaktívne webové aplikácie priamo v R. Je to nástroj pre R programátorov, ktorí chcú prezentovať svoje analýzy a vizualizácie interaktívnym spôsobom bez potreby vedieť HTML, CSS alebo JavaScript (hoci znalosť týchto technológií rozširuje flexibilitu, ktorú Shiny ponúka).

Shiny vs PowerBI (a iné nástroje)

Pomenujme najskôr “slona v miestnosti”. Je Shiny ten najlepší nástroj? Nie, nie je. Pre väčšinu prípadov si bohato vystačíte s Excelom a PowerBI (alebo Tableau či inými alternatívami, ale keďže mám bohaté skúsenosti s PowerBI, budem ho uvádzať ako príklad). Tieto nástroje sú nenáročné na používanie, ich „learning curve“ je ľahko zvládnuteľná na bežnej používateľskej úrovni a väčšinou sa jednoducho integrujú do spoločnosti. Poskytujú tiež dostatočnú flexibilitu, najmä MS produkty vďaka Power Query a jazyku DAX.

Prečo teda použiť Shiny? Odpoveď je jednoduchá: kedykoľvek vytvárate pokročilejšiu analytiku v R, bude jednoduchšie ju dať do produkcie natívnym nástrojom, ktorý nijakým spôsobom neobmedzuje funkcionalitu. Áno, PowerBI umožňuje použitie R a Pythonu, ale existujú obmedzenia na počet záznamov, ktoré môžete spracovať (150 000 riadkov je naozaj málo), podpora knižníc je obmedzená a vizualizácie sú statické obrázky.

Ďalším dôvodom na použitie Shiny môžu byť špecifické požiadavky na dizajn. Vďaka HTML, CSS a JavaScriptu máte prakticky neobmedzené možnosti. Rovnako máte viacero možností, kde si aplikáciu budete hostovať, čo zvyšuje flexibilitu pri nasadení v rôznych prostrediach.

Okrem toho, Shiny v kombinácii s frameworkami ako Golem alebo Rhino, poskytuje silné nástroje pre Continuous Integration/Continuous Deployment (CI/CD) vďaka integrácii s Gitom. Toto umožňuje automatizovaný a kontrolovaný proces vývoja, testovania a nasadzovania aplikácií, čo je obzvlášť užitočné v tímoch alebo pri práci na väčších projektoch. Takýto prístup zvyšuje kvalitu kódu, zrýchľuje vývoj a umožňuje rýchlejšie reagovať na zmeny a požiadavky.

Pre zosumarizovanie:

Výhody Shiny:

  • Flexibilita: Umožňuje používať celú silu R, vrátane knižníc a vlastných skriptov.
  • Open-source: Bezplatný a komunitou podporovaný nástroj.
  • Jednoduché rozšírenie: Možnosť integrácie s ďalšími nástrojmi a technológiami.
  • Výkon: Dokáže spracovať veľké množstvo dát.

Nevýhody Shiny:

  • Optimalizácia: Je nutná optimalizácia skriptov a modulov, aby užívateľ zbytočne nečakal pri dlho bežiacich výpočtoch.
  • Náročnosť: Vyžaduje znalosti R a programovania.

Výhody tradičných nástrojov:

  • Jednoduchosť použitia: Intuitívne rozhranie vhodné pre neprogramátorov.
  • Výkon: Optimalizované pre rýchle spracovanie veľkých dát.

Nevýhody tradičných nástrojov:

  • Náklady: Licenčné poplatky môžu byť vysoké.
  • Obmedzená flexibilita: Menej možností pre pokročilé analýzy a customizáciu oproti Shiny.
  • Výkon: Aj keď je PowerBI optimalizovaný pre veľké dáta, pri nesprávnej práci s ETL v Power Query a zle napísaných DAX funkciách môže výkon výrazne klesnúť, čo môže spôsobiť pomalé načítavanie a spracovanie dát.

“Vanilla” Shiny vs špecializované frameworky

Pri vývoji aplikácií v Shiny máte na výber medzi tzv. “vanilla” Shiny a špecializovanými frameworkami, ako sú Golem a Rhino. Každá možnosť má svoje výhody a nevýhody, ktoré by ste mali zvážiť v závislosti od vašich projektových potrieb.

“Vanilla” Shiny

“Vanilla” Shiny je základná verzia Shiny frameworku, ktorú väčšina používateľov začína používať. Je rýchly na nasadenie a umožňuje rýchle vytváranie prototypov a jednoduchých aplikácií. Táto verzia je ideálna pre menšie projekty alebo pre rýchle vytvorenie funkčného prototypu ako proof of concept.

Výhody:

  • Jednoduchosť a rýchlosť nasadenia.
  • Skvelé pre začínajúcich používateľov alebo menšie projekty.
  • Žiadna dodatočná záťaž z používania frameworkov, priamočiary kód.

Nevýhody:

  • Menej vhodné pre veľké a komplexné aplikácie.
  • Môže byť ťažké udržať čistý a organizovaný kód pri rozrastaní aplikácie.
  • Nedostatok robustných nástrojov na správu veľkých projektov, ako sú moduly, testovanie a CI/CD.

Golem

Golem je špecializovaný framework, navrhnutý pre vývoj robustných a produkčných Shiny aplikácií. Poskytuje silnú štruktúru pre váš projekt a podporuje modulárny prístup k vývoju, čo umožňuje lepšiu organizáciu a škálovateľnosť aplikácie. Výsledný projekt je zabalený ako R knižnica, čo prináša niekoľko výhod, vrátane jednoduchšej správy závislostí, opätovnej použiteľnosti kódu a jednoduchého nasadzovania. Benefitom je tiež kniha Engineering Production-Grade Shiny Apps od autorov Golemu.

Výhody:

  • Robustná štruktúra projektu, ktorá podporuje modularizáciu kódu.
  • Výsledok vo forme R knižnice, čo zjednodušuje správu a opätovné použitie kódu.
  • Umožňuje lepšiu správu veľkých a komplexných aplikácií.
  • Obsahuje nástroje na testovanie, nasadzovanie a CI/CD procesy.

Nevýhody:

  • Strmšia “learning curve” v porovnaní s “vanilla” Shiny.
  • Vyžaduje viac počiatočného nastavenia a organizácie.

Rhino

Rhino je moderný framework od spoločnosti Appsilon pre Shiny aplikácie, zameraný na väčšie projekty a kolaboráciu v tíme. Je postavený na princípoch moderného vývoja softvéru, vrátane automatizovaného testovania a CI/CD, čo ho robí ideálnym pre vývoj v prostrediach, kde sú požiadavky na kvalitu a škálovateľnosť vysoké. Rhino je navyše aktívne vo vývoji a pripravuje sa aj verzia pre Python, čo prináša sľubné rozšírenie možností pre používateľov preferujúcich Python.

Výhody:

  • Integrácia s modernými vývojovými nástrojmi a postupmi.
  • Flexibilná štruktúra, ktorá umožňuje pokročilú customizáciu a integráciu s front-end technológiami.
  • Silná podpora pre tímovú prácu a verziovanie kódu.
  • Aktívny vývoj, vrátane pripravovanej podpory pre Python.

Nevýhody:

  • Vyššia komplexnosť a náročnosť na vývoj v porovnaní s “vanilla” Shiny.
  • Vyžaduje znalosť moderných vývojárskych nástrojov a postupov.

Možnosti deploymentu

Po vytvorení Shiny aplikácie prichádza na rad jej nasadenie (deployment), aby bola dostupná pre koncových užívateľov. Existuje niekoľko možností, ako Shiny aplikáciu nasadiť, pričom každá z nich má svoje výhody a nevýhody.

Shinyapps.io

Najjednoduchší spôsob nasadenia je prostredníctvom shinyapps.io, ktorý je možný na pár kliknutí priamo cez RStudio IDE. Tento hostingový servis od Posit umožňuje rýchle a jednoduché nasadenie aplikácie.

Výhody:

  • Jednoduchosť nasadenia: Nasadenie aplikácie je možné vykonať na pár kliknutí priamo z RStudio.
  • Bez nutnosti infraštruktúry: Nemusíte sa starať o servery, firewall ani hardvér – všetko je spravované v cloude.
  • Free tier: Umožňuje hosťovať až 5 aplikácií zdarma, čo je výhodné pre menšie projekty alebo testovanie.

Nevýhody:

  • Výkon: Vo free verzii môže byť výkon aplikácie pomalší, čo sa prejavuje najmä pri vyššej záťaži alebo zložitých aplikáciách.
  • Zabezpečenie: Shinyapps.io ponúka základné možnosti autentifikácie, ale pokročilé zabezpečenie a kontrolu prístupu je obmedzené.
  • Zdieľaná platforma: Aplikácie bežia na zdieľanej infraštruktúre, čo môže mať vplyv na spoľahlivosť a výkon v prípade veľkého počtu používateľov.

Posit Connect

Posit Connect je profesionálna platforma pre nasadenie Shiny aplikácií a iných dátových produktov (napr. R Markdown, Plumber API, Python aplikácie), ktorá je navrhnutá pre podnikové prostredia. Poskytuje pokročilé možnosti nasadzovania, správu prístupov a monitorovanie aplikácií.

Výhody:

  • Široká podpora obsahu: Podporuje rôzne typy obsahu vrátane Shiny aplikácií, R Markdown reportov, Python skriptov a viac.
  • Bezpečnosť: Umožňuje pokročilé možnosti autentifikácie a kontroly prístupu, čím poskytuje lepšie zabezpečenie dát.
  • Škálovateľnosť: Podpora pre škálovanie aplikácií a správu veľkého počtu používateľov a prístupových práv.
  • Zjednodušené nasadenie: Možnosť nasadenia aplikácií cez push-button alebo pomocou Git.
  • Monitoring a správa: Poskytuje nástroje na sledovanie výkonu aplikácií a správu servera za účelom optimalizácie prevádzky.

Nevýhody:

  • Náklady: Posit Connect je platená služba, čo môže byť finančne náročné pre menšie tímy alebo jednotlivcov.
  • Komplexnosť: Vyžaduje infraštruktúru a určité technické znalosti pre správu a údržbu.

Docker + Cloud služby (GCP, AWS, Azure)

Pre pokročilejších používateľov je možné nasadiť Shiny aplikáciu pomocou Dockeru a cloudových služieb ako Google Cloud Platform (GCP), Amazon Web Services (AWS) alebo Microsoft Azure.

Výhody:

  • Flexibilita: Možnosť nasadiť aplikáciu na rôzne cloudové platformy podľa preferencií.
  • Škálovateľnosť: Vysoká škálovateľnosť a možnosť spravovať zdroje podľa aktuálnych potrieb.
  • Kontrola: Úplná kontrola nad infraštruktúrou a konfiguráciou prostredia.

Nevýhody:

  • Komplexnosť: Vyžaduje pokročilé technické znalosti na konfiguráciu Dockeru a cloudových služieb.
  • Náklady: Prevádzka v cloude môže byť nákladná, najmä pri nesprávnej konfigurácii zdrojov.

Docker + Lokálny RStudio Server

Nasadenie Shiny aplikácie pomocou Dockeru a lokálneho RStudio Servera je ďalšou možnosťou pre tímy, ktoré chcú mať úplnú kontrolu nad svojou infraštruktúrou.

Výhody:

  • Kontrola: Úplná kontrola nad prostredím a konfiguráciou servera.
  • Izolácia: Docker poskytuje izolované prostredie pre aplikácie, čo zlepšuje bezpečnosť a stabilitu.
  • Nákladová efektívnosť: Ak už máte existujúcu infraštruktúru, náklady môžu byť nižšie v porovnaní s cloudovými službami.

Nevýhody:

  • Komplexnosť: Vyžaduje správu a údržbu vlastnej infraštruktúry, čo môže byť náročné na čas, financie a technické zdroje.
  • Obmedzená škálovateľnosť: Lokálna infraštruktúra môže byť limitovaná dostupnými zdrojmi.

Príkladová Shiny Aplikácia

Táto príkladová Shiny aplikácia bola vytvorená pomocou frameworku Rhino a predstavuje posledný krok v rámci projektu, ktorý začal získavaním dát pomocou web scrapingu, spracovaním dát, a následne tvorbou predikčného modelu. Celý projekt bol zdokumentovaný v sérii článkov:

Aplikácia umožňuje používateľom preskúmať a vizualizovať tieto dáta. Ako hlavný benefit, ktorý demonštruje výhody použitia Shiny (okrem custom dizajnu), je integrácia predikčného modelu. Používatelia môžu zadať parametre bytu a aplikácia im poskytne odhadovanú cenu, čo je praktický príklad využitia pokročilej analytiky a interaktívnych možností Shiny.

Aplikáciu si môžete vyskúšať na shinyapps.io alebo ako kontajnerizovanú aplikáciu na Google Cloud Platform (GCP).

  • Ako vytvoriť API v R pomocou knižnice Plumber 150 150 cleandata Ako vytvoriť API v R pomocou knižnice Plumber
  • Ako zrýchliť XGBoost v R: Benchmark trénovania modelu na CPU vs. GPU 150 150 cleandata Ako zrýchliť XGBoost v R: Benchmark trénovania modelu na CPU vs. GPU
  • EDA časových radov: Ako odhaliť vzory skryté v čase 150 150 cleandata EDA časových radov: Ako odhaliť vzory skryté v čase

Leave a Reply

Your email address will not be published.