Shiny Apps, Jupyter Notebooks, APIs und Co.: Lösungen für das Hosting

Vergleich von Shiny Server, shinyapps.io, Posit Connect und ShinyProxy

Das Hosting von Data Science Content, wie beispielsweise Shiny Webapps, Jupyter Notebooks oder APIs, ermöglicht es, leistungsstarke analytische Anwendungen und interaktive Visualisierungen einer breiten Nutzerschaft zugänglich zu machen. Die Frage der Plattform zur Bereitstellung der Applikationen ist von vielen unterschiedlichen Faktoren abhängig. Erfahren Sie mehr darüber, welche Möglichkeiten Ihnen zur Verfügung stehen um Ihre Data-Science-Projekte effizient online bereitstellen zu können und welche Vor- und Nachteile diese bieten.

Shiny Apps, Jupyter Notebooks, APIs und Co.: Lösungen für das Hosting

Vergleich von Shiny Server, shinyapps.io, Posit Connect und ShinyProxy

Das Hosting von Data Science Content, wie beispielsweise Shiny Webapps, Jupyter Notebooks oder APIs, ermöglicht es, leistungsstarke analytische Anwendungen und interaktive Visualisierungen einer breiten Nutzerschaft zugänglich zu machen. Die Frage der Plattform zur Bereitstellung der Applikationen ist von vielen unterschiedlichen Faktoren abhängig. Hier geben wir einen ersten Einblick, welche Möglichkeiten Ihnen zur Verfügung stehen um Ihre Data-Science-Projekte effizient online bereitstellen zu können und welche Vor- und Nachteile diese bieten.

Shiny Server

Für das Hosting der ersten Shiny Apps wird häufig der Shiny Server eingesetzt. Als Open-Source Hosting-Server von Posit mit entsprechender Verbreitung kann hier eine Plattform ohne zusätzliche Lizenzgebühren eingesetzt werden. Allerdings ist im Gegenzug der Funktionsumfang im Vergleich zu anderen Möglichkeiten eingeschränkt. Beispielsweise ist eine User-Authentifizierung ebenso wenig vorgesehen wie das Load Balancing der deployten Applikationen, was zu Performance-Problemen führen kann, sobald viele User in der selben Shiny App arbeiten wollen.

Außerdem bietet der Shiny Server zwar eine einfache und praktikable Plattform für Shiny Apps, unterstützt jedoch keine anderen Formate, wie beispielsweise Jupyter Notebooks oder APIs, die im Unternehmen gegebenenfalls bereits im Einsatz sind.

shinyapps.io

Der direkt von Posit entwickelte Dienst shinyapps.io bietet die Möglichkeit ein Hosting-Kontingent für Shiny-Apps auf Stundenbasis (Zeiten aktiver Nutzung der App) zu mieten, wobei auch das Testen mit einer sehr eingeschränkten, kostenfreien Variante möglich ist. Die IT-Einrichtung und Sicherheit wird hier vom Anbieter gestellt, welcher bei den Bezahlmodellen neben mehr aktiven Stunden auch E-Mail-Support anbietet, welcher zu den üblichen Geschäftszeiten an der US-Ostküste für englischsprachige Anfragen zur Verfügung steht.

shinyapps.io ist nicht Soc2 & GDPR/DSGVO-konform und wird lediglich auf US-Servern gehostet.

Posit Connect

Posit Connect kann als großer Bruder des Shiny Servers verstanden werden. Während der Shiny Server genau die Funktionalität bietet, welche der Name vermuten lässt, bietet Posit Connect eine Reihe Vorteile, welche man gegen den Erwerb der kommerziellen Lizenz erhält. Die Authentifizierung mit den gängigen Methoden wie beispielsweise LDAP oder SAML ist integriert, das Deployment von Applikationen über RStudio und die Posit Workbench wird direkt von diesen unterstützt und bei Problemen steht der Posit-Support zur Verfügung. Auch die Bereitstellung von APIs und weiterer Content Formate, beispielsweise Steamlit und Jupyter, werden unterstützt. Die Möglichkeit der Skalierung, welche besonders wichtig ist bei allen Applikationen die einem größeren Kreis von Anwendern zur Verfügung gestellt werden, sind durch die Verteilung auf verschiedene R- und Python-Prozesse, sowie die Möglichkeiten zum Einsatz in einer Kubernetes-Umgebung gegeben. Als Posit-Partner bieten wir rund um die Posit-Produkte Unterstützung von der Implementierung bis zum deutschsprachigen Support.

 

