Ever felt bored using the same application over and over again for your demos, showcases and POCs (proof of concepts) ? Want to tinker with something else than the usual/typical Wordpress, Apache or Nginx demos ?


As a cloud architect (@VMware, Google, etc..), I often get to build and run demos and mine have focused on infrastructure and application modernization in the last few years (it’s both a personal interest and my primary “assignment” @VMware), hence a constant search for relevant applications that can "do the job”. And it’s only better if that app is “sexy" and unusual. I’ve done lots of demos in the last year using the same app and came to a point where I got bored (and so were probably my customers and colleagues 😉) and have decided to search and investigate a new one.

This article lists the “outcome” of my investigation, ie half-dozen apps I came across in the last couple of weeks that I’ve deemed interesting for someone to consider for their upcoming lab work. While very different in nature, all these apps have the following in common:

  • Source code is built, App is packaged and ready to use
    Unless your objective is to get a SW development certification or degree (which is a great but different from the aim of searching for an app for a demo...), I would always challenge someone that decides to create their code from scratch. There must be something somewhere you can build from. SEARCH ! Git clone is your friend here !!!
  • App is functionally “complete” and easy to use/demonstrate
    Apps listed in this article are not simple brainless front-ends or just backing database services. They have all the functional modules required to roll out a full user scenario (albeit a very simple one). Plus, the workflows to used to perform the demo are easy and can often be "extrapolated" from. If it’s too convoluted, you loose your audience.
  • Apps are best suited for Hybrid and Multi-Cloud scenarios
    I’ve searched for apps that can be deployed in VMs, as Kubernetes pods or even both (VMs and Pods) at the same time, as well as across clouds (public and private).

Without further adu and in no specific order of priority or preference... :

1) Online Boutique (formerly HipsterShop)

https://github.com/GoogleCloudPlatform/microservices-demo

One of the most famous Kubernetes apps in the “community” which features a fully fledged e-commerce website. It’s a distributed polyglot app that stems from GCP, great to use when you want to illustrate and explain micro-services related concepts (decoupling, services interaction, caching, stateless vs stateful), etc… Super easy and straight forward to deploy. I’ve tried it on different clouds and Kubernetes distributions, generally works w/o any glitch.
Packaged as a Kubernetes deployment only (no VMs, server less or other forms of computing). Source code (multiple languages) is accessible on Github.
Note: I’ve seen occasional erratic behaviours when deploying on some Kubernetes platforms, throwing errors that were quite difficult to troubleshoot so as always, test !

2) Bookshelf

https://github.com/GoogleCloudPlatformTraining/cp100-bookshelf

It’s a Python Flask/Django app which stems from GCP and features a book reviewing website. Initially built to teach people GCP and the different computing options available there. It’s been packaged by GCP to deployed on VMs (IaaS/Compute Engine Instances), Kubernetes (CaaS/GKE) and AppEngine (PaaS).
The code for Kubernetes deployment can be very easily ported onto other Kubernetes Platforms. Thank you Kubernetes !
The code for VMs (the deployment startup-script.sh code, not the python source code) needs a bit of “massaging”.
The code for PaaS (AppEngine), by definition is…not portable. PaaS laws !

Simple and neat UI. You can add book reviews, it can be used for hybrid scenarios with the app deployed in VMs first, replatformed to containers images next, deployed on a single cloud or across clouds. Python source code is accessible on Github.
Note: in addition to the Bookshelf code itself, you need to set up a NoSQL database and an Object storage backing services for the code above to work.

3) ACME Fitness

https://github.com/vmwarecloudadvocacy/acme_fitness_demo

Stems from VMware (created by those guys: https://www.cloudjourney.io/about/ Check out their great work at www.cloudjourney.io, very interesting concepts on observability, continuous verification, etc…).
ACME Fitness is quite similar to Online Boutique, albeit a bit simpler (fewer micro-services). Comes with load generator module based on Locust/Python. ACME fitness has been packaged for AWS fartage and Doker-compose in addition to Kubernetes. To my knowledge though, source code is not accessible so you use it as is.
All in all, it’s a very good alternative to Online Boutique when customers have seen the later too often 🙂

4) Stan’s Robot-Shop

https://github.com/instana/robot-shop

Nice Kubernetes app, created by the folks at Instana, which wink’s at the world of tech/robots/etc… I like the nerd/geek reference (whether intentional or not). I use it mainly for Kubernetes deployments (the other platforms for which it’s been packaged are kind of “outdated” now…). To my knowledge though, source code is not accessible so, again, you use it as is.

5) Opencart

https://github.com/opencart/opencart

What ? Yet another (php) e-commerce website, I know…. However, this one, compared to OnlineBoutique and ACME Fitness, is available for both VMs and Containers deployments and the code is open source so one can possibly alter/modify bits of the app. These two characteristics make the app worth being looked at. The folks @Bitnami (now a VMware company) have done quite a lot of nice work on Opencart. Most notably, they have modelled Opencart as a Helm chart for a deployment on Kubernetes, they have variabilized many parameters and hence made it flexible, etc…:
https://github.com/bitnami/bitnami-docker-opencart

For the more traditional monolithic deployment on Linux VMs, please check my repo which has two .yaml IAC (infra as code blueprints) examples here: https://github.com/hassanhamade/opencart
These two files are meant to be used with VMware’s flagship automation tool (Cloud Assembly) but you can extract the yaml cloud-init configuration from there and figure out you would do that with an IAC tool of your choice or…decide to use Cloud Assembly 🙂

6) Tito - TIme and Traffic Optimizer

https://github.com/vmeoc/Tito

Tito is developed by my esteemed partner and colleague Vincent Meoc (@vmeoc) from VMware. It's is a php app that presents an Apache front-end which connects to the Googlemaps API in the backend, all of which forms a nice and easy to understand UI to demo real-time traffic analysis and driving time evaluation between point A and point B.
Of the main advantages of Tito is that, like opencart, it’s been packaged for both VMs and containers (Kubernetes) deployment. All the yaml deployment files can be accessed at the GitHub provided above.

Honorable mentions - a few other more known, less confidential applications I expect readers to know about that I will still list down here because they can be great assets too:

Bookinfo
https://istio.io/latest/docs/examples/bookinfo/
The "reference app" to demo Istio servie mesh. I like it the fact that it features an authentication module - can be very useful for so many      scenarios. The default deployment is made of Pods only but the backing sql micro-service can be moved to a VM though, making a good “hybrid” demo app.

GuestBook
https://github.com/kubernetes/examples/tree/master/guestbook/
This is like a “Hello-World” Kubernetes app. Made of two pods - a php app w/ Redis as a back-end. Guestbook’s sourcode is accessible and can be easily modified.

Enjoy the testing !