What is ShinyProxy?
ShinyProxy is your favourite way to deploy data science apps in an enterprise context (Shiny, Dash, Streamlit, Jupyter notebooks, IDEs and more). It has built-in functionality for all standard authentication/authorization technologies, supports high availability and can scale to internet scale (i.e. no limits on concurrent usage of your data science apps).
Why use it?
- you want to seamlessly deploy data science apps that were developed locally using Shiny, Dash streamlit etc. through a streamlined process
- you need enterprise features but want to stay with true open source
- you trust the JVM on the server side for managing the lifecycle of your apps securely
- you want to get all benefits offered by container-based technology (Docker, Kubernetes or Docker Swarm)
JVM Server Side
ShinyProxy uses time-tested and mature enterprise JVM technology bundled nicely as a Spring boot web application.
When deploying a data science application with ShinyProxy, the application is simply bundled and installed into a Docker image. Every time a user runs an application, a container spins up and serves the application. This has numerous advantages:
- fully isolated ‘workspace’ per session
- plug and play different docker images (e.g. with different R versions or different Shiny versions for your Shiny apps)
- full control on memory and cpu usage via the Docker, Docker Swarm or Kubernetes API
- monitoring and debugging using standard tooling for your container orchestration technology
- easily confine your application using native container technologies: restrict network, filesystem, process access etc.
- provide dedicated memory and cpu resources for each user, guarantees that computations of users do not interfere with each other (works even with single-threaded applications like R)
- archive every version of an application in order to achieve reproducibility
- use existing tools for security scanning the images
Why call it ShinyProxy?
ShinyProxy started as an open source enterprise solution for hosting Shiny applications. In the meantime it has become a generic solution for hosting many types of data science applications (see demos) and, as a matter of fact, you can host any web application you can embed in a Docker image.