đź“” Dash Enterprise Fieldnotes #2 - App Manager

We kicked off the Dash Enterprise Fieldnotes series with Why Dash Enterprise? and this is the second part.
The next essay in the series is on the motivation and people behind Dash Enterprise Design Kit.

Dash Enterprise is the heart and soul of our work at Plotly and my recommended way forward with Dash & Python at any mid to large-sized company. Check if your company has already licensed Dash Enterprise or reach out to me to get started.

Build in days. Deploy in minutes. Hyperscale in seconds.

This is the cycle that the first feature of Dash Enterprise, App Manager, was designed to unlock. Since 2018, App Manager has has enabled rapid Dash app deployment for 10% of the Fortune 500.

App Manager gets a Dash app from your laptop into the hands of end users with a single command. After you’ve deployed your Dash app, updates can be deployed instantly with zero downtime. This deployment bedrock unlocks rapid prototyping: Deploy your Dash apps early and often for tight feedback loops with the business end users. Because App Manager makes deployments self-serve, you never need anyone to help you get your Dash app from your laptop to the Dash Enterprise server. App Manager unlocks All You Can Eat Deployment for data scientists.

It’s so rewarding to create something new, ship it, and see a teammate or customer delight in using it. I do this all the time internally at our company (Plotly). I never touch the AWS console or ask dev ops for help with deployment. I can deploy simple Dash apps like a graph that aggregates customer support tickets. I can also deploy complex Dash apps for customers when they engage our professional services team, such as Python-generated financial reports, or legacy Excel VBA models migrated to Python.

The Dash Enterprise App Manager sits in between deployment and the HPC services that are essential to a production-grade Dash app:

“IT Stuff”

When I worked as a data scientist, I was never great at the IT stuff. it really should have been as simple as a single command. Instead, I did a lot of copy/paste, scp, blog post googling, and banging around in the AWS console. All to present something like a deployed Jupyter notebook.

With App Manager, all of the “IT stuff” is boiled down to a single git push command. One git push command is all it takes to send your Dash app from your laptop to the Dash Enterprise server. Many data scientists aren’t familiar with git or find it scary, but App Manager makes it simple. All you need to memorize is 3 commands to upload your Dash app to Dash Enterprise: git add ., git commit -m 'summary of changes', and git push. Simply navigate to your Dash app project folder in your terminal and run these 3 git commands - then your Dash app is on its way to Dash Enterprise in your corporate cloud.

App Portal

Once your Dash app is deployed to Dash Enterprise, it’s discoverable by end users through the App Portal. You can demo the Dash Enterprise App Portal on our open-source Dash app gallery. This gallery runs the latest Dash Enterprise version on Azure Kubernetes Service:

Secret Manager

Your Dash applications likely connect to several data pipelines, which require their own authentication passwords and keys to connect. You don’t want to hardcode this sensitive information in your Dash app code files, so you use App Manager’s Secret Manager to centrally store these secrets and obfuscate them in your Dash app code. Secret Manager is an essential App Manager capability for productionizing Python analytics code as a Dash application.

Security

Once you’ve deployed your Dash app, you may only want a subset of end users at your business to have access. For example, you may be developing Dash apps for C-level executives that are exploring Python models run on sensitive data.

Just like deployment, App Manager makes authentication easy. Once your Dash app is deployed, there is a simple point-&-click interface for granting access to select users. This interface ties in with LDAP, SAML, AD, and other common authentication standards. Here’s a partial look at App Manager’s authentication UI:

Rapid Prototyping

Agency and autonomy are key to the creative process - you should be able to create, deploy, and share a production app or prototype without getting IT or dev ops involved. Your brain should be focused on the Dash app concept realization, not the surrounding cruft of deployment and security.

Rapid prototyping (or “agile development”) is not just about speed and harnessing creativity - it’s about derisking project success. An analytic app that is deployed early and updated iteratively in response to end user feedback is more likely to succeed than a grand reveal at the end of the project term with no feedback along the way. If you can’t deploy Dash app updates instantly, you won’t be able to keep pace with end user feedback. Without infrastructure like App Manager, you won’t be able to roll out advanced analytic initiatives in an agile fashion and they will be more likely to fail.

Deployment Boilerplate

There’s a huge boilerplate cost to productionizing a new Dash app: SSL certificate, domain name, Docker configuration, VM procurement, LDAP tie-in, etc. It can take IT departments weeks, if not months, to procure these details for your Dash app deployments. With Dash Enterprise, it was really important to us that the IT department do this once and only once - not every time that you need to deploy or modify a Dash app. Dash Enterprise uses path-based routing, so that you only need to configure these parameters a single time, then all deployed Dash apps will have sub URLs.

Over 7 years, we’ve seen all the ways that customers struggle with analytic app deployments within large orgs. It’s freaking complex. Here are a few issues we’ve encountered with home-grown deployments:

  • LDAP errors with 100s to 1000s of LDAP groups
  • Exposing ports when running analytic apps in Docker containers
  • Downtime while deploying app updates
  • Deploying in airgapped environments (zero outside Internet connection)
  • DNS issues
  • Procuring SSL certs
  • Horizontal scaling
  • Running asynchronous HPC Python jobs

Ouch.

It was so important to us that everything with Dash Enterprise be vertically integrated: Auth, logs, monitoring, horizontal scaling, data pipelines, etc. It should all just work. App Manager is Dash Enterprise’s first and oldest feature, designed to tie together all of these details and make them “just work.” By removing all of the cruft around deployment and security for data scientists, App Manager made Dash Enterprise the first platform for self-service analytic app deployment and scaling.

Dash Enterprise installs on every major cloud. We’ve written guides for preparing your cloud environment for Dash Enterprise:

In the next essay in this series, I’ll dive into the history behind Design Kit, the 2nd feature that we developed for Dash Enterprise. Design Kit was the first low-code UX feature that we developed for the Analytic App Stack (see below).

The Dash Enterprise Fieldnotes Series:

  1. Why Dash Enterprise?
  2. App Manager (you are here)
  3. Dash Design Kit
  4. Job Queues

8 Likes

2 posts were split to a new topic: Heroku boilerplate deployment