ContainDS Dashboards Integration


01 Feb 2021    2 mins read.

The image above is of the Dash Web Trader dashboard. Dashboards like the one above can now be easily shared in QHub OnPrem via Contain DS Dashboards.

Recently, I was able to integrate fantastic open source projects: Quansight’s QHub and ContainDS Dashboards.

What problem does QHub OnPrem solve?

QHub OnPrem allows teams to efficiently collaborate by making it easy to share files, environments, scalable infrastructure, and now dashboards in a seamless and secure manner. Under the hood, Qhub OnPrem is an opinionated open source deployment of JupyterHub with some very useful complementary tools included. Qhub couples environment management, infrastructure monitoring, and shared infrastructure use with ease of deployment. While QHub OnPrem is aimed at on-premise infrastructure, QHub-Cloud is the cloud equivalent, and can be deployed on any of the major cloud providers.

QHub OnPrem Architecture

What problem does ContainDS Dashboards solve?

ContainDS Dashboards is an early-stage, publishing solution for Data Scientists to quickly, easily, and securely share results with decision makers. Like QHub, it’s also an open source project and when we saw ContainDS Dashboards we knew it was a natural fit for QHub. ContainDS currently supports Plotly Dash, Panel, Bokeh, Voila, Streamlit, and R Shiny dashboarding libararies. This allows Data Science Teams to build their apps with whatever tool is most familiar to the Data Scientist or most appropriate for an particular dashboard while maintaining a simple, unified framework for distribution of the various types of dashboards.

QHub OnPrem Architecture

Integration of ContainDS Dashboards into QHub OnPrem

ContainDS looked great, but it only integrated with the most standard JupyterHub deployments such as The Littlest Jupyter or Zero to JupyterHub with Kubernetes which scales out user sessions via local processes or Kubernetes respectively. QHub OnPrem, on the other hand, uses the Slurm Cluster Management software to spin up additional user sessions.

Integrating ContainDS Dashboards into QHub OnPrem involved extending ContainDS Dashboards to support the slurmspawner class in the batchspawner library. Additionally, I took care to ensure that QHub remained easily configurable, so users who didn’t wish to use CDS Dashboards could still use QHub without installing it. With a combination of bash scripting, ansible playbooks, and searching through Jinja Templated HTML, I was able to ensure that CDS Dashboards was fully integrated into QHub OnPrem when users set a simple configuration flag.