StarTree Demo Apps are an assortment of demos that showcase the Apache Pinot ecosystem. The goal of these demo apps is to give you a quick taste of Real-Time Analytics without having to build everything from scratch.
In this blog post, we go into more detail about demo apps and introduce you to our first one: All About That Dough, an online pizza delivery service.
A demo application is a self-contained and complete application that resembles a real-world real-time analytics use case.
It is a ready-to-run application that has schema, table, and index definitions baked-in, along with an assortment of event simulators to simulate realistic traffic.
Each application will include a UI component, be that a dashboard or custom-built front-end app, that makes it easier to understand what’s going on.
Each app will ship with a Docker Compose configuration so you can set things up on your machine. The diagram below shows the typical components of a demo application.
In our experience, it can be difficult to understand the purpose and function of new data infrastructure unless you can see how it fits into the existing technology ecosystem.
Demo apps take a practitioner-focused approach to answering this question. We take the perspective of somebody trying to solve a real-time analytics problem and show how to glue together different tools to solve it.
Demo apps aren’t a replacement for reading documentation or watching tutorial videos, but will allow you to quickly see the types of problems for which real-time analytics are suited—all in the context of code that actually runs and which you are free to modify and adapt.
All About That Dough (AATD) is a pizza delivery service specializing in pizzas with Indian toppings. They’ve been operating for almost two decades and have built up an infrastructure that allows them to cater to thousands of page views per minute on their websites and a peak of 50 orders per minute.
AATD deals with three types of data: products, users, and orders. When they started, they used a relational database to store all this data. A couple of years ago, to modernize their stack and accommodate increasing demand, they introduced a streaming platform for order processing.
That’s all working well, but they struggle to see what’s going on with their orders in real time, often only finding out about issues the next day. Because we’re such helpful people, we’ll build them a real-time dashboard to help solve this problem.
The code for this demo app is available on GitHub at github.com/startreedata/pizza-shop-demo (https://github.com/startreedata/pizza-shop-demo).
You can run the demo with the following command:
docker-compose \ -f docker-compose-base.yml \ -f docker-compose-pinot.yml \ -f docker-compose-dashboard-enriched-quarkus.yml \ up
Or if you’re using a Mac M1, do this instead:
docker-compose \ -f docker-compose-base.yml \ -f docker-compose-pinot-m1.yml \ -f docker-compose-dashboard-enriched-quarkus.yml \ up
Once you’ve done that, navigate to http://localhost:8502 to see a dashboard similar to the one in the screenshot below:
This demo app uses the following technologies:
Apache Pinot - a column-oriented OLAP datastore designed to answer real-time queries with low latency.
Apache Kafka - the streaming platform that sits at the middle of the app. All the data flows through here.
Quarkus - a Java framework by Red Hat. We use it to build a Kafka Streams application to join orders and products into an enriched order items stream.
Streamlit - a Python framework that makes it easy to build and share data apps.
For a more detailed walkthrough of this demo app, see the demo app page.
If you have any questions, feel free to join us on Slack where we'll be happy to help you out.