Eine Cloud-Variante von Posit Connect, vergleichbar mit shinyapps.io, ist derzeit in der Entwicklung.

https://connect.posit.cloud/

https://docs.posit.co/connect-cloud/user/

ShinyProxy

ShinyProxy ist eine Open-Source-Lösung zum Hosten und Skalieren von Shiny Apps in einer Docker-basierten Umgebung. Jede App läuft in einem isolierten Docker-Container, was Konflikte vermeidet und mehrere Benutzerinstanzen parallel ermöglicht. Dabei lässt sich die Plattform in Kubernetes- oder Docker-Swarm-Umgebungen integrieren, was sie ideal für skalierbare Anwendungen macht.

Ein wesentlicher Vorteil von ShinyProxy ist, dass es die oft komplexe Einrichtung eines Auth-Proxys übernimmt. Bei vielen Hosting-Optionen ist Authentifizierung oft nur in kostenpflichtigen Plänen enthalten oder muss aufwändig über einen Reverse-Proxy nachgebaut werden. ShinyProxy bietet native Unterstützung für verschiedene Authentifizierungsmethoden wie z. B. LDAP oder OAuth2.

Allerdings erfordert die Einrichtung und Wartung einer ShinyProxy-Instanz technisches Know-how, insbesondere im Umgang mit Docker. Für unerfahrene ShinyApp-Entwickler kann außerdem der Lernaufwand erheblich sein, eine Anwendung so zu schreiben, dass sie in einem Docker-Container lauffähig ist. Zudem kann die initiale Konfiguration zeitaufwändig sein und die Abhängigkeit von Docker erfordert möglicherweise Anpassungen der bestehenden Infrastruktur. Des Weiteren muss auch ein Reverse-Proxy für die SSL-Terminierung separat eingerichtet werden. Dadurch können die Betriebskosten steigen, wenn zusätzliche Ressourcen für das Hosting und die Verwaltung der Container benötigt werden.

Weitere Lösungen

Jede Shiny App, jedes Jupyter Notebook, jede API und beinahe jeder weitere Data-Driven-Content kann mit der mitgelieferten Runtime über die Kommandozeile gestartet werden und jedem zur Verfügung gestellt werden. Dabei ist allerdings zu Bedenken, dass man sich um alle weiteren Features abseits des eigentlichen Hostings, wie zum Beispiel Load-Balancing, User-Authentifizierung und Security, selbst kümmern muss, was entsprechende Kenntnisse voraussetzt. Das kann beispielsweise über einen Reverse Proxy und Containerisierung, eventuell im Zusammenspiel mit einem Kubernetes-Cluster, geschehen. Auch lassen sich andere Data Science Lösungen, wie zum Beispiel JupyterHub, als Reverse- und Authproxy für Shiny-Apps nutzen.
Durch die verschiedenen Komponenten ist der Implementierungs- und anschließende Wartungsaufwand der Umgebung hier nicht zu unterschätzen.  Das Deployment einer Applikation in eine solche Umgebung ist ebenfalls wesentlich aufwändiger, als es beispielsweise beim Posit Connect oder Shiny Server der Fall ist.

Alternativ, wenn Sie bereits in der Cloud unterwegs sind, können Sie hier stattdessen auf die Features der Cloudanbieter zur Userverwaltung und Skalierung zurückgreifen und sich einigen Aufwand sparen – wie beispielsweise bei AWS ECS oder Azure WebApps.

 

Sehr gerne finden wir gemeinsam mit Ihnen die richtige Hosting-Lösung und unterstützen Sie bei der Implementierung und dem Support.

 

Autoren

Dr. Nico Frieß | Data Scientist

Matthias Gerecht | Data Engineer

Alexander Kinz | IT-System Engineer