Jupyter notebooks have become the de-facto standard development tool for not only programmers and data scientists, but also non-programmers like business analysts, salespeople, and traders. With the emergence of new tools and utilities for turning notebooks into parameterized reports or live web apps, the age of notebooks as production-worthy assets is upon us.
In this talk, we will attempt to assuage some of the fears that the idea of "production ntoebooks" causes - that notebooks are untestable, unlintable, unsuitable assets for any production workflow, and that they have utility as a scratchpad but real applications should be left to proper module-based code. We will focus in particular on the use case of notebooks for production reports, and in this talk for the sake of time we will limit ourselves to what we call "dynamic reports " ( interactive web applications) rather than "static reports " ( PDFs, static HTML, and emails ). We will also provide a relatively complete stack of tools and utilities, based on those used in our real-world implementation which currently serves over 1,000 users in engineering, data science, and business roles.
To start, we will address the elephant in the room - "Notebook testing". We have developed a library for performing unit tests called nbcelltests, which we will present, demo, compare to alternatives, and describe how we utilize it in production. Next, we will discuss the Voilá app development process, and the functionality we build around it to both ensure production stability, as well as allow for the creation of robust, good looking applications. We will then discuss the issues we've run into while building out this framework, both technical and otherwise, and juxtapose those issues with the benefits we've seen and the value such a framework can provide to technologists and business users alike. Finally, we will explore where we go from here, and how we look to embed Voilá-developed notebook based applications into larger non-jupyter web applications.