6  From Research to Production

Your results look great, the paper is written, the conference talk is over—now you’re done, right?! Well, in academia you might be, but let’s have a look at some concepts and tools that are common in industry that could take your code to the next level. Maybe they might even inspire you to transform your code into a little app that can be deployed and could serve as an excellent reference when you apply for your next job?

Components of Software Products

Up to now, your code probably consisted of a script or some notebooks to create your analysis results and a collection of reusable helper functions in your personal library modules. As a next step, we’ll explore how your code can be made more accessible to other users by running it as a standalone software with a graphical user interface that users can interact with. Furthermore, we’ll explore other data sources beyond reading your data from a CSV or Excel file from your computer.

Graphical User Interface (GUI)

An important feature of software is that users can interact with it. And since we’re well past the 1980s, users expect to do this via a graphical user interface (GUI), i.e., by clicking buttons, not by running your program in the command line and supplying text inputs.

We distinguish between two types of software programs:

  1. Stand-alone desktop or mobile application that a user downloads and installs on their machine (either their personal computer or smartphone).
  2. Web-based programs, like software-as-a-service (SaaS) applications, that run in your web browser (e.g., Google Docs). Since internet access is now almost ubiquitous, these are becoming more and more popular.

Especially when talking about web apps, the GUI is often referred to as the frontend, in contrast to the backend, which refers to the service (API) running in the background, providing functionality related to data storage and other business logic. Even if you are using what looks like a stand-alone desktop client, often these programs still communicate with a backend server over the internet, e.g., to save your work in the cloud and thereby also enable collaboration with others.

Since research use cases are mostly about making our results accessible to others, e.g., by transforming a static report into an interactive dashboard where users can explore the data themselves, you’ll probably want to start with a web-based app.

Many books and tutorials were written on the topic of building user-friendly software applications and a lot of it is very specific to the programming language you’re using—please consult your favorite search engine to discover more resources on this topic. 😉

Web apps with Python’s streamlit framework

If you’re working with Python, the streamlit app framework is highly recommended to turn your analysis script into a fully functioning web app in minutes. Give it a try!

Databases

APIs

Async Communication: Events

Batch Jobs

Software Design Revisited

Delivery & Deployment

Continuous Integration

Containers in the Cloud

Testing & Production Environments

Scalability

Observability

Before you continue

At this point, you should have a clear understanding of:

  • Which additional steps you could take to make your research project production ready.