Qu'est-ce que la VotingApp ?
La VotingApp est une application principalement utilisée pour des démos et tutoriels.
Elle suit une architecture en microservices. Bien qu’elle ne respecte pas forcément toutes les bonnes pratiques architecturales, c’est un bon exemple d’application multi-tiers qui utilise différents langages et bases de données. Elle permet d’apprendre les concepts liés à Docker et à Kubernetes.
La VotingApp est composée de 7 microservices, comme illustré dans le diagramme suivant :

- vote-ui : Interface utilisateur en Vue.js qui permet aux utilisateurs de choisir entre 2 éléments
- vote : API backend développée avec Python / Flask
- redis : Base de données où les votes sont stockés en attente de traitement.
- worker : Service qui récupère les votes de Redis et stocke les résultats dans une base de données Postgres
- db : Base de données Postgres où les résultats des votes sont stockés
- result : Backend qui envoie les scores à une interface utilisateur via websocket
- result-ui : Interface utilisateur Angular qui affiche les résultats du vote
Les images de conteneurs pour chaque microservice sont disponibles sur DockerHub. Leurs tags suivent le pattern de SemVer (Semantic Versioning) (vX.Y.Z).
Vous pouvez voir l’application en live sur https://vote.votingapp.xyz.