Shiny for Python – Alternative für Python-Dashboards?
Wie verhält sich Shiny for Python gegenüber beliebten und erprobten Python-Frameworks wie Dash und Streamlit? Welche Mehrwerte bietet Shiny for Python den Python-Entwicklern und -Entwicklerinnen?
Shiny for Python – Alternative für Python-Dashboards?
Wie verhält sich Shiny for Python gegenüber beliebten und erprobten Python-Frameworks wie Dash und Streamlit? Welche Mehrwerte bietet Shiny for Python den Python-Entwicklern und -Entwicklerinnen?
Mit Shiny-Apps lassen sich verschiedenste Analysen in intuitive Anwendungen und leicht konsumierbare, interaktive Dashboards gießen. Ursprünglich entwickelt, um Ideen schnell in Prototypen und MVPs umzusetzen, hat sich Shiny zu einem der führenden Frameworks im Bereich Forschung und Entwicklung, aber auch für Unternehmen, entwickelt. Mit Shiny als Framework lassen sich Web-Anwendungen direkt aus R, und nun auch mit Python, heraus umsetzen, die sich schnell anpassen und aktualisieren lassen sowie dynamisch auf Ereignisse reagieren – auch ohne Kennntnisse in PHP, HTML, CSS oder JQuery.
Shiny for Python bietet Python-Entwicklern und -Entwicklerinnen neue Möglichkeiten ihre Python-Skripte zu nutzen, um interaktive Anwendungen zu erstellen. Dabei bietet Shiny for Python für die Umsetzung ähnliche Funktionalitäten wie das etablierte R-Shiny-Framework.
Shiny vs Streamlit vs Dash
Betrachten wir zunächst zwei wichtige Faktoren: Skalierung und Reaktionsfähigkeit. Dabei geht es weniger darum, welches Framework besser als die anderen sein könnte als viel mehr, welche Möglichkeiten sich durch Shiny for Python für Entwickler und Entwicklerinnen ergeben und warum es sich lohnt, sich damit zu beschäftigen.
Dash
Mit Dash lassen sich umfangreiche Python-Anwendungen sehr gut entwickeln und in produktive Services transformieren. Dash wurde entwickelt, um die Bereitstellung dieser Anwendungen zu vereinfachen. Als Framework lassen sich in Dash Python-Anwendungen entwickeln. Dabei können mehrere Prozesse oder Server verschiedene Teile der Anwendung rendern, was eine horizontale Skalierung während des Deployments ermöglicht.
Als eines der wichtigsten Prinzipen erlaubt es Dash nicht, dass Callback-Funktionen Variablen außerhalb ihres entsprechenden Anwendungsbereiches ändern dürfen. Daher setzt Dash auf stateless Callbacks: Anstatt sich auf globale Variablen oder gespeicherte Berechnungen zu verlassen, müssen die Komponenten in sich geschlossen und unabhängig sein. Dadurch werden die Anwendungen zwar robust und effizient, dies kann jedoch auch zu Lasten der Skalierung gehen.
Mittlerweile unterstützen jedoch moderne Container-Orchestrierungsysteme wie Kubernetes auch problemlos das Deployment von zustandsabhängigen (stateful) Anwendungen wie Shiny-Apps, wodurch die Bereitstellung ähnlich effizient und zuverlässig ist.
Streamlit
Mit Streamlit lassen sich einfach Python-Prototypen aus Python-Skripten erstellen. Ein großer Unterschied zu Shiny ist, dass bei Änderungen in der Anwendung, z.B. bei Visualisierungen, das komplette Skript erneut ausgeführt wird. Gerade im Hinblick auf die Skalierung ist dieses Vorgehen unpraktikabel. Zwar lässt sich dies in Streamlit durch Caching lösen, aber dabei muss auf verschiedene Dinge geachtet werden:
- Durch das Caching wird zusätzliche Server-Leistung beansprucht, im schlimmsten Fall führt dies zum Absturz der Anwendung.
- Je nach Datenbasis müssen bestimmte Caching-Strategien genutzt werden.
- Um Datenabfragen zu beschleunigen, können diese zwischengespeichert werden. Wird jedoch die Datenbank aktualisiert muss sichergegangen werden, dass nicht veraltetet Werte zurückgegeben werden.
Bezogen auf die Skalierung bedeutet dies für Streamlit-Anwendungen bei steigender Komplexität und Umfang einen erhöhten Pflegeaufwand und damit eine höhere Fehleranfälligkeit.
Shiny for Python
Mit Shiny for Python lassen sich, ähnlich wie Streamlit, schnell Prototypen von Anwendungen entwickeln. Gleichzeitig bietet es, ähnlich wie Dash, eine robuste Skalierung der entwickelten Apps. Shiny for Python adressiert vor allem die zwei angesprochenen Faktoren von Streamlit und Dash:
- Im Gegensatz zu Dash ist es in Shiny for Python nicht nötig, z.B. bei Änderungen den Datensatz per Callback-Funktion neu einzulesen. Auch lassen UI-Komponenten einfacher wiederverwenden.
- Im Gegensatz zu Streamlit, liefert das Posit-Ökosystem (ehemals RStudio) passenden Produkte, um Shiny-Anwendung leicht zu skalieren, ohne aufwändige Caching-Prozesse manuell zu pflegen.
Für Python-Entwicklern und -Entwicklerinnen besonders interessant: Bereits bekannte Python-Pakete wie Pandas, NumPy, scikit-learn, Seaborn, Plotnine, Polars uvm. lassen sich auch in Shiny for Python nutzen – es ist sogar möglich Jupyter-Widgets in Shiny-Anwendungen zu verwenden.
Ein weiterer Vorteil ergibt sich in der Möglichkeit Shiny for Python – Anwendungen leicht anderen zur Verfügung zu stellen und so ein breites Rollout umzusetzen. Auch das Rechte- und Rollenmanagement der jeweiligen Apps lässt sich mit Shiny bzw. dem Posit-Ökosystem umsetzen. Dabei können die einzelnen Anwendungen beispielsweise in der Cloud (shinyapps.io) oder per Shinylive deployt werden.
R Shiny vs Shiny for Python
Wie der Name vermuten lässt, gilt vieles, was für R Shiny gilt, auch für Shiny for Python. Etwas anders verhält sich bspw. die Server-Logik bzw. den Einsatz von Serverless Shinylive. Hier findet die Ausführung der Shiny-App nicht auf einem separaten Web-Server statt, der Python ausführt, sondern die komplette Ausführung geschieht im Browser des Client-Systems. Auch haben sich die Namen verschiedener Funktionen von Shiny for Python gegenüber R Shiny geändert. Diese und weitere Unterschiede betrachten wir in einem weiteren Beitrag etwas genauer.
Shiny for Python – wie anfangen?
Damit Python-Entwickler und -Entwicklerinnen der schnelle Umstieg bzw. Einstieg in Shiny for Python gelingt, liefert unser Partner Posit PBC viele praktische Beispiele und eine verständliche Dokumentation.
Bei Fragen zur Praxis und wie Sie bereits bestehende Dash- bzw. Streamlit-Anwendungen oder existierende Python-Skripte in Shiny for Python nutzbar machen, stehen Ihnen unsere Data-Science-Experten und Expertinnen zur Verfügung.
Fazit
Shiny for Python bietet der Python-Entwicklung ein starkes Framework für die App-Entwicklung. Dabei kombiniert das Framework die vielseitigen Einsatzmöglichkeiten von Python mit der Einfachheit der Umsetzung interaktiver Shiny-Anwendungen. Die Entwicklung intuitiver und leicht konsumierbarer Dashboards, das Updaten dieser in Echtzeit und der Möglichkeit diese Anwendungen mit anderen zu teilen, sind nur eine Auswahl der Vorteile, die sich durch Shiny for Python ergeben.
Entwickler und Entwicklerinnen werden in Zukunft von einer weiteren starken und innovativen Community profitieren und dem zuvor angesprochenem digitalen Posit-Ökosystem. Zudem kann die Kombination der Stärken von R und Python Innovationen beflügeln.
Zusätzlich wächst das zusammen, was zusammengehört: Data-Science-Teams können nun gemeinsam in R und Python noch besser auf ein gemeinsames Ziel hinarbeiten, ohne durch Restriktionen bei der Verwendung unterschiedlicher Frameworks und Programmiersprachen eingeschränkt zu sein.
Erzählen Sie Ihre Data Story – mit Shiny
Konzeption, Entwicklung, Deployment und Betrieb: Wir sind Ihr Ansprechpartner, wenn es um das Thema Shiny for Python geht.