Voting App
Last updated
Last updated
The voting app is based on that architecture :
A Python web app which lets you vote between two options
A Redis queue which collects new votes
A Java worker which consumes votes and stores them in a PostgreSQL database
A PostgreSQL database backed by a Docker volume
A Node.js web app which shows the results of the voting in real time
The architecture can be schematized like this :
Be aware that the voting application only accepts one vote per client. It does not register votes if a vote has already been submitted from a client.
The images build in this project are publicly accessible on Docker Hub.
The purpose of this bootcamp is to explain how to deploy this kind of application in a Kubernetes cluster. The idea is to respect those principles to be able to deploy the Voting App on Minikube, an on premise cluster or a managed cluster like AKS, EKS or GKE easily :
Portability : The application has to be deployable on any Docker orchestration platform
Auto / Scalability : Each part of the application has to be scalable to ensure the next principle
High Availability : The application has to be highly available even across updates
Persitency : The data collected during the updates has to be persisted to not lose data
Security : The application has to be deployed in a secure environment
Each part of this architecture is an answer to some principles mentioned previously.
The schema below resume the architecture principles :
Each part of the application has his own Docker image :
Service | Pods Name | Image |
Database | db | postgres:10.4 |
Queue | redis | redis |
Vote | vote | wikitops/examplevotingapp-vote:1.1 |
Result | result | wikitops/examplevotingapp-result:1.1 |
Worker | worker | wikitops/examplevotingapp-worker:1.1 |
Those documentations can help you to go further in this topic :
The GitHub repository of the project used in this bootcamp
The official GitHub repository of the Docker Voting